yatex

diff yatex.el @ 519:a6a80e2b6f5a

Nil for YaTeX-on-the-fly-preview-interval should work here.
author HIROSE Yuuji <yuuji@gentei.org>
date Tue, 09 Jan 2018 13:28:03 +0900
parents 46f02e576ee1
children cef987df070f
line diff
     1.1 --- a/yatex.el	Thu Jan 04 22:47:54 2018 +0900
     1.2 +++ b/yatex.el	Tue Jan 09 13:28:03 2018 +0900
     1.3 @@ -1,6 +1,6 @@
     1.4  ;;; yatex.el --- Yet Another tex-mode for emacs //–ì’¹// -*- coding: sjis -*-
     1.5  ;;; (c)1991-2018 by HIROSE Yuuji.[yuuji@yatex.org]
     1.6 -;;; Last modified Wed Jan  3 23:56:34 2018 on firestorm
     1.7 +;;; Last modified Sat Jan  6 22:52:02 2018 on firestorm
     1.8  ;;; $Id$
     1.9  ;;; The latest version of this software is always available at;
    1.10  ;;; https://www.yatex.org/
    1.11 @@ -376,6 +376,61 @@
    1.12    (append YaTeX-ams-math-begin-alist YaTeX-ams-math-gathering-alist)
    1.13    "*Standard AMS-LaTeX(2e) environment completion table.")
    1.14  
    1.15 +(defvar YaTeX-use-dot-env-extension t
    1.16 +  "*Use YaTeX's dot-env filter special environment.")
    1.17 +(defvar YaTeX-filter-special-env-alist-default
    1.18 +  '((".blockdiag"
    1.19 +     "blockdiag -T %t -o %o -"
    1.20 +     "blockdiag {
    1.21 +  default_fontsize = 32;
    1.22 +  A -> B;
    1.23 +}")
    1.24 +    (".seqdiag" "seqdiag -T %t -o %o -"
    1.25 +     "seqdiag {
    1.26 +  client -> server [label = \"SYN\"];
    1.27 +  client <- server [label = \"SYN/ACK\"];
    1.28 +  client -> server [label = \"ACK\"];}")
    1.29 +    (".actdiag" "actdiag -T %t -o %o -"
    1.30 +     "actdiag {
    1.31 +  sayHo -> ho -> hohoho
    1.32 +  lane dj {
    1.33 +    label = \"DJ\"
    1.34 +    sayHo [label = \"Say Ho\"]; hohoho [label = \"Ho Ho Ho!\"]; }
    1.35 +  lane mc { label = \"MC\"; ho [label = \"Hooooh!\"]}}")
    1.36 +    (".nwdiag" "nwdiag -T %t -o %o -"
    1.37 +     "nwdiag {
    1.38 +  network ext {
    1.39 +    address = \"10.1.2.0/24\"
    1.40 +    router [address = \"10.1.2.1\"]
    1.41 +  }
    1.42 +  network int {
    1.43 +    address = \"192.168.22.0/24\"
    1.44 +    router [address = \"192.168.22.1\"]
    1.45 +    websrv [address = \"192.168.22.80\"]
    1.46 +    cli-1; cli-2
    1.47 +  }
    1.48 +}")
    1.49 +    (".rackdiag" "rackdiag -T %t -o %o -"
    1.50 +     "rackdiag {
    1.51 +  16U;
    1.52 +  1: UPS [4U]; 5: Storage [3U]; 8: PC [2U]; 8: PC [2U];
    1.53 +}")
    1.54 +    (".dot"
    1.55 +     "dot -T %t -o %o"
    1.56 +     "digraph {
    1.57 +  graph [charset=\"utf-8\"]
    1.58 +}
    1.59 +bigraph {
    1.60 +  graph [charset=\"utf-8\"]}"
    1.61 +     )))
    1.62 +
    1.63 +(defvar YaTeX-filter-special-env-alist-private nil)
    1.64 +(defvar YaTeX-filter-special-env-alist
    1.65 +  (append YaTeX-filter-special-env-alist-private
    1.66 +	  YaTeX-filter-special-env-alist-default))
    1.67 +
    1.68 +
    1.69 +
    1.70  ; Set tex-environment possible completion
    1.71  (defvar env-table
    1.72    (append
    1.73 @@ -399,7 +454,11 @@
    1.74  	 ("multicols")			;defined in multicol
    1.75  	 ("breakbox")))			;defined in eclbkbox
    1.76     (if YaTeX-use-AMS-LaTeX YaTeX-ams-env-table)
    1.77 -   YaTeX-math-other-env-alist)
    1.78 +   YaTeX-math-other-env-alist
    1.79 +   (if YaTeX-use-dot-env-extension
    1.80 +       '((".blockdiag") (".nwdiag") (".seqdiag") (".rackdiag") (".packetdiag")
    1.81 +	 (".dot"))
    1.82 +     ))
    1.83    "Default completion table for begin-type completion.")
    1.84  
    1.85  (defvar user-env-table nil)
    1.86 @@ -920,7 +979,10 @@
    1.87  by completing read.
    1.88   If you invoke this command with universal argument,
    1.89  \(key binding for universal-argument is \\[universal-argument]\)
    1.90 -you can put REGION into that environment between \\begin and \\end."
    1.91 +you can put REGION into that environment between \\begin and \\end.
    1.92 +If the environment name begins with `.'(dot),
    1.93 +that environment will be treated as `special environment', which
    1.94 +enables special feature such as text conversion."
    1.95    (interactive "P")
    1.96    (let*
    1.97        ((region-p (or arg (YaTeX-region-active-p)))
    1.98 @@ -928,13 +990,17 @@
    1.99         (env
   1.100  	(save-excursion		;for Emacs24 work-around to avoid point warp 
   1.101  	  (YaTeX-read-environment
   1.102 -	   (format "Begin environment%s(default %s): " mode YaTeX-env-name)))))
   1.103 +	   (format "Begin environment%s(default %s): " mode YaTeX-env-name))))
   1.104 +       special)
   1.105      (if (string= env "")
   1.106  	(setq env YaTeX-env-name))
   1.107 -    (setq YaTeX-env-name env)
   1.108 +    (setq special (assoc env YaTeX-filter-special-env-alist)
   1.109 +	  YaTeX-env-name env)
   1.110      (YaTeX-update-table
   1.111       (list YaTeX-env-name) 'env-table 'user-env-table 'tmp-env-table)
   1.112 -    (YaTeX-insert-begin-end YaTeX-env-name region-p)))
   1.113 +    (if special
   1.114 +	(YaTeX-insert-filter-special YaTeX-env-name (cdr special) region-p)
   1.115 +      (YaTeX-insert-begin-end YaTeX-env-name region-p))))
   1.116  
   1.117  (defun YaTeX-make-begin-end-region ()
   1.118    "Call YaTeX-make-begin-end with ARG to specify region mode."
   1.119 @@ -1261,6 +1327,17 @@
   1.120      ((YaTeX-literal-p) ?\")
   1.121      ((= (preceding-char) ?\\ ) ?\")
   1.122      ;((= (preceding-char) ?\( ) ?\")
   1.123 +    ((save-excursion (beginning-of-line)
   1.124 +		     (skip-chars-forward "\t ")
   1.125 +		     (looking-at "%#"))
   1.126 +     ?\")
   1.127 +    ((let ((ovl (overlays-at (point))))
   1.128 +       (and ovl
   1.129 +	    (catch 'found
   1.130 +	      (while ovl
   1.131 +		(if (overlay-get (car ovl) 'filter-input) (throw 'found t))
   1.132 +		(setq ovl (cdr ovl))))))
   1.133 +     ?\")
   1.134      ((or (= (preceding-char) 32)
   1.135  	 (= (preceding-char) 9)
   1.136  	 (= (preceding-char) ?\n)