yatex
changeset 194:2af7a6ba45cd dev
Add guidance completion for `\begin{'.
Display guidance for intelligent newline.
author | yuuji@gentei.org |
---|---|
date | Mon, 09 Jan 2012 20:12:56 +0900 |
parents | e216f9f347fa |
children | cf7352dfa40c |
files | yatex.el |
diffstat | 1 files changed, 53 insertions(+), 19 deletions(-) [+] |
line diff
1.1 --- a/yatex.el Mon Jan 09 14:15:09 2012 +0900 1.2 +++ b/yatex.el Mon Jan 09 20:12:56 2012 +0900 1.3 @@ -2,7 +2,7 @@ 1.4 ;;; Yet Another tex-mode for emacs - //野鳥// 1.5 ;;; yatex.el rev. 1.74.6 1.6 ;;; (c)1991-2011 by HIROSE Yuuji.[yuuji@yatex.org] 1.7 -;;; Last modified Mon Jan 9 14:03:07 2012 on firestorm 1.8 +;;; Last modified Mon Jan 9 18:56:57 2012 on firestorm 1.9 ;;; $Id$ 1.10 ;;; The latest version of this software is always available at; 1.11 ;;; http://www.yatex.org/ 1.12 @@ -829,7 +829,15 @@ 1.13 (insert "\n") 1.14 (or exchange (exchange-point-and-mark))) 1.15 (goto-char beg2) 1.16 - (YaTeX-intelligent-newline nil) 1.17 + (if (intern-soft (concat "YaTeX-intelligent-newline-" env)) 1.18 + (progn 1.19 + (YaTeX-intelligent-newline nil) 1.20 + (message 1.21 + (cond 1.22 + (YaTeX-japan "%s で次の行の入力に進みます。") 1.23 + (t "`%s' produces the next line's template.")) 1.24 + (key-description 1.25 + (car (where-is-internal 'YaTeX-intelligent-newline)))))) 1.26 (YaTeX-indent-line)) 1.27 (YaTeX-package-auto-usepackage env 'env) 1.28 (if YaTeX-current-position-register 1.29 @@ -1202,9 +1210,39 @@ 1.30 (goto-char beg) 1.31 (YaTeX-insert-inherit (or open "{")))) 1.32 1.33 +(defun YaTeX-get-macro-at-point (&optional p) 1.34 + "Get (La)TeX macro around point P." 1.35 + (interactive "d") 1.36 + (save-excursion 1.37 + (goto-char (setq p (or p (point)))) 1.38 + (cond 1.39 + ((and (not (bobp)) 1.40 + (string-match "[a-zA-Z]" (char-to-string (preceding-char)))) 1.41 + (skip-chars-backward "a-zA-Z") 1.42 + (if (and (= (preceding-char) ?\\) 1.43 + (looking-at "\\([a-z]+\\)")) 1.44 + (YaTeX-buffer-substring (point) p)))))) 1.45 + 1.46 (defun YaTeX-insert-braces (arg &optional open close) 1.47 (interactive "p") 1.48 - (let (env) 1.49 + (let ((begend-guide 1.50 + (function 1.51 + (lambda () 1.52 + (if (equal (get 'YaTeX-insert-braces 'begend-guide) 2) 1.53 + nil ;if triggered thrice, do nothing 1.54 + (momentary-string-display 1.55 + (format 1.56 + (cond 1.57 + (YaTeX-japan "{begin/end入力には %s を使いましょう}") 1.58 + (t "{You don't understand Zen of `%s'!}")) 1.59 + (key-description 1.60 + (car (where-is-internal 'YaTeX-make-begin-end)))) 1.61 + (point)) 1.62 + (put 'YaTeX-insert-braces 'begend-guide 1.63 + (+ 1 (string-to-int ;increment counter of beg-end guidance 1.64 + (prin1-to-string 1.65 + (get 'YaTeX-insert-braces 'begend-guide))))))))) 1.66 + env macro not-literal) 1.67 (cond 1.68 ((YaTeX-jmode) (YaTeX-self-insert arg)) 1.69 ((not (YaTeX-closable-p)) (YaTeX-self-insert arg)) 1.70 @@ -1232,24 +1270,20 @@ 1.71 ((= (preceding-char) ?\\ ) 1.72 (insert "{\\}") 1.73 (forward-char -2)) ;matsu's hack ends here 1.74 - ((and (> (point) (+ (point-min) 4)) 1.75 - (save-excursion (backward-char 4) (looking-at "\\\\end")) 1.76 - (not (YaTeX-literal-p)) 1.77 + ((and (setq not-literal (not (YaTeX-literal-p))) 1.78 + (equal "end" (setq macro (YaTeX-get-macro-at-point))) 1.79 (setq env (YaTeX-inner-environment))) 1.80 - (if (equal (get 'YaTeX-insert-braces 'begend-guide) 2) 1.81 - nil ;if triggered thrice, do nothing 1.82 - (momentary-string-display 1.83 - (format 1.84 - (cond 1.85 - (YaTeX-japan "{begin/end入力には %s を使いましょう}") 1.86 - (t "{You don't understand Zen of `%s'!}")) 1.87 - (key-description (car (where-is-internal 'YaTeX-make-begin-end)))) 1.88 - (point)) 1.89 - (put 'YaTeX-insert-braces 'begend-guide 1.90 - (+ 1 (string-to-int ;increment counter of beg-end guidance 1.91 - (prin1-to-string 1.92 - (get 'YaTeX-insert-braces 'begend-guide)))))) 1.93 + (funcall begend-guide) 1.94 (insert (or open "{") env (or close "}"))) 1.95 + ((and not-literal (equal "begin" macro)) 1.96 + (setq env 1.97 + (YaTeX-read-environment 1.98 + (format "Begin environment(default %s): " YaTeX-env-name))) 1.99 + (if (string= "" env) (setq env YaTeX-env-name)) 1.100 + (setq YaTeX-env-name env) 1.101 + (funcall begend-guide) 1.102 + (delete-region (- (point) 6) (point)) 1.103 + (YaTeX-insert-begin-end env nil)) 1.104 (t 1.105 (insert (or open "{") (or close "}")) 1.106 (forward-char -1)