Mercurial > hgrepos > hgweb.cgi > yatex
diff yatex19.el @ 64:36a48185b95a
Changes are listed in yatex.new.
Major one is supporing GNU Emacs20 and XEmacs.
author | yuuji |
---|---|
date | Tue, 16 Dec 1997 13:28:38 +0000 |
parents | b9f753846b6b |
children | 0eb6997bee16 |
line wrap: on
line diff
--- a/yatex19.el Sat Dec 13 12:41:43 1997 +0000 +++ b/yatex19.el Tue Dec 16 13:28:38 1997 +0000 @@ -1,7 +1,7 @@ ;;; -*- Emacs-Lisp -*- ;;; YaTeX facilities for Emacs 19 ;;; (c )1994-1997 by HIROSE Yuuji.[yuuji@ae.keio.ac.jp] -;;; Last modified Fri Feb 14 13:52:54 1997 on supra +;;; Last modified Sun Dec 14 21:51:14 1997 on firestorm ;;; $Id$ ;;; とりあえず hilit19 を使っている時に色が付くようにして @@ -9,146 +9,117 @@ ;;; いったい誰がメニューバー使ってLaTeXソース書くんだろうか? ;;; まあいいや練習練習。後ろの方にちょっとコメントあり。 ;;; 真中辺にあるけど、hilit19.el 対応の方は結構本気。 - -(require 'yatex) +;;; とかいってるうちに hilit19 って obsolete になってしまった… -(defun YaTeX-19-define-sub-menu (map vec &rest bindings) - "Define sub-menu-item in MAP at vector VEC as BINDINGS. -BINDINGS is a form with optional length: (symbol title binding). -When you defined menu-bar keymap such like: - (define-key foo-map [menu-bar foo] (make-sparse-keymap \"foo menu\")) -and you want to define sub menu for `foo menu' as followings. - foo -> menu1 (calling function `func1') - menu2 (doing interactive call `(func2 ...)' -Call this function like this: - (YaTeX-19-define-sub-menu foo-map [menu-bar foo] - '(m1 \"Function 1\" func1) - '(m2 \"Function 2\" (lambda () (interactive) (func2 ...)))) -where - `m1' and `m2' are the keymap symbol for sub-menu of `[menu-bar foo]. - `Funtion 1' and `Function 2' are the title strings for sub-menu. -" - (let ((i 0) (vec2 (make-vector (1+ (length vec)) nil))) - (while (< i (length vec)) - (aset vec2 i (aref vec i)) - (setq i (1+ i))) - (setq bindings (reverse bindings)) - (mapcar - (function - (lambda (bind) - (aset vec2 (1- (length vec2)) (car bind)) ;set menu-symbol - (define-key map vec2 - (cons (car (cdr bind)) - (car (cdr (cdr bind))))))) - bindings))) +;(require 'yatex) -;; Menu for Typeset relating processes ---------------------------------------- +(defvar YaTeX-mode-menu-map (make-sparse-keymap "YaTeX")) +(defvar YaTeX-mode-menu-map-process (make-sparse-keymap "Process")) (define-key YaTeX-mode-map [menu-bar yatex] - (cons "YaTeX" (make-sparse-keymap "YaTeX"))) -(define-key YaTeX-mode-map [menu-bar yatex process] - (cons "Process" (make-sparse-keymap "Process"))) -(YaTeX-19-define-sub-menu - YaTeX-mode-map [menu-bar yatex process] - '(buffer "LaTeX" (lambda () (interactive) (YaTeX-typeset-menu nil ?j))) - '(kill "Kill LaTeX" (lambda () (interactive) (YaTeX-typeset-menu nil ?k))) - '(bibtex "BibTeX" (lambda () (interactive) (YaTeX-typeset-menu nil ?b))) - '(makeindex "makeindex" (lambda () (interactive) (YaTeX-typeset-menu nil ?i))) - '(preview "Preview" (lambda () (interactive) (YaTeX-typeset-menu nil ?p))) - '(lpr "lpr" (lambda () (interactive) (YaTeX-typeset-menu nil ?l))) - '(lpq "lpq" (lambda () (interactive) (YaTeX-typeset-menu nil ?q))) -) + (cons "YaTeX" YaTeX-mode-menu-map)) +(YaTeX-define-menu + 'YaTeX-mode-menu-map-process + (nreverse + '((buffer "LaTeX" . (lambda () (interactive) (YaTeX-typeset-menu nil ?j))) + (kill "Kill LaTeX" . (lambda () (interactive) (YaTeX-typeset-menu nil ?k))) + (bibtex "BibTeX" . (lambda () (interactive) (YaTeX-typeset-menu nil ?b))) + (mindex "makeindex" . (lambda () (interactive) (YaTeX-typeset-menu nil ?i))) + (preview "Preview" . (lambda () (interactive) (YaTeX-typeset-menu nil ?p))) + (lpr "lpr" . (lambda () (interactive) (YaTeX-typeset-menu nil ?l))) + (lpq "lpq" . (lambda () (interactive) (YaTeX-typeset-menu nil ?q)))))) +(defvar YaTeX-mode-menu-map-modes (make-sparse-keymap "Modes")) +(YaTeX-define-menu + 'YaTeX-mode-menu-map-modes + (delq nil + (nreverse + (list + (if YaTeX-auto-math-mode nil + (cons 'math (cons "Toggle math-mode" + '(lambda () (interactive) + (YaTeX-switch-mode-menu nil ?t))))) + (cons 'mod (cons "Toggle Modify Mode" + '(lambda () (interactive) + (YaTeX-switch-mode-menu nil ?m)))))))) +(defvar YaTeX-mode-menu-map-percent (make-sparse-keymap "percent")) +(YaTeX-define-menu + 'YaTeX-mode-menu-map-percent + (nreverse + '((! "Change LaTeX typesetter(%#!)" + . (lambda () (interactive) (YaTeX-%-menu nil nil ?!))) + (begend "Set %#BEGIN-%#END on region" + . (lambda () (interactive) (YaTeX-%-menu nil nil ?b))) + (lpr "Change LPR format" + . (lambda () (interactive) (YaTeX-%-menu nil nil ?l)))))) -;; Help for LaTeX ------------------------------------------------------------ -(YaTeX-19-define-sub-menu - YaTeX-mode-map [menu-bar yatex] - '(sephelp "--") - '(help "Help on LaTeX commands" YaTeX-help) - '(apropos "Apropos on LaTeX commands" YaTeX-apropos)) - -;; Switch modes -------------------------------------------------------------- -(define-key YaTeX-mode-map [menu-bar yatex switch] - (cons "Switching YaTeX's modes" (make-sparse-keymap "modes"))) -(or YaTeX-auto-math-mode - (define-key YaTeX-mode-map [menu-bar yatex switch math] - '("Toggle math mode" . (lambda () (interactive) - (YaTeX-switch-mode-menu nil ?t))))) -(define-key YaTeX-mode-map [menu-bar yatex switch mod] - '("Toggle modify mode" . (lambda () (interactive) - (YaTeX-switch-mode-menu nil ?m)))) +(defvar YaTeX-mode-menu-map-jump (make-sparse-keymap "jump")) +(YaTeX-define-menu + 'YaTeX-mode-menu-map-jump + (nreverse + '((corres "Goto corersponding position" . YaTeX-goto-corresponding-*) + (main "Visit main source" + . (lambda () (interactive) (YaTeX-visit-main))) + (main-other "Visit main source other window" + . YaTeX-visit-main-other-window)))) -;; % menu -------------------------------------------------------------------- -(define-key YaTeX-mode-map [menu-bar yatex percent] - (cons "Edit %# notation" (make-sparse-keymap "Edit %# notation"))) -(YaTeX-19-define-sub-menu - YaTeX-mode-map [menu-bar yatex percent] - '(! "Change LaTeX typesetter(%#!)" - (lambda () (interactive) (YaTeX-%-menu nil nil ?!))) - '(begend "Set %#BEGIN-%#END on region" - (lambda () (interactive) (YaTeX-%-menu nil nil ?b))) - '(lpr "Change LPR format" - (lambda () (interactive) (YaTeX-%-menu nil nil ?l)))) - -;; What position ------------------------------------------------------------- -(YaTeX-19-define-sub-menu - YaTeX-mode-map [menu-bar yatex] - '(what "What column in tabular" YaTeX-what-column)) - -;; Document hierarchy ------------------------------------------------------ -(YaTeX-19-define-sub-menu - YaTeX-mode-map [menu-bar yatex] - '(hier "Display document hierarchy" YaTeX-display-hierarchy-directly)) - -;; Jump cursor --------------------------------------------------------------- -(define-key YaTeX-mode-map [menu-bar yatex jump] - (cons "Jump cursor" - (make-sparse-keymap "Jump cursor"))) -(YaTeX-19-define-sub-menu - YaTeX-mode-map [menu-bar yatex jump] - '(corres "Goto corersponding position" YaTeX-goto-corresponding-*) - '(main "Visit main source" (lambda () (interactive) (YaTeX-visit-main))) - '(main-other "Visit main source other window" YaTeX-visit-main-other-window) - ) - -;; =========================================================================== -(define-key YaTeX-mode-map [menu-bar yatex sepcom] - '("---" . nil)) +(defvar YaTeX-mode-menu-map-comment (make-sparse-keymap "comment")) +(YaTeX-define-menu + 'YaTeX-mode-menu-map-comment + (nreverse + '((comment "Comment region or environment" . YaTeX-comment-region) + (uncomment "Unomment region or environment" . YaTeX-uncomment-region) + (commentp "Comment paragraph" . YaTeX-comment-paragraph) + (uncommentp "Uncomment paragraph" . YaTeX-uncomment-paragraph)))) -;; Comment/Uncomment --------------------------------------------------------- -(YaTeX-19-define-sub-menu - YaTeX-mode-map [menu-bar yatex] - '(comment "Comment region or environment" YaTeX-comment-region) - '(uncomment "Unomment region or environment" YaTeX-uncomment-region) - '(commentp "Comment paragraph" YaTeX-comment-paragraph) - '(uncommentp "Uncomment paragraph" YaTeX-uncomment-paragraph) - '(sepcom "--" nil) -) - +(YaTeX-define-menu + 'YaTeX-mode-menu-map + (nreverse + (list + ;; Change/Kill/Fill ------------------------------------------------------- + (cons (list 'chg "Change") (cons "Change macros" 'YaTeX-change-*)) + (cons (list 'kill "Kill") (cons "Kill macros" 'YaTeX-kill-*)) + (cons (list 'fill "Fill") (cons "Fill \\item" 'YaTeX-fill-item)) + (cons (list 'nl "Newline") (cons "Newline" 'YaTeX-intelligent-newline)) + ;; ======================================================================== + (cons (list 'sep1 "---") (cons "---" nil)) + ;; Comment/Uncomment ------------------------------------------------------ + (cons (list 'comment "comment") (cons "Comment region or environment" + 'YaTeX-comment-region)) + (cons (list 'uncomment "uncomment") (cons "Uncomment region or environment" + 'YaTeX-uncomment-region)) + (cons (list 'commentp "commentp") (cons "Comment paragraph" + 'YaTeX-comment-paragraph)) + (cons (list 'uncommentp "uncommentp") (cons "Uncomment paragraph" + 'YaTeX-uncomment-paragraph)) + ;; ======================================================================== + (cons (list 'sep2 "---") (cons "---" nil)) + ;; Jump cursor ------------------------------------------------------------ + (cons (list 'jump "jump") (cons "Jump Cursor" YaTeX-mode-menu-map-jump)) + ;; Document hierarchy --------------------------------------------------- + (cons (list 'hier "hier") (cons "Display Document hierarchy" + 'YaTeX-display-hierarchy)) + ;; What position ---------------------------------------------------------- + (cons (list 'col "column") (cons "What column in tabular" + 'YaTeX-what-column)) + ;; % menu ----------------------------------------------------------------- + (cons (list 'percent "percent") (cons "Edit %# notation" + YaTeX-mode-menu-map-percent)) + ;; Switch modes ----------------------------------------------------------- + (cons (list 'mode "mode") (cons "Switching YaTeX's modes" + YaTeX-mode-menu-map-modes)) + ;; ======================================================================== + (cons (list 'sep "---") (cons "---" nil)) + ;; Help for LaTeX --------------------------------------------------------- + (cons (list 'ap "apr") (cons "Apropos on LaTeX commands" 'YaTeX-apropos)) + (cons (list 'help "help") (cons "Help on LaTeX commands" 'YaTeX-help)) + ;; Menu for Typeset relating processes ------------------------------------ + (cons (list 'process "Process menu") + (cons "Process" YaTeX-mode-menu-map-process))) +)) -;; =========================================================================== -;; Change/Kill/Fill -(YaTeX-19-define-sub-menu - YaTeX-mode-map [menu-bar yatex] - '(change "Change macros" YaTeX-change-*) - '(kill "Kill macros" YaTeX-kill-*) - '(fillitem "Fill \\item" YaTeX-fill-item) - '(newline "Newline" YaTeX-intelligent-newline) - '(sepchg "--" nil) -) - -;; Menu for completions ------------------------------------------------------ - - -;;;(YaTeX-19-define-sub-menu -;;; YaTeX-mode-map [menu-bar yatex] -;;; '(secr "Section-type command on region" YaTeX-make-section-region) -;;; '(sec "Section-type command" YaTeX-make-section)) - -(define-key YaTeX-mode-map [menu-bar yatex sectionr] - (cons "Section-type region(long name)" - (make-sparse-keymap "Enclose region with section-type macro"))) -(define-key YaTeX-mode-map [menu-bar yatex section] - (cons "Section-type(long name)" - (make-sparse-keymap "Section-type macro"))) +;; Make section-type commands menu ------------------------------------------- +(defvar YaTeX-mode-menu-map-sectionr + (make-sparse-keymap "Enclose region with section-type macro")) +(defvar YaTeX-mode-menu-map-section (make-sparse-keymap "Section-type macro")) (let ((sorted-section (sort (delq nil @@ -157,56 +128,91 @@ (car s)))) (append section-table user-section-table))) 'string<))) - (apply 'YaTeX-19-define-sub-menu - YaTeX-mode-map [menu-bar yatex section] - (mapcar (function (lambda (secname) - (list (intern secname) secname - (list 'lambda () - (list 'interactive) - (list 'YaTeX-make-section - nil nil nil secname))))) - sorted-section)) - (apply 'YaTeX-19-define-sub-menu - YaTeX-mode-map [menu-bar yatex sectionr] - (mapcar (function (lambda (secname) - (list (intern secname) secname - (list 'lambda () - (list 'interactive) - (list 'YaTeX-make-section - nil - (list 'region-beginning) - (list 'region-end) - secname))))) - sorted-section))) + (YaTeX-define-menu + 'YaTeX-mode-menu-map-section + (mapcar + (function (lambda (secname) + (cons (intern secname) + (cons secname + (list 'lambda () + (list 'interactive) + (list 'YaTeX-make-section + nil nil nil + secname)))))) + sorted-section)) + (YaTeX-define-menu + 'YaTeX-mode-menu-map-sectionr + (mapcar + (function (lambda (secname) + (cons (intern secname) + (cons secname + (list 'lambda () + (list 'interactive) + (list 'YaTeX-make-section + nil + (list 'region-beginning) + (list 'region-end) + secname)))))) + sorted-section))) + +(YaTeX-define-menu + 'YaTeX-mode-menu-map + (nreverse + (list + (cons '(sectionr "Section-type (long name)") + (cons "Section type" YaTeX-mode-menu-map-section)) + (cons '(section "Section-type region (long name)") + (cons "Section type region (long name)" + YaTeX-mode-menu-map-sectionr))))) + +;; Make large-type commands menu --------------------------------------------- +(defvar YaTeX-mode-menu-map-envr (make-sparse-keymap "Environment region")) +(defvar YaTeX-mode-menu-map-env (make-sparse-keymap "Environment")) -(define-key YaTeX-mode-map [menu-bar yatex envr] - (cons "Environment region" (make-sparse-keymap "Environment region"))) -(define-key YaTeX-mode-map [menu-bar yatex env] - (cons "Environment" (make-sparse-keymap "Environment"))) -(let (prev envname) - (mapcar - (function - (lambda (envalist) - (setq envname (car envalist)) - (define-key-after - (lookup-key YaTeX-mode-map [menu-bar yatex env]) - (vector (intern envname)) - (cons envname - (list 'lambda () (list 'interactive) - (list 'YaTeX-insert-begin-end - envname nil))) - prev) - (define-key-after - (lookup-key YaTeX-mode-map [menu-bar yatex envr]) - (vector (intern envname)) - (cons envname - (list 'lambda () (list 'interactive) - (list 'YaTeX-insert-begin-end - envname t))) - prev) - (setq prev (intern envname)))) - (sort (append env-table user-env-table) - '(lambda (x y) (string< (car x) (car y)))))) +(let ((sorted-env + (sort + (mapcar (function (lambda (s) (car s))) + (append env-table user-env-table)) + 'string<))) + (YaTeX-define-menu + 'YaTeX-mode-menu-map-env + (mapcar + (function (lambda (envname) + (cons (intern envname) + (cons envname + (list 'lambda () + (list 'interactive) + (list 'YaTeX-insert-begin-end + envname nil)))))) + sorted-env)) + (YaTeX-define-menu + 'YaTeX-mode-menu-map-envr + (mapcar + (function (lambda (envname) + (cons (intern envname) + (cons envname + (list 'lambda () + (list 'interactive) + (list 'YaTeX-insert-begin-end + envname t)))))) + sorted-env))) +(YaTeX-define-menu + 'YaTeX-mode-menu-map + (nreverse + (list + (cons '(envr "Environment") + (cons "Environment" YaTeX-mode-menu-map-env)) + (cons '(env "Environment region") + (cons "Environment region" + YaTeX-mode-menu-map-envr))))) + +(and (featurep 'xemacs) + (add-hook 'yatex-mode-hook + '(lambda () + (or (assoc "YaTeX" current-menubar) + (progn + (set-buffer-menubar (copy-sequence current-menubar)) + (add-submenu nil YaTeX-mode-menu-map)))))) ;; Other key bindings for window-system ;(YaTeX-define-key [?\C- ] 'YaTeX-do-completion) @@ -225,10 +231,10 @@ "Return list of starting and end point of section-type commands of PATTERN." (if (re-search-forward pattern nil t) (let ((m0 (match-beginning 0)) cmd (argc 1)) - (setq cmd (substring (YaTeX-match-string 0) 1 -1) + (setq cmd (substring (YaTeX-match-string 0) 1) argc (or (car (cdr (YaTeX-lookup-table cmd 'section))) argc)) (cons m0 - (progn (skip-chars-backward "^{") (forward-char -2) + (progn ;(skip-chars-backward "^{") (forward-char -2) (while (> argc 0) (skip-chars-forward "^{") (forward-list 1) @@ -264,23 +270,23 @@ ;; comments (YaTeX-19-region-comment "\\([^\\]\\|^\\)\\(%\\).*$" comment) - (YaTeX-19-region-section-type "\\\\footnote\\(mark\\|text\\)?{" keyword) + (YaTeX-19-region-section-type "\\\\footnote\\(mark\\|text\\)?\\>" keyword) ("\\\\[a-z]+box" 0 keyword) - (YaTeX-19-region-section-type "\\\\\\(v\\|h\\)space\\(\*\\)?{" keyword) + (YaTeX-19-region-section-type "\\\\\\(v\\|h\\)space\\>" keyword) ;; (re-)define new commands/environments/counters (YaTeX-19-region-section-type - "\\\\\\(re\\)?new\\(environment\\|command\\|theorem\\|length\\|counter\\){" + "\\\\\\(re\\)?new\\(environment\\|command\\|theorem\\|length\\|counter\\)\\>" defun) (YaTeX-19-region-section-type - "\\\\textbf{" bold) + "\\\\textbf\\>" bold) ;; various declarations/definitions (YaTeX-19-region-section-type - "\\\\\\(set\\|setto\\|addto\\)\\(length\\|width\\|counter\\){" + "\\\\\\(set\\|setto\\|addto\\)\\(length\\|width\\|counter\\)\\>" define) (YaTeX-19-region-section-type - "\\\\\\(title\\|author\\|date\\|thanks\\){" define) + "\\\\\\(title\\|author\\|date\\|thanks\\)\\>" define) ("\\\\document\\(style\\|class\\)\\(\\[.*\\]\\)?{" "}" decl) ("\\\\\\(begin\\|end\\|nofiles\\|includeonly\\){" "}" decl) @@ -295,11 +301,11 @@ ;;this should be customized by YaTeX-item-regexp ("\\\\\\(sub\\)*item\\b\\(\\[[^]]*\\]\\)?" 0 label) (YaTeX-19-region-section-type - "\\\\caption\\(\\[[^]]*\\]\\)?{" label) + "\\\\caption\\(\\[[^]]*\\]\\)?\\>" label) ;; things that do some sort of cross-reference (YaTeX-19-region-section-type - "\\\\\\(\\(no\\)?cite\\|\\(page\\)?ref\\|label\\|index\\|glossary\\){" + "\\\\\\(\\(no\\)?cite\\|\\(page\\)?ref\\|label\\|index\\|glossary\\)\\>" crossref) ;; things that bring in external files @@ -373,7 +379,9 @@ list YaTeX-sectioning-level) (while list (setq pat (concat YaTeX-ec-regexp (car (car list)) - "\\*?\\(\\[[^]]*\\]\\)?{") + ;"\\*?\\(\\[[^]]*\\]\\)?\\>" + "\\>" + ) level (cdr (car list)) fg (format "hex-%02x%02x%02x" (- fR (/ (* level fR fmin) lm 100)) @@ -416,7 +424,7 @@ (lambda (s) (regexp-quote (car s)))) sect "\\|") - "\\){"))) + "\\)\\>"))) (if (setq single (append user-singlecmd-table tmp-singlecmd-table)) (setq single (concat "\\\\\\(" (mapconcat @@ -511,6 +519,7 @@ ;;; formula 'khaki ;;; label 'yellow-underlined)) (and YaTeX-emacs-19 + (not (featurep 'xemacs)) (boundp 'byte-compile-current-file) (if (and (boundp 'window-system) window-system) (require 'hilit19)