yatex
annotate yatexlib.el @ 23:b00c74813e56
Change the YaTeX-math-mode's prefix from `,' to `;'.
Add YaTeX-apropos, YaTeX-what-column, YaTeX-beginning-of-environment,
YaTeX-end-of-environment.
Add variables YaTeX-default-pop-window-height, YaTeX-close-paren-always,
YaTeX-no-begend-shortcut, YaTeX-auto-math-mode.
Remove Greek letters from maketitle-type.
Make YaTeX-inner-environment two times faster and more reliable.
C-u for [prefix] k kills contents too.
Fix the detection of the range of section-type commands when nested.
Add \end{ completion.
Add YaTeX-generate-simple.
Refine documents(using Texinfo).
%#REQUIRE for sub-preambles.
author | yuuji |
---|---|
date | Thu, 07 Jul 1994 16:37:05 +0000 |
parents | |
children | cd1b63102eed |
rev | line source |
---|---|
yuuji@23 | 1 ;;; -*- Emacs-Lisp -*- |
yuuji@23 | 2 ;;; YaTeX library of general functions. |
yuuji@23 | 3 ;;; yatexlib.el |
yuuji@23 | 4 ;;; (c )1994 by HIROSE Yuuji.[yuuji@ae.keio.ac.jp] |
yuuji@23 | 5 ;;; Last modified Fri Jul 8 00:44:41 1994 on figaro |
yuuji@23 | 6 ;;; $Id$ |
yuuji@23 | 7 |
yuuji@23 | 8 ;;;###autoload |
yuuji@23 | 9 (defun YaTeX-search-active-forward (string cmntrx &optional bound err cnt func) |
yuuji@23 | 10 "Search STRING which is not commented out by CMNTRX. |
yuuji@23 | 11 Optional arguments after BOUND, ERR, CNT are passed literally to search-forward |
yuuji@23 | 12 or search-backward. |
yuuji@23 | 13 Optional sixth argument FUNC changes search-function." |
yuuji@23 | 14 (let ((sfunc (if func func 'search-forward)) found md) |
yuuji@23 | 15 (while (and (prog1 |
yuuji@23 | 16 (setq found (funcall sfunc string bound err cnt)) |
yuuji@23 | 17 (setq md (match-data))) |
yuuji@23 | 18 (or |
yuuji@23 | 19 (YaTeX-in-verb-p (match-beginning 0)) |
yuuji@23 | 20 (save-excursion |
yuuji@23 | 21 (beginning-of-line) |
yuuji@23 | 22 (re-search-forward cmntrx (match-beginning 0) t))))) |
yuuji@23 | 23 (store-match-data md) |
yuuji@23 | 24 found) |
yuuji@23 | 25 ) |
yuuji@23 | 26 |
yuuji@23 | 27 (defun YaTeX-re-search-active-forward (regexp cmntrx &optional bound err cnt) |
yuuji@23 | 28 "Search REGEXP backward which is not commented out by regexp CMNTRX. |
yuuji@23 | 29 See also YaTeX-search-active-forward." |
yuuji@23 | 30 (YaTeX-search-active-forward regexp cmntrx bound err cnt 're-search-forward) |
yuuji@23 | 31 ) |
yuuji@23 | 32 (defun YaTeX-search-active-backward (string cmntrx &optional bound err cnt) |
yuuji@23 | 33 "Search STRING backward which is not commented out by regexp CMNTRX. |
yuuji@23 | 34 See also YaTeX-search-active-forward." |
yuuji@23 | 35 (YaTeX-search-active-forward string cmntrx bound err cnt 'search-backward) |
yuuji@23 | 36 ) |
yuuji@23 | 37 (defun YaTeX-re-search-active-backward (regexp cmntrx &optional bound err cnt) |
yuuji@23 | 38 "Search REGEXP backward which is not commented out by regexp CMNTRX. |
yuuji@23 | 39 See also YaTeX-search-active-forward." |
yuuji@23 | 40 (YaTeX-search-active-forward regexp cmntrx bound err cnt 're-search-backward) |
yuuji@23 | 41 ) |
yuuji@23 | 42 |
yuuji@23 | 43 |
yuuji@23 | 44 ;;;###autoload |
yuuji@23 | 45 (defun YaTeX-switch-to-buffer (file &optional setbuf) |
yuuji@23 | 46 "Switch to buffer if buffer exists, find file if not. |
yuuji@23 | 47 Optional second arg SETBUF t make use set-buffer instead of switch-to-buffer." |
yuuji@23 | 48 (interactive "Fswitch to file: ") |
yuuji@23 | 49 (let (buf) |
yuuji@23 | 50 (if (setq buf (get-buffer (file-name-nondirectory file))) |
yuuji@23 | 51 (progn |
yuuji@23 | 52 (funcall (if setbuf 'set-buffer 'switch-to-buffer) |
yuuji@23 | 53 (file-name-nondirectory file)) |
yuuji@23 | 54 buf) |
yuuji@23 | 55 (if (file-exists-p file) |
yuuji@23 | 56 (progn (find-file file) (current-buffer)) |
yuuji@23 | 57 (message "%s was not found in this directory." file) |
yuuji@23 | 58 nil))) |
yuuji@23 | 59 ) |
yuuji@23 | 60 |
yuuji@23 | 61 ;;;###autoload |
yuuji@23 | 62 (defun YaTeX-switch-to-buffer-other-window (file) |
yuuji@23 | 63 "Switch to buffer if buffer exists, find file if not." |
yuuji@23 | 64 (interactive "Fswitch to file: ") |
yuuji@23 | 65 (if (get-buffer (file-name-nondirectory file)) |
yuuji@23 | 66 (progn (switch-to-buffer-other-window file) t) |
yuuji@23 | 67 (if (file-exists-p file) |
yuuji@23 | 68 (progn (find-file-other-window file) t) |
yuuji@23 | 69 (message "%s was not found in this directory." file) |
yuuji@23 | 70 nil)) |
yuuji@23 | 71 ) |
yuuji@23 | 72 |
yuuji@23 | 73 (defun YaTeX-replace-format-sub (string format repl) |
yuuji@23 | 74 (let ((beg (or (string-match (concat "^\\(%" format "\\)") string) |
yuuji@23 | 75 (string-match (concat "[^%]\\(%" format "\\)") string))) |
yuuji@23 | 76 (len (length format))) |
yuuji@23 | 77 (if (null beg) string ;no conversion |
yuuji@23 | 78 (concat |
yuuji@23 | 79 (substring string 0 (match-beginning 1)) repl |
yuuji@23 | 80 (substring string (match-end 1))))) |
yuuji@23 | 81 ) |
yuuji@23 | 82 |
yuuji@23 | 83 ;;;###autoload |
yuuji@23 | 84 (defun YaTeX-replace-format (string format repl) |
yuuji@23 | 85 "In STRING, replace first appearance of FORMAT to REPL as if |
yuuji@23 | 86 function `format' does. FORMAT does not contain `%'" |
yuuji@23 | 87 (let ((ans string)) |
yuuji@23 | 88 (while (not (string= |
yuuji@23 | 89 ans (setq string (YaTeX-replace-format-sub ans format repl)))) |
yuuji@23 | 90 (setq ans string)) |
yuuji@23 | 91 string) |
yuuji@23 | 92 ) |
yuuji@23 | 93 |
yuuji@23 | 94 ;;;###autoload |
yuuji@23 | 95 (defun YaTeX-replace-format-args (string &rest args) |
yuuji@23 | 96 "Translate the argument mark #1, #2, ... #n in the STRING into the |
yuuji@23 | 97 corresponding real arguments ARGS." |
yuuji@23 | 98 (let ((argp 1)) |
yuuji@23 | 99 (while args |
yuuji@23 | 100 (setq string |
yuuji@23 | 101 (YaTeX-replace-format string (int-to-string argp) (car args))) |
yuuji@23 | 102 (setq args (cdr args) argp (1+ argp)))) |
yuuji@23 | 103 string |
yuuji@23 | 104 ) |
yuuji@23 | 105 |
yuuji@23 | 106 ;;;###autoload |
yuuji@23 | 107 (defun rindex (string char) |
yuuji@23 | 108 (let ((pos (1- (length string)))(index -1)) |
yuuji@23 | 109 (while (>= pos 0) |
yuuji@23 | 110 (cond |
yuuji@23 | 111 ((= (aref string pos) char) |
yuuji@23 | 112 (setq index pos) (setq pos -1)) |
yuuji@23 | 113 (t (setq pos (1- pos)))) |
yuuji@23 | 114 ) |
yuuji@23 | 115 index) |
yuuji@23 | 116 ) |
yuuji@23 | 117 |
yuuji@23 | 118 ;;;###autoload |
yuuji@23 | 119 (defun YaTeX-showup-buffer (buffer &optional func select) |
yuuji@23 | 120 "Make BUFFER show up in certain window (but current window) |
yuuji@23 | 121 that gives the maximum value by the FUNC. FUNC should take an argument |
yuuji@23 | 122 of its window object. Non-nil for optional third argument SELECT selects |
yuuji@23 | 123 that window." |
yuuji@23 | 124 (or (and (get-buffer-window buffer) |
yuuji@23 | 125 (progn (if select (select-window (get-buffer-window buffer))) |
yuuji@23 | 126 t)) |
yuuji@23 | 127 (let ((window (selected-window)) |
yuuji@23 | 128 (wlist (YaTeX-window-list)) win w (x 0)) |
yuuji@23 | 129 (cond |
yuuji@23 | 130 ((> (length wlist) 2) |
yuuji@23 | 131 (if func |
yuuji@23 | 132 (while wlist |
yuuji@23 | 133 (setq w (car wlist)) |
yuuji@23 | 134 (if (and (not (eq window w)) |
yuuji@23 | 135 (> (funcall func w) x)) |
yuuji@23 | 136 (setq win w x (funcall func w))) |
yuuji@23 | 137 (setq wlist (cdr wlist))) |
yuuji@23 | 138 (setq win (get-lru-window))) |
yuuji@23 | 139 (select-window win) |
yuuji@23 | 140 (switch-to-buffer buffer) |
yuuji@23 | 141 (or select (select-window window))) |
yuuji@23 | 142 ((= (length wlist) 2) |
yuuji@23 | 143 (other-window 1) |
yuuji@23 | 144 (switch-to-buffer buffer) |
yuuji@23 | 145 (or select (select-window window))) |
yuuji@23 | 146 (t ;if one-window |
yuuji@23 | 147 (cond |
yuuji@23 | 148 (YaTeX-default-pop-window-height |
yuuji@23 | 149 (split-window |
yuuji@23 | 150 (selected-window) |
yuuji@23 | 151 (max |
yuuji@23 | 152 (min |
yuuji@23 | 153 (- (screen-height) |
yuuji@23 | 154 (if (numberp YaTeX-default-pop-window-height) |
yuuji@23 | 155 (+ YaTeX-default-pop-window-height 2) |
yuuji@23 | 156 (/ (* (screen-height) |
yuuji@23 | 157 (string-to-int YaTeX-default-pop-window-height)) |
yuuji@23 | 158 100))) |
yuuji@23 | 159 (- (screen-height) window-min-height 1)) |
yuuji@23 | 160 window-min-height)) |
yuuji@23 | 161 (pop-to-buffer buffer) |
yuuji@23 | 162 (or select (select-window window))) |
yuuji@23 | 163 (t nil))) |
yuuji@23 | 164 ))) |
yuuji@23 | 165 ) |
yuuji@23 | 166 |
yuuji@23 | 167 ;;;###autoload |
yuuji@23 | 168 (defun YaTeX-window-list () |
yuuji@23 | 169 (let*((curw (selected-window)) (win curw) (wlist (list curw))) |
yuuji@23 | 170 (while (not (eq curw (setq win (next-window win)))) |
yuuji@23 | 171 (or (eq win (minibuffer-window)) |
yuuji@23 | 172 (setq wlist (cons win wlist)))) |
yuuji@23 | 173 wlist) |
yuuji@23 | 174 ) |
yuuji@23 | 175 |
yuuji@23 | 176 ;;;###autoload |
yuuji@23 | 177 (defun substitute-all-key-definition (olddef newdef keymap) |
yuuji@23 | 178 "Replace recursively OLDDEF with NEWDEF for any keys in KEYMAP now |
yuuji@23 | 179 defined as OLDDEF. In other words, OLDDEF is replaced with NEWDEF |
yuuji@23 | 180 where ever it appears." |
yuuji@23 | 181 (mapcar |
yuuji@23 | 182 (function (lambda (key) (define-key keymap key newdef))) |
yuuji@23 | 183 (where-is-internal olddef)) |
yuuji@23 | 184 ) |
yuuji@23 | 185 |
yuuji@23 | 186 ;;;###autoload |
yuuji@23 | 187 (defun YaTeX-match-string (n &optional m) |
yuuji@23 | 188 "Return (buffer-substring (match-beginning n) (match-beginning m))." |
yuuji@23 | 189 (if (match-beginning n) |
yuuji@23 | 190 (buffer-substring (match-beginning n) |
yuuji@23 | 191 (match-end (if m m n)))) |
yuuji@23 | 192 ) |
yuuji@23 | 193 |
yuuji@23 | 194 ;;;###autoload |
yuuji@23 | 195 (defun YaTeX-minibuffer-complete () |
yuuji@23 | 196 "Complete in minibuffer" |
yuuji@23 | 197 (interactive) |
yuuji@23 | 198 (let (beg word compl) |
yuuji@23 | 199 (setq beg (if (and (boundp 'delim) delim) |
yuuji@23 | 200 (save-excursion |
yuuji@23 | 201 (skip-chars-backward (concat "^" delim)) |
yuuji@23 | 202 (1- (point))) |
yuuji@23 | 203 (point-min)) |
yuuji@23 | 204 word (buffer-substring beg (point-max)) |
yuuji@23 | 205 compl (try-completion word minibuffer-completion-table)) |
yuuji@23 | 206 (cond |
yuuji@23 | 207 ((eq compl t) nil) |
yuuji@23 | 208 ((eq compl nil) |
yuuji@23 | 209 (ding) |
yuuji@23 | 210 (save-excursion |
yuuji@23 | 211 (let (p) |
yuuji@23 | 212 (goto-char (setq p (point-max))) |
yuuji@23 | 213 (insert " [No match]") |
yuuji@23 | 214 (goto-char p) |
yuuji@23 | 215 (sit-for 2) |
yuuji@23 | 216 (delete-region p (point-max))))) |
yuuji@23 | 217 ((string= compl word) |
yuuji@23 | 218 (with-output-to-temp-buffer "*Completions*" |
yuuji@23 | 219 (display-completion-list |
yuuji@23 | 220 (all-completions word minibuffer-completion-table)))) |
yuuji@23 | 221 (t (delete-region beg (point-max)) |
yuuji@23 | 222 (insert compl)) |
yuuji@23 | 223 )) |
yuuji@23 | 224 ) |
yuuji@23 | 225 |
yuuji@23 | 226 |
yuuji@23 | 227 (provide 'yatexlib) |