emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Better language detection for tutorial (was: set-locale-environement: st


From: Sascha Wilde
Subject: Better language detection for tutorial (was: set-locale-environement: strange default detection)
Date: Sun, 22 Jul 2007 16:59:14 +0200
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.1.50 (gnu/linux)

David Kastrup <address@hidden> wrote:
> Sascha Wilde <address@hidden> writes:
>> So, what about the idea I sketched in my patch?
>
> The proper fix would be to have something more fine-grained than
> language-environment inside of Emacs.
>
> Until such a time, your fix appeared like the right thing to do at
> that junction to me.  Your patch (I am going my memory here) has the
> disadvantage that it might look up the empty string as a language
> explicitly, expecting it to turn up nil.  That's sort of ugly.

Here a revised version of the patch:

diff -c /usr/local/hg/emacs-hg/lisp/tutorial.el 
/home/wilde/src/emacs-hg-work/lisp/tutorial.el
*** /usr/local/hg/emacs-hg/lisp/tutorial.el     2007-06-13 08:22:59.377470279 
+0200
--- /home/wilde/src/emacs-hg-work/lisp/tutorial.el      2007-07-22 
16:45:04.220919438 +0200
***************
*** 621,626 ****
--- 621,641 ----
                                              face tutorial-warning-face
                                              read-only t)))))))))))
  
+ (defun tutorial-get-language ()
+   "Use LC_ALL, LC_MESSAGES, LANG in turn to determine language to use.
+ This is more reliable then current-language-environment, which is not
+ intended to chose the language used for messages and documentation."
+   (let (locale (vars '("LC_ALL" "LC_MESSAGES" "LANG")))
+     (while (and vars
+               (= 0 (length locale))) ; nil or empty string
+       (setq locale (getenv (pop vars))))
+     (if (< 0 (length locale))
+       (let ((language (locale-name-match locale
+                                          locale-language-names)))
+         (if (consp language)
+             (car language)
+           language)))))
+ 
  (defun tutorial--saved-dir ()
    "Directory to which tutorials are saved."
    (expand-file-name "tutorial" user-emacs-directory))
***************
*** 766,774 ****
                         (add-hook 'minibuffer-setup-hook
                                   'minibuffer-completion-help)
                         (read-language-name 'tutorial "Language: " "English"))
!                    (if (get-language-info current-language-environment 
'tutorial)
!                        current-language-environment
!                      "English")))
             (filename (get-language-info lang 'tutorial))
             ;; Choose a buffer name including the language so that
             ;; several languages can be tested simultaneously:
--- 781,790 ----
                         (add-hook 'minibuffer-setup-hook
                                   'minibuffer-completion-help)
                         (read-language-name 'tutorial "Language: " "English"))
!                    (or (tutorial-get-language)
!                      (if (get-language-info current-language-environment 
'tutorial)
!                          current-language-environment
!                        "English"))))
             (filename (get-language-info lang 'tutorial))
             ;; Choose a buffer name including the language so that
             ;; several languages can be tested simultaneously:

Diff finished.  Sun Jul 22 16:48:36 2007
-- 
Sascha Wilde : The most exciting phrase to hear in science, the one
             : that heralds new discoveries, is not "Eureka!" (I found
             : it!) but "That's funny ..." -- Isaac Asimov

reply via email to

[Prev in Thread] Current Thread [Next in Thread]