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)