yatex
diff yatex.el @ 517:668632d9392e
Initial implementation of SpecialFilterRegion
author | HIROSE Yuuji <yuuji@gentei.org> |
---|---|
date | Sat, 06 Jan 2018 23:54:17 +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 Sat Jan 06 23:54:17 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)