[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] 162/299: Fix a bug where customizing LaTeX-math-list had no effec
From: |
Stefan Monnier |
Subject: |
[elpa] 162/299: Fix a bug where customizing LaTeX-math-list had no effect until restarting emacs. |
Date: |
Sun, 02 Nov 2014 03:11:09 +0000 |
monnier pushed a commit to branch externals/auctex
in repository elpa.
commit c83a72bc383656208ee8bd0830cfe86dda02ce46
Author: Tassilo Horn <address@hidden>
Date: Wed Jul 31 09:18:59 2013 +0200
Fix a bug where customizing LaTeX-math-list had no effect until restarting
emacs.
* latex.el (LaTeX-math-initialize): Refactor top-level code into
function.
(LaTeX-math-list): Call `LaTeX-math-initialize' when setting the
value in order to update the key bindings.
Also shuffle around several definitions in order to get a
declaration-before-use order.
---
ChangeLog | 9 ++
latex.el | 258 +++++++++++++++++++++++++++++++------------------------------
2 files changed, 140 insertions(+), 127 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index fbf2244..887714c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2013-07-31 Tassilo Horn <address@hidden>
+
+ * latex.el (LaTeX-math-initialize): Refactor top-level code into
+ function.
+ (LaTeX-math-list): Call `LaTeX-math-initialize' when setting the
+ value in order to update the key bindings.
+ Also shuffle around several definitions in order to get a
+ declaration-before-use order.
+
2013-07-29 Mos� Giordano <address@hidden>
* doc/changes.texi: Add other changes.
diff --git a/latex.el b/latex.el
index ae619a0..460027f 100644
--- a/latex.el
+++ b/latex.el
@@ -4062,44 +4062,108 @@ of verbatim constructs are not considered."
"Mathematics in AUCTeX."
:group 'LaTeX-macro)
-(defcustom LaTeX-math-list nil
- "Alist of your personal LaTeX math symbols.
-
-Each entry should be a list with up to four elements, KEY, VALUE,
-MENU and CHARACTER.
+(defvar LaTeX-math-keymap (make-sparse-keymap)
+ "Keymap used for `LaTeX-math-mode' commands.")
-KEY is the key (after `LaTeX-math-abbrev-prefix') to be redefined
-in math minor mode. If KEY is nil, the symbol has no associated
-keystroke \(it is available in the menu, though\).
+(defun LaTeX-math-abbrev-prefix ()
+ "Make a key definition from the variable `LaTeX-math-abbrev-prefix'."
+ (if (stringp LaTeX-math-abbrev-prefix)
+ (read-kbd-macro LaTeX-math-abbrev-prefix)
+ LaTeX-math-abbrev-prefix))
-VALUE can be a string with the name of the macro to be inserted,
-or a function to be called. The macro must be given without the
-leading backslash.
+(defvar LaTeX-math-menu
+ '("Math"
+ ("Greek Uppercase") ("Greek Lowercase") ("Binary Op") ("Relational")
+ ("Arrows") ("Punctuation") ("Misc Symbol") ("Var Symbol") ("Log-like")
+ ("Delimiters") ("Constructs") ("Accents") ("AMS"))
+ "Menu containing LaTeX math commands.
+The menu entries will be generated dynamically, but you can specify
+the sequence by initializing this variable.")
-The third element MENU is the name of the submenu where the
-command should be added. MENU can be either a string
-\(e.g. \"greek\"\), a list (e.g. \(\"AMS\" \"Delimiters\"\)\) or
-nil. If MENU is nil, no menu item will be created.
+(defcustom LaTeX-math-menu-unicode
+ (or (string-match "\\<GTK\\>" (emacs-version))
+ (eq window-system 'w32))
+ "Whether the LaTeX menu should try using Unicode for effect."
+ :type 'boolean
+ :group 'LaTeX-math)
-The fourth element CHARACTER is a Unicode character position for
-menu display. When nil, no character is shown.
+(defcustom LaTeX-math-abbrev-prefix "`"
+ "Prefix key for use in `LaTeX-math-mode'.
+This has to be a string representing a key sequence in a format
+understood by the `kbd' macro. This corresponds to the syntax
+usually used in the Emacs and Elisp manuals.
-See also `LaTeX-math-menu'."
+Setting this variable directly does not take effect;
+use \\[customize]."
:group 'LaTeX-math
- :type '(repeat (group (choice :tag "Key"
- (const :tag "none" nil)
- (choice (character)
- (string :tag "Key sequence")))
- (choice :tag "Value"
- (string :tag "Macro")
- (function))
- (choice :tag "Menu"
- (string :tag "Top level menu" )
- (repeat :tag "Submenu"
- (string :tag "Menu")))
- (choice :tag "Unicode character"
- (const :tag "none" nil)
- (integer :tag "Number")))))
+ :initialize 'custom-initialize-default
+ :set '(lambda (symbol value)
+ (define-key LaTeX-math-mode-map (LaTeX-math-abbrev-prefix) t)
+ (set-default symbol value)
+ (define-key LaTeX-math-mode-map
+ (LaTeX-math-abbrev-prefix) LaTeX-math-keymap))
+ :type '(string :tag "Key sequence"))
+
+(defun LaTeX-math-initialize ()
+ (let ((math (reverse (append LaTeX-math-list LaTeX-math-default)))
+ (map LaTeX-math-keymap)
+ (unicode (and LaTeX-math-menu-unicode (fboundp 'decode-char))))
+ (while math
+ (let* ((entry (car math))
+ (key (nth 0 entry))
+ (prefix
+ (and unicode
+ (nth 3 entry)))
+ value menu name)
+ (setq math (cdr math))
+ (if (and prefix
+ (setq prefix (decode-char 'ucs (nth 3 entry))))
+ (setq prefix (concat (string prefix) " \\"))
+ (setq prefix "\\"))
+ (if (listp (cdr entry))
+ (setq value (nth 1 entry)
+ menu (nth 2 entry))
+ (setq value (cdr entry)
+ menu nil))
+ (if (stringp value)
+ (progn
+ (setq name (intern (concat "LaTeX-math-" value)))
+ (fset name (list 'lambda (list 'arg) (list 'interactive "*P")
+ (list 'LaTeX-math-insert value 'arg))))
+ (setq name value))
+ (if key
+ (progn
+ (setq key (cond ((numberp key) (char-to-string key))
+ ((stringp key) (read-kbd-macro key))
+ (t (vector key))))
+ (define-key map key name)))
+ (if menu
+ (let ((parent LaTeX-math-menu))
+ (if (listp menu)
+ (progn
+ (while (cdr menu)
+ (let ((sub (assoc (car menu) LaTeX-math-menu)))
+ (if sub
+ (setq parent sub)
+ (setcdr parent (cons (list (car menu)) (cdr parent))))
+ (setq menu (cdr menu))))
+ (setq menu (car menu))))
+ (let ((sub (assoc menu parent)))
+ (if sub
+ (if (stringp value)
+ (setcdr sub (cons (vector (concat prefix value)
+ name t)
+ (cdr sub)))
+ (error "Cannot have multiple special math menu items"))
+ (setcdr parent
+ (cons (if (stringp value)
+ (list menu (vector (concat prefix value)
+ name t))
+ (vector menu name t))
+ (cdr parent)))))))))
+ ;; Make the math prefix char available if it has not been used as a prefix.
+ (unless (lookup-key map (LaTeX-math-abbrev-prefix))
+ (define-key map (LaTeX-math-abbrev-prefix) 'self-insert-command))))
(defconst LaTeX-math-default
'((?a "alpha" "Greek Lowercase" 945) ;; #X03B1
@@ -4626,107 +4690,47 @@ See also `LaTeX-math-menu'."
Each entry should be a list with upto four elements, KEY, VALUE,
MENU and CHARACTER, see `LaTeX-math-list' for details.")
-(defcustom LaTeX-math-abbrev-prefix "`"
- "Prefix key for use in `LaTeX-math-mode'.
-This has to be a string representing a key sequence in a format
-understood by the `kbd' macro. This corresponds to the syntax
-usually used in the Emacs and Elisp manuals.
+(defcustom LaTeX-math-list nil
+ "Alist of your personal LaTeX math symbols.
-Setting this variable directly does not take effect;
-use \\[customize]."
- :group 'LaTeX-math
- :initialize 'custom-initialize-default
- :set '(lambda (symbol value)
- (define-key LaTeX-math-mode-map (LaTeX-math-abbrev-prefix) t)
- (set-default symbol value)
- (define-key LaTeX-math-mode-map
- (LaTeX-math-abbrev-prefix) LaTeX-math-keymap))
- :type '(string :tag "Key sequence"))
+Each entry should be a list with up to four elements, KEY, VALUE,
+MENU and CHARACTER.
-(defun LaTeX-math-abbrev-prefix ()
- "Make a key definition from the variable `LaTeX-math-abbrev-prefix'."
- (if (stringp LaTeX-math-abbrev-prefix)
- (read-kbd-macro LaTeX-math-abbrev-prefix)
- LaTeX-math-abbrev-prefix))
+KEY is the key (after `LaTeX-math-abbrev-prefix') to be redefined
+in math minor mode. If KEY is nil, the symbol has no associated
+keystroke \(it is available in the menu, though\).
-(defvar LaTeX-math-keymap (make-sparse-keymap)
- "Keymap used for `LaTeX-math-mode' commands.")
+VALUE can be a string with the name of the macro to be inserted,
+or a function to be called. The macro must be given without the
+leading backslash.
-(defvar LaTeX-math-menu
- '("Math"
- ("Greek Uppercase") ("Greek Lowercase") ("Binary Op") ("Relational")
- ("Arrows") ("Punctuation") ("Misc Symbol") ("Var Symbol") ("Log-like")
- ("Delimiters") ("Constructs") ("Accents") ("AMS"))
- "Menu containing LaTeX math commands.
-The menu entries will be generated dynamically, but you can specify
-the sequence by initializing this variable.")
+The third element MENU is the name of the submenu where the
+command should be added. MENU can be either a string
+\(e.g. \"greek\"\), a list (e.g. \(\"AMS\" \"Delimiters\"\)\) or
+nil. If MENU is nil, no menu item will be created.
-(defcustom LaTeX-math-menu-unicode
- (or (string-match "\\<GTK\\>" (emacs-version))
- (eq window-system 'w32))
- "Whether the LaTeX menu should try using Unicode for effect."
- :type 'boolean
- :group 'LaTeX-math)
+The fourth element CHARACTER is a Unicode character position for
+menu display. When nil, no character is shown.
-(let ((math (reverse (append LaTeX-math-list LaTeX-math-default)))
- (map LaTeX-math-keymap)
- (unicode (and LaTeX-math-menu-unicode (fboundp 'decode-char))))
- (while math
- (let* ((entry (car math))
- (key (nth 0 entry))
- (prefix
- (and unicode
- (nth 3 entry)))
- value menu name)
- (setq math (cdr math))
- (if (and prefix
- (setq prefix (decode-char 'ucs (nth 3 entry))))
- (setq prefix (concat (string prefix) " \\"))
- (setq prefix "\\"))
- (if (listp (cdr entry))
- (setq value (nth 1 entry)
- menu (nth 2 entry))
- (setq value (cdr entry)
- menu nil))
- (if (stringp value)
- (progn
- (setq name (intern (concat "LaTeX-math-" value)))
- (fset name (list 'lambda (list 'arg) (list 'interactive "*P")
- (list 'LaTeX-math-insert value 'arg))))
- (setq name value))
- (if key
- (progn
- (setq key (cond ((numberp key) (char-to-string key))
- ((stringp key) (read-kbd-macro key))
- (t (vector key))))
- (define-key map key name)))
- (if menu
- (let ((parent LaTeX-math-menu))
- (if (listp menu)
- (progn
- (while (cdr menu)
- (let ((sub (assoc (car menu) LaTeX-math-menu)))
- (if sub
- (setq parent sub)
- (setcdr parent (cons (list (car menu)) (cdr parent))))
- (setq menu (cdr menu))))
- (setq menu (car menu))))
- (let ((sub (assoc menu parent)))
- (if sub
- (if (stringp value)
- (setcdr sub (cons (vector (concat prefix value)
- name t)
- (cdr sub)))
- (error "Cannot have multiple special math menu items"))
- (setcdr parent
- (cons (if (stringp value)
- (list menu (vector (concat prefix value)
- name t))
- (vector menu name t))
- (cdr parent)))))))))
- ;; Make the math prefix char available if it has not been used as a prefix.
- (unless (lookup-key map (LaTeX-math-abbrev-prefix))
- (define-key map (LaTeX-math-abbrev-prefix) 'self-insert-command)))
+See also `LaTeX-math-menu'."
+ :group 'LaTeX-math
+ :set (lambda (symbol value)
+ (set-default symbol value)
+ (LaTeX-math-initialize))
+ :type '(repeat (group (choice :tag "Key"
+ (const :tag "none" nil)
+ (choice (character)
+ (string :tag "Key sequence")))
+ (choice :tag "Value"
+ (string :tag "Macro")
+ (function))
+ (choice :tag "Menu"
+ (string :tag "Top level menu" )
+ (repeat :tag "Submenu"
+ (string :tag "Menu")))
+ (choice :tag "Unicode character"
+ (const :tag "none" nil)
+ (integer :tag "Number")))))
(define-minor-mode LaTeX-math-mode
"A minor mode with easy access to TeX math macros.
- [elpa] 157/299: Add *.fls and *-blx.bib to suffixes to be cleaned., (continued)
- [elpa] 157/299: Add *.fls and *-blx.bib to suffixes to be cleaned., Stefan Monnier, 2014/11/01
- [elpa] 155/299: Convert release process to Git., Stefan Monnier, 2014/11/01
- [elpa] 158/299: Enable LaTeX-math-menu-unicode on w32 systems., Stefan Monnier, 2014/11/01
- [elpa] 160/299: Fix my mistake in previous commit., Stefan Monnier, 2014/11/01
- [elpa] 159/299: Fix BibTeX-auto-regexp-list., Stefan Monnier, 2014/11/01
- [elpa] 165/299: * tex.el (TeX-electric-math): Fix defcustom choices., Stefan Monnier, 2014/11/01
- [elpa] 161/299: Add other news to doc/changes.texi., Stefan Monnier, 2014/11/01
- [elpa] 164/299: * bib-cite.el (bib-cite-minor-mode): Call `make-local-hook' only on XEmacs., Stefan Monnier, 2014/11/01
- [elpa] 166/299: reformat paragraph, Stefan Monnier, 2014/11/01
- [elpa] 167/299: reformat paragraph, Stefan Monnier, 2014/11/01
- [elpa] 162/299: Fix a bug where customizing LaTeX-math-list had no effect until restarting emacs.,
Stefan Monnier <=
- [elpa] 168/299: reformat paragraph, Stefan Monnier, 2014/11/01
- [elpa] 170/299: * tex-buf.el (TeX-check-files): Handle buffers that haven't been saved yet., Stefan Monnier, 2014/11/01
- [elpa] 169/299: * preview.el (preview-lispdir): New defvar. * auto.el.in (preview-lispdir): Set it to @address@hidden, Stefan Monnier, 2014/11/01
- [elpa] 171/299: * tex-info.el (TeX-texinfo-mode): Set `TeX-sentinel-default-function' to `TeX-TeX-sentinel'., Stefan Monnier, 2014/11/01
- [elpa] 172/299: * tex-buf.el (TeX-next-error, TeX-active-buffer): Fix a problem with `TeX-next-error' in multi-file documents., Stefan Monnier, 2014/11/01
- [elpa] 163/299: Don't prompt for reference format when RefTeX is active., Stefan Monnier, 2014/11/01
- [elpa] 173/299: Fix unit name in siunitx style file., Stefan Monnier, 2014/11/01
- [elpa] 180/299: fix author in ChangeLog, Stefan Monnier, 2014/11/01
- [elpa] 175/299: Detect a couple of hyperref rerun messages., Stefan Monnier, 2014/11/01
- [elpa] 174/299: Enhance brace pairing feature., Stefan Monnier, 2014/11/01