Hello Tassilo et alii, Just to take things one by one, I amended the small optimization contribution in the first place after your comment that assoc-string is not XEmacs-compatible
[...] > > Sorry for that, but I could not retain myself for doing other > > changes --- beautifying and optimizing a few things --- attached to > > this email as <auctex-optimizations.diff>. > > > > auctex-optimizations.diff patch isn't related with the latex2e style > > hook problem, so I did it as a first change as I naively think that > > it should not be contentious, and then > > auctex-texinfo-style-hooks.diff is a second patch over that first > > one. > > The patch is backwards. ;-) > > Oh, and at least `assoc-string' doesn't seem to be available in > XEmacs, neither in the stable nor the beta release. > > Bye, > Tassilo I used a defalias to fallback to assoc in the case of XEmacs. Hopefully defalias exists in XEmacs ... Use of a defalias means no overhead in the byte-compiled package --- I think, but not being an EMACS lisp expert this is just my speculation. With this, do you think that the contribution is useful ? Vincent.
diff --git a/ChangeLog b/ChangeLog index 4da30d5..7140ec2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,26 @@ +2014-08-15 Vincent Belaïche <[email protected]> + + * tex-info.el (TeX-texinfo-mode): Code optimization: use + '(set (make-local-variable (quote foo)) some-value)' instead of + '(make-local-variable (quote foo)) (setq foo some-value)' wherever + possible. Add in style Texinfo standard macros '@acronym' and '@tie'. + + * tex.el (TeX-assoc-string) new defalias to work-around missing + assoc-string in XEmacs. (TeX-unload-style): Code optimization: use + 'assoc-string' instead of 'assoc' to search style in + 'TeX-style-hook-list', and use delq on returned value of + assoc-string for removing the style --- on the one hand delq will + go through the whole list rather than stop after the first match + like in original code, but on the other hand comparison are faster + because eq instead of equal is used and we are working on assoc + cell rather than on key, so less indirection, furthermore delq is + C code. Anyway that make the code much smaller and easier to + understand. + (TeX-file-extensions): Add txi amongst extension of + texinfo files, for consistency with info node '(texinfo) Minimum' + (TeX-run-style-hooks): Code optimization: use 'assoc-string' + instead of 'assoc' to search style in 'TeX-style-hook-list'. + 2014-01-06 Vincent Belaïche <[email protected]> * tex-info.el (Texinfo-reftex-hook): Replace use of diff --git a/tex-info.el b/tex-info.el index a42884d..849e94f 100644 --- a/tex-info.el +++ b/tex-info.el @@ -544,38 +544,28 @@ value of `Texinfo-mode-hook'." (setq major-mode 'texinfo-mode) (use-local-map Texinfo-mode-map) (set-syntax-table texinfo-mode-syntax-table) - (make-local-variable 'page-delimiter) - (setq page-delimiter - (concat - "^@node [ \t]*[Tt]op\\|^@\\(" - texinfo-chapter-level-regexp - "\\)")) - (make-local-variable 'require-final-newline) - (setq require-final-newline t) - (make-local-variable 'indent-tabs-mode) - (setq indent-tabs-mode nil) - (make-local-variable 'paragraph-separate) - (setq paragraph-separate - (concat "\b\\|^@[a-zA-Z]*[ \n]\\|" paragraph-separate)) - (make-local-variable 'paragraph-start) - (setq paragraph-start - (concat "\b\\|^@[a-zA-Z]*[ \n]\\|" paragraph-start)) - (make-local-variable 'fill-column) - (setq fill-column 72) - (make-local-variable 'comment-start) - (setq comment-start "@c ") - (make-local-variable 'comment-start-skip) - (setq comment-start-skip "@c +\\|@comment +") + + (set (make-local-variable 'page-delimiter) + (concat + "^@node [ \t]*[Tt]op\\|^@\\(" + texinfo-chapter-level-regexp + "\\)")) + (set (make-local-variable 'require-final-newline) t) + (set (make-local-variable 'indent-tabs-mode) nil) + (set (make-local-variable 'paragraph-separate) + (concat "\b\\|^@[a-zA-Z]*[ \n]\\|" paragraph-separate)) + (set (make-local-variable 'paragraph-start) + (concat "\b\\|^@[a-zA-Z]*[ \n]\\|" paragraph-start)) + (set (make-local-variable 'fill-column) 72) + (set (make-local-variable 'comment-start) "@c ") + (set (make-local-variable 'comment-start-skip) "@c +\\|@comment +") (set (make-local-variable 'comment-use-syntax) nil) - (make-local-variable 'words-include-escapes) - (setq words-include-escapes t) - (if (not (boundp 'texinfo-imenu-generic-expression)) + (set (make-local-variable 'words-include-escapes) t) + (if (boundp 'texinfo-imenu-generic-expression) ;; This was introduced in 19.30. - () - (make-local-variable 'imenu-generic-expression) - (setq imenu-generic-expression texinfo-imenu-generic-expression)) - (make-local-variable 'font-lock-defaults) - (setq font-lock-defaults + (set (make-local-variable 'imenu-generic-expression) texinfo-imenu-generic-expression)) + + (set (make-local-variable 'font-lock-defaults) ;; COMPATIBILITY for Emacs 20 (if (boundp 'texinfo-font-lock-syntactic-keywords) '(texinfo-font-lock-keywords @@ -586,48 +576,41 @@ value of `Texinfo-mode-hook'." (if (not (boundp 'texinfo-section-list)) ;; This was included in 19.31. () - (make-local-variable 'outline-regexp) - (setq outline-regexp - (concat "@\\(" - (mapconcat 'car texinfo-section-list "\\>\\|") - "\\>\\)")) - (make-local-variable 'outline-level) - (setq outline-level 'texinfo-outline-level)) + (set (make-local-variable 'outline-regexp) + (concat "@\\(" + (mapconcat 'car texinfo-section-list "\\>\\|") + "\\>\\)")) + (set (make-local-variable 'outline-level) 'texinfo-outline-level)) ;; Mostly AUCTeX stuff (easy-menu-add Texinfo-mode-menu Texinfo-mode-map) (easy-menu-add Texinfo-command-menu Texinfo-mode-map) - (make-local-variable 'TeX-command-current) - (setq TeX-command-current 'TeX-command-master) + (set (make-local-variable 'TeX-command-current) 'TeX-command-master) (setq TeX-default-extension "texi") - (make-local-variable 'TeX-esc) - (setq TeX-esc "@") - (make-local-variable 'TeX-auto-regexp-list) - (setq TeX-auto-regexp-list 'TeX-auto-empty-regexp-list) - (make-local-variable 'TeX-auto-update) - (setq TeX-auto-update t) + (set (make-local-variable 'TeX-esc) "@") + + (set (make-local-variable 'TeX-auto-regexp-list) 'TeX-auto-empty-regexp-list) + (set (make-local-variable 'TeX-auto-update) t) (setq TeX-command-default "TeX") (setq TeX-header-end "%*end") (setq TeX-trailer-start (regexp-quote (concat TeX-esc "bye"))) - - (make-local-variable 'TeX-complete-list) - (setq TeX-complete-list + + (set (make-local-variable 'TeX-complete-list) (list (list "@\\([a-zA-Z]*\\)" 1 'TeX-symbol-list-filtered nil) (list "" TeX-complete-word))) - (make-local-variable 'TeX-font-list) - (setq TeX-font-list Texinfo-font-list) - (make-local-variable 'TeX-font-replace-function) - (setq TeX-font-replace-function 'TeX-font-replace-macro) + (set (make-local-variable 'TeX-font-list) Texinfo-font-list) + (set (make-local-variable 'TeX-font-replace-function) 'TeX-font-replace-macro) (add-hook 'find-file-hooks (lambda () (unless (file-exists-p (buffer-file-name)) (TeX-master-file nil nil t))) nil t) (TeX-add-symbols + '("acronym" "Acronym") '("appendix" (TeX-arg-literal " ") (TeX-arg-free "Title")) '("appendixsec" (TeX-arg-literal " ") (TeX-arg-free "Title")) '("appendixsection" (TeX-arg-literal " ") (TeX-arg-free "Title")) @@ -735,6 +718,7 @@ value of `Texinfo-mode-hook'." '("thischaptername") '("thisfile") '("thispage") + '("tie") '("tindex" (TeX-arg-literal " ") (TeX-arg-free "Entry")) '("title" (TeX-arg-literal " ") (TeX-arg-free "Title")) '("titlefont" "Text") diff --git a/tex.el b/tex.el index 07c452e..281dd06 100644 --- a/tex.el +++ b/tex.el @@ -580,6 +580,13 @@ but does nothing in Emacs." Also does other stuff." (TeX-maybe-remove-help menu))) +;;;###autoload +(defalias 'TeX-assoc-string + (symbol-function (if (featurep 'xemacs) 'assoc 'assoc-string)) + (concat "Compatibility alias that points to + function `assoc' with XEMACS and to function `assoc-string' + with GNU EMACS. See function `" + (if (featurep 'xemacs) "assoc" "assoc-string") "'." )) ;;; Documentation for Info-goto-emacs-command-node and similar @@ -2389,14 +2396,9 @@ active.") (defun TeX-unload-style (style) "Forget that we once loaded STYLE." - (cond ((null (assoc style TeX-style-hook-list))) - ((equal (car (car TeX-style-hook-list)) style) - (setq TeX-style-hook-list (cdr TeX-style-hook-list))) - (t - (let ((entry TeX-style-hook-list)) - (while (not (equal (car (car (cdr entry))) style)) - (setq entry (cdr entry))) - (setcdr entry (cdr (cdr entry))))))) + (let ((style-data (TeX-assoc-string style TeX-style-hook-list))) + (if style-data + (setq TeX-style-hook-list (delq style-data TeX-style-hook-list))))) (defcustom TeX-virgin-style (if (and TeX-auto-global (file-directory-p TeX-auto-global)) @@ -2430,7 +2432,7 @@ active.") (match-beginning 2) (match-end 2)))) (condition-case err (mapcar 'funcall - (cdr-safe (assoc style TeX-style-hook-list))) + (cdr-safe (TeX-assoc-string style TeX-style-hook-list))) ;; This happens in case some style added a new parser, and ;; now the style isn't used anymore (user deleted ;; \usepackage{style}). Then we're left over with, e.g., @@ -3716,7 +3718,7 @@ Check for potential LaTeX environments." "File extensions recognized by AUCTeX." :group 'TeX-file) -(defcustom TeX-file-extensions '("tex" "sty" "cls" "ltx" "texi" "texinfo" "dtx") +(defcustom TeX-file-extensions '("tex" "sty" "cls" "ltx" "texi" "txi" "texinfo" "dtx") "*File extensions used by manually generated TeX files." :group 'TeX-file-extension :type '(repeat (string :format "%v")))
_______________________________________________ auctex mailing list [email protected] https://lists.gnu.org/mailman/listinfo/auctex
