(require (quote TeX-mode)) (defvar tex-semi-done nil) (defconst tex-zone-prefix "") (defconst tex-word-prefix "") (defconst tex-word-forward-prefix (concat tex-word-prefix "4")) (defun tex-mkgrp-semi nil (byte-code "ƒÁ‚H ÇÁ …C @‰ˆ GÈUƒ*ÉÊË ÌB\"\"‚5Í ˆÎÏ \"ˆÐÑ!ˆ T‰ˆ A‰ˆ‚ˆÆ‰+‡" [tex-semi-done nil semi tex-delimiters-semi n args t 1 4 apply tex-make-semi append (t) ding message "WARNING: Incorrect format found in entry #%d of tex-delimiters-semi" sit-for 3] 8)) (defun tex-make-semi (l-sym r-sym name letter &optional n &optional quiet) "\ Register a new set of semi-automatic delimiter pairs whose open delimiter is L-SYM and right delimiter is R-SYM under the name NAME. The functions tex-zone-NAME, tex-word-NAME, and tex-word-forward-NAME will be generated and be respectively bound to C-c ESC-LETTER, C-c LETTER, and C-c-4 LETTER." (interactive "sOpen delimiter: sClose delimiter: sName: sLetter (to be incorporated in key bindings): ") (byte-code "ɈÊËÌ $Ê ÍÌ $Ê ÎÌ $Ê ÏÌ $…+ …+ …+ …_ÐÑ P P#ˆÒÓ P P#ˆÔÕ P P#ˆƒZÉ‚_Ö× #,‡" [l-sym n r-sym name letter tex-zone-prefix quiet tex-word-prefix tex-word-forward-prefix nil tex-check-empty "open delimiter" "tex-delimiters-semi" "close delimiter" "name" "letter" tex-mkzone "tex-zone-" tex-mkword "tex-word-" tex-mkword-forward "tex-word-forward-" message "%s...%s registered as a semi-automatic matching pair."] 11)) (defun tex-mkzone (name key quiet) (byte-code "È !Å †,É!?†ÊË ÌQ!…,Í !‰?†,Ê ÎÏ !ÐR!…DÑÒÓÔÅÕÖE%ר ÀFE!*‡" [symbol name func quiet key nil l-sym r-sym intern fboundp y-or-n-p "Function " " already exists, overwrite? " key-binding " already bound to " symbol-name ", overwrite? " eval progn list defun (interactive) tex-zone define-key tex-mode-map] 16)) (defun tex-mkword (name key quiet) (byte-code "Ç !È †,É!?†ÊË ÌQ!…,Í !‰?†,Ê ÎÏ !ÐR!…DÑÒÓÔÕÖ× ØF%ÙÚ ÀFE!*‡" [symbol name func quiet key l-sym r-sym intern nil fboundp y-or-n-p "Function " " already exists, overwrite? " key-binding " already bound to " symbol-name ", overwrite? " eval progn list defun (n) (interactive "P") tex-word (if n (- n) -1) define-key tex-mode-map] 17)) (defun tex-mkword-forward (name key quiet) (byte-code "Ç !È †,É!?†ÊË ÌQ!…,Í !‰?†,Ê ÎÏ !ÐR!…DÑÒÓÔÕÖ× ØF%ÙÚ ÀFE!*‡" [symbol name func quiet key l-sym r-sym intern nil fboundp y-or-n-p "Function " " already exists, overwrite? " key-binding " already bound to " symbol-name ", overwrite? " eval progn list defun (n) (interactive "P") tex-word n define-key tex-mode-map] 17)) (defvar tex-auto-done nil) (defconst tex-toggle-prefix "") (defun tex-mkgrp-auto nil (byte-code "ƒÁ‚H ÇÁ …C @‰ˆ GÈUƒ*ÉÊË ÌB\"\"‚5Í ˆÎÏ \"ˆÐÑ!ˆ T‰ˆ A‰ˆ‚ˆÆ‰+‡" [tex-auto-done nil auto tex-delimiters-auto n args t 1 2 apply tex-make-auto append (t) ding message "WARNING: Incorrect format found in entry #%d of tex-delimiters-auto" sit-for 3] 8)) (defun tex-make-auto (sym name &optional n &optional quiet) "\ Register a new automatic matching delimiter pair whose open and close delimiters are identical (SYM). The functions tex-NAME and tex-toggle-NAME will be generated and be bound to the symbol itself and C-c C-t SYM respectively." (interactive "sDelimiter: sName: ") (byte-code "ˈÍÎÏ $Í ÐÏ $Ñ PÒ !Ë… …ÍÓÔO‰ˆ†JÕ!‰Ö=†J =?…JרÙÚÛ !Ü%!…ÍÒÝ ÞQ!ÒÑ ßQ!Òà P! áâãäÇDåÊEäÈDåËEâæ ËçâèéDé DéDêëRì!&%íîÄFâæ ïðâñéDéDé DÆ&%íî PÉF& !ˆƒÇË‚Ìòó#+-‡" [sym n name fn func sym-func quiet match-on lst toggle t nil tex-toggle-prefix tex-check-empty "delimiter" "tex-delimiter-auto" "name" "tex-" intern 0 1 key-binding self-insert-command y-or-n-p concat "Symbol `" "' already bound to function " symbol-name ", overwrite? " "tex-match-" "-on" "-list" "tex-toggle-" eval list progn make-local-variable setq defun (interactive) tex-delimiter quote "^" "\\|[^\\]" string-to-char define-key tex-mode-map (&optional quiet) (interactive) tex-toggle-delimiter message "%s...%s registered as an automatic matching pair."] 34)) (defvar tex-latex-done nil) (defconst tex-latex-prefix " ") (defun tex-mkgrp-env nil "\ Register every element of tex-latex-envs by calling tex-make-env quietly." (byte-code "ƒÁ‚H ÇÁ …C @‰ˆ GÈUƒ*ÉÊË ÌB\"\"‚5Í ˆÎÏ \"ˆÐÈ!ˆ T‰ˆ A‰ˆ‚ˆÆ‰+‡" [tex-latex-done nil envs tex-latex-envs n args t 1 3 apply tex-make-env append (t) ding message "WARNING: Incorrect format found in entry #%d of tex-latex-envs" sit-for] 8)) (defun tex-make-env (env letter &optional argp &optional n &optional quiet) "\ Register a new LaTeX environment delimiter pair under the name ENV. A new function tex-latex-ENV will be generated and be bound to C-c C-l LETTER. ARGP should be t (TRUE) if optional LaTeX environment argument is required, nil otherwise. N the current count of the (ENV LETTER ARGP) tuple in tex-latex-envs. No message is given if QUIET is true." (interactive "sName of LaTeX environment: sLetter (to be incorporated in key binding): ") (byte-code "ɈËÌÍ $Ë ÎÍ $ÏPÐ ! PÉ…% …�ƒ1É‚7ÑÒ!‰ ˆ†aÓ !?†JÑÔ ÕQ!…aÖ !‰?†aÑ ×Ø!ÙR!ƒ‹ÚÛÜÝ ÞßàÁ F%áâ ÄFE!ˆƒƒÉ‚ˆãä#‚�ãå #.‡" [env n letter fn funsym key tex-latex-prefix func quiet nil argp tex-check-empty "environment name" "tex-latex-envs" "letter" "tex-latex-" intern y-or-n-p "Any arguments? " fboundp "Function " " already exists, overwrite? " key-binding " already bound to " symbol-name ", overwrite? " eval progn list defun (&optional n) (interactive "P") tex-latex-putenv define-key tex-mode-map message "\\begin{%s}...\\end{%s} registered as a delimiter pair..." "%s not bound to %s"] 20)) (defun tex-check-empty (string name &optional lst &optional n) (byte-code "GÅVƒ ‚%Æ ˆ ƒÇÈ $‚ÇÉ \"ˆÊË!ˆÄ‡" [string n name lst nil 0 ding message "WARNING: Null %s found in entry #%d of %s...ignored" "WARNING: %s shouldn't be null..." sit-for 3] 6))