# HG changeset patch # User yuuji # Date 1051796307 0 # Node ID 1b172d26b55eefe67eaffe8e4d1eda13e6677d52 # Parent c16a10460ce5c8c4ea8b331d7dde2debc2e8a887 Fix auto-fill movement on Emacs21. Fix YaTeX:ref. Support jump/change on AMS-LaTeX's parentheses. diff -r c16a10460ce5 -r 1b172d26b55e docs/htmlqa --- a/docs/htmlqa Mon Nov 25 09:33:34 2002 +0000 +++ b/docs/htmlqa Thu May 01 13:38:27 2003 +0000 @@ -104,6 +104,17 @@ htmllintを使うとhtmllintに怒られないこと自体が目的となりがちです が、わたしはそれは本末転倒であると思います。 +・の途中で auto-fill されちゃうと悲しい + + 使っているのがMule2(Emacs-19)以降なら auto-fill-inhibit-regexp + という変数でコントロールできます。 yahtml-mode-hook を使って以下 + のように設定しましょう。 + + (add-hook 'yahtml-mode-hook + '(lambda () + (setq auto-fill-inhibit-regexp + "^[ ]*\\(の途中で auto-fill されちゃうと悲しい - - 使っているのがMule2(Emacs-19)以降なら auto-fill-inhibit-regexp - という変数でコントロールできます。 yatex-mode-hook を使って以下 - のように設定しましょう。 - - (add-hook 'yahtml-mode-hook - '(lambda () - (setq auto-fill-inhibit-regexp - "^[ ]*\\( diff -r c16a10460ce5 -r 1b172d26b55e help/YATEXHLP.jp --- a/help/YATEXHLP.jp Mon Nov 25 09:33:34 2002 +0000 +++ b/help/YATEXHLP.jp Thu May 01 13:38:27 2003 +0000 @@ -1106,7 +1106,7 @@ abbrv 著者のファーストネーム、発行月、書籍名が省略される thebibliography -\begin{thebibliography} \bibitem{アイテム}… \end{thebibliography} +\begin{thebibliography}{LONGESTLABEL} \bibitem{アイテム}… \end{thebibliography} 参考文献データの登録環境を開始する。 データは \bibitem コマンドによって登録する。 \bibitem コマンドの用法は以下の通り。 @@ -1114,9 +1114,10 @@ bibitem \bibitem{NAME} \bibitem[LABEL]{NAME} -\bibitem{NAME}の書式では、NAMEで参照され、[1],[2] のような形で引用記号が +\bibitem{NAME}の書式では、\cite{NAME}で参照され、[1],[2] のような形で引用記号が 出力される、\bibitem[LABEL]{NAME}の書式では、\cite{NAME}で参照され、 [LABEL] のような引用記号が出力される。 +LONGESTLABEL は、ラベルの最長を示すためのダミー文字列。 cite \cite{NAME} \cite[LABEL]{NAME} diff -r c16a10460ce5 -r 1b172d26b55e yahtml.el --- a/yahtml.el Mon Nov 25 09:33:34 2002 +0000 +++ b/yahtml.el Thu May 01 13:38:27 2003 +0000 @@ -1,6 +1,6 @@ ;;; -*- Emacs-Lisp -*- ;;; (c ) 1994-2002 by HIROSE Yuuji [yuuji@yatex.org] -;;; Last modified Wed May 22 13:55:01 2002 on firestorm +;;; Last modified Thu Nov 21 17:55:40 2002 on firestorm ;;; $Id$ (defconst yahtml-revision-number "1.70" @@ -37,6 +37,20 @@ ;;; ("/home/staff/yuuji/html" . "http://www.othernet/~yuuji"))) ;;; ;UNIXの絶対パスと対応するURLのリストを書いて下さい。 ;;; +;;; HTMLファイル漢字コードが正しく判別されるようにホームディレクトリに +;;; .htaccess ファイルを作り以下のどれか1行を選んで書いて下さい。 +;;; +;;; AddType "text/html; charset=Shift_JIS" .html (SJISの場合) +;;; AddType "text/html; charset=iso2022-jp" .html (JISの場合) +;;; AddType "text/html; charset=EUC-JP" .html (EUCの場合) +;;; +;;; .htaccess が作れない場合は +;;; (setq yahtml-kanji-code 2) +;;; ;HTMLファイルの漢字コードを変更する場合は 1=SJIS、2=JIS、3=EUC +;;; ;で設定して下さい。デフォルトは 2 です。 +;;; +;;; を適切に書き換えて ~/.emacs に足して下さい。 +;;; ;;;[Commentary] ;;; ;;; It is assumed you are already familiar with YaTeX. The following @@ -507,6 +521,7 @@ (let*((fn (file-name-nondirectory (or buffer-file-name ""))) (ext (substring fn (or (string-match "\\.[a-z0-9]+$" fn) 0))) (ptn (format "^\\s *AddType.*charset=\\(.*\\)\\%s$" ext)) + (case-fold-search t) line charset) (if (setq line (yahtml-get-user-httpconf-entry ptn)) @@ -1506,7 +1521,7 @@ (defun yahtml-insert-p (&optional arg) "Convenient function to insert

" (interactive "P") - (if arg (yahtml-insert-tag nil "p") + (if arg (yahtml-insert-tag arg "p") (save-excursion ;insert "/p" first to memorize "p" (yahtml-insert-single "/p")) ;in the last-completion variable (yahtml-insert-single "p"))) diff -r c16a10460ce5 -r 1b172d26b55e yatex.el --- a/yatex.el Mon Nov 25 09:33:34 2002 +0000 +++ b/yatex.el Thu May 01 13:38:27 2003 +0000 @@ -1,8 +1,8 @@ ;;; -*- Emacs-Lisp -*- ;;; Yet Another tex-mode for emacs - //野鳥// -;;; yatex.el rev. 1.70 -;;; (c )1991-2002 by HIROSE Yuuji.[yuuji@yatex.org] -;;; Last modified Wed May 22 13:54:47 2002 on firestorm +;;; yatex.el rev. 1.71 +;;; (c )1991-2003 by HIROSE Yuuji.[yuuji@yatex.org] +;;; Last modified Thu May 1 22:36:40 2003 on firestorm ;;; $Id$ ;;; The latest version of this software is always available at; ;;; http://www.yatex.org/ @@ -24,7 +24,7 @@ (require 'comment) (require 'yatexlib) -(defconst YaTeX-revision-number "1.70" +(defconst YaTeX-revision-number "1.71" "Revision number of running yatex.el") ;---------- Local variables ---------- @@ -607,7 +607,7 @@ '(dvi2-command fill-column fill-prefix tmp-env-table tmp-section-table tmp-fontsize-table tmp-singlecmd-table paragraph-start paragraph-separate - YaTeX-math-mode indent-line-function + YaTeX-math-mode indent-line-function comment-line-break-function comment-start comment-start-skip )) (cond ((boundp 'MULE) @@ -632,8 +632,12 @@ comment-end "" comment-start-skip "[^\\\\]%+[ \t]*" local-abbrev-table yatex-mode-abbrev-table) + (if (fboundp 'comment-indent-new-line) ;for Emacs21 + (setq comment-line-break-function 'YaTeX-comment-line-break)) + (if (and YaTeX-use-font-lock (featurep 'font-lock)) (progn + (require 'yatex19) (YaTeX-font-lock-set-default-keywords) (or (featurep 'xemacs) (set (make-local-variable 'font-lock-defaults) @@ -698,6 +702,7 @@ (autoload 'YaTeX-on-parenthesis-p "yatexmth" "Check if on math-parens" t) (autoload 'YaTeX-goto-open-paren "yatexmth" "Goto opening paren" t) (autoload 'YaTeX-change-parentheses "yatexmth" "Change corresponding parens" t) +(autoload 'YaTeX-goto-corresponding-paren "yatexmth" "\bigl\bigr jumps" t) ;;autoload from yatexhlp.el (autoload 'YaTeX-help "yatexhlp" "YaTeX helper with LaTeX commands." t) @@ -1356,7 +1361,8 @@ (if (or (string-match YaTeX-array-env-regexp (or (YaTeX-inner-environment t) "document")) (= (preceding-char) 92) - (YaTeX-literal-p)) + (YaTeX-literal-p) + (YaTeX-in-math-mode-p)) (insert "&") (insert "\\&"))) @@ -1471,7 +1477,8 @@ (setq scmd (cdr (assoc (YaTeX-match-string 1) '(("label" . "\\(page\\)?ref") ("ref" . "label") ("pageref" . "label") - ("cite" . "bibitem") ("bibitem" . "cite"))))) + ("cite" . "bibitem\\(\\[[^]]+\\]\\)?") + ("bibitem" . "cite\\(\\[[^]]+\\]\\)?"))))) (goto-char (match-end 0)) (let ((label (buffer-substring (1- (point)) (progn (backward-list 1) (1+ (point)))))) @@ -1702,8 +1709,22 @@ (while (setq i (string-match "\\\\(" command i)) (setq grouping (1+ grouping) i (+ i 2))) (save-excursion - (if (looking-at YaTeX-ec-regexp) nil + (if (looking-at (concat YaTeX-ec-regexp command)) nil (catch 'found ;caught value has no meaning + ;;(1) looking at current position + (if (looking-at command) + (progn + (while (and (not (bobp)) (looking-at command)) + (forward-char -1)) + (throw 'found t))) + ;;(2) search command directly + (skip-chars-forward "^{}[]") + (and (YaTeX-re-search-active-backward + (concat YaTeX-ec-regexp command) YaTeX-comment-prefix nil t) + (>= p (match-beginning 0)) + (throw 'found (goto-char (match-beginning 0)))) + ;;(3) search token + (goto-char p) (while t (if (bobp) (throw 'found nil)) (cond @@ -1756,7 +1777,18 @@ (defun YaTeX-on-begin-end-p () (save-excursion - (beginning-of-line) + (if (and (boundp 'in-leftright-p) in-leftright-p) + ;; Dirty workaround for YaTeX-goto-corresponding-leftright 2003/3/28 + (let ((md (match-data))) ; for safety + (if (looking-at YaTeX-ec-regexp) + nil ; stay here + (cond + ((looking-at "\\w") (skip-chars-backward "A-Za-z")) + ((looking-at "\\.()\\[\\]|") (forward-char -1))) + (if (equal (char-after (1- (point))) + (string-to-char YaTeX-ec)) + (forward-char -1)))) + (beginning-of-line)) (re-search-forward ;;"\\\\begin{\\([^}]+\\)}\\|\\\\end{\\([^}]+\\)}" (concat @@ -1798,17 +1830,22 @@ (defun YaTeX-goto-corresponding-* (arg) "Parse current line and call suitable function." (interactive "P") - (cond - ((YaTeX-goto-corresponding-label arg)) - ((YaTeX-goto-corresponding-environment)) - ((YaTeX-goto-corresponding-file-processor arg)) - ((YaTeX-goto-corresponding-file arg)) - ((YaTeX-goto-corresponding-BEGIN-END)) - ((and (string-match - YaTeX-equation-env-regexp ;to delay loading - (or (YaTeX-inner-environment t) "document")) - (YaTeX-goto-corresponding-leftright))) - (t (message "I don't know where to go.")))) + (let (mm) + (cond + ((YaTeX-goto-corresponding-label arg)) + ((YaTeX-goto-corresponding-environment)) + ((YaTeX-goto-corresponding-file-processor arg)) + ((YaTeX-goto-corresponding-file arg)) + ((YaTeX-goto-corresponding-BEGIN-END)) + ((and (setq mm (YaTeX-in-math-mode-p)) + (YaTeX-goto-corresponding-leftright))) + ((and mm YaTeX-use-AMS-LaTeX + (YaTeX-goto-corresponding-paren))) + ;;((and (string-match + ;; YaTeX-equation-env-regexp ;to delay loading + ;; (or (YaTeX-inner-environment t) "document")) + ;; (YaTeX-goto-corresponding-leftright))) + (t (message "I don't know where to go."))))) (defun YaTeX-goto-corresponding-*-other-window (arg) "Parse current line and call suitable function." @@ -1836,11 +1873,11 @@ "Uncomment out region by '%'." (interactive "P") (if (not (YaTeX-on-begin-end-p)) - (uncomment-region + (uncomment-out-region (if alt-prefix (read-string "Remove prefix: ") YaTeX-comment-prefix) (region-beginning) (region-end) YaTeX-uncomment-once) - (YaTeX-comment-uncomment-env 'uncomment-region))) + (YaTeX-comment-uncomment-env 'uncomment-out-region))) (defun YaTeX-comment-uncomment-env (func) "Comment or uncomment out one LaTeX environment switching function by FUNC." @@ -1893,7 +1930,7 @@ (paragraph-separate paragraph-start)) (mark-paragraph) (if (not (bobp)) (forward-line 1)) - (uncomment-region "%" nil nil YaTeX-uncomment-once)) + (uncomment-out-region "%" nil nil YaTeX-uncomment-once)) (message "This line is not a comment line."))))) (defun YaTeX-remove-prefix (prefix &optional once) @@ -2688,6 +2725,11 @@ (looking-at "\\sw+")) ;is not japanese string (insert YaTeX-comment-prefix))))))) +(defun YaTeX-comment-line-break (&optional soft) + "Call comment-indent-new-line and YaTeX-indent-line" + (comment-indent-new-line soft) + (YaTeX-indent-line)) + (defun YaTeX-latex2e-p () (let ((b (current-buffer)) (ptn (concat YaTeX-ec "documentclass"))) diff -r c16a10460ce5 -r 1b172d26b55e yatex.new --- a/yatex.new Mon Nov 25 09:33:34 2002 +0000 +++ b/yatex.new Thu May 01 13:38:27 2003 +0000 @@ -1,6 +1,16 @@ What's new in YaTeX/yahtml 野鳥/yahtml - 各バージョンの変更点について +1.71 === yatex === + fill-prefix を指定している場合、Emacs21で \item の auto-fill が + \item の深さにかかわらず fill-prefix になってしまうのを回避 + \refのラベル補完で、既にlabel定義してあるものがカウンタと\label + 両方が補完候補に出現していたのを修正。またenumerate環境内では + \itemとラベルが重複して候補に現れていたのを修正。 + Emacsの背景色の定義がXリソースに全く無いときの不具合修正 + [prefix] c で AMS-LaTeX の大括弧対の種類を変えられるようにした + [prefix] g で AMS-LaTeX の括弧対間でジャンプできるようにした + 1.70 Emacs21でmake-frameがエラーになることがあるのを回避 font-lock での Recenter が効かなくなるのを修正 (他、細かい修正がほとんど) diff -r c16a10460ce5 -r 1b172d26b55e yatex19.el --- a/yatex19.el Mon Nov 25 09:33:34 2002 +0000 +++ b/yatex19.el Thu May 01 13:38:27 2003 +0000 @@ -1,7 +1,7 @@ ;;; -*- Emacs-Lisp -*- ;;; YaTeX facilities for Emacs 19 -;;; (c )1994-2002 by HIROSE Yuuji.[yuuji@yatex.org] -;;; Last modified Wed May 22 13:55:20 2002 on firestorm +;;; (c )1994-2003 by HIROSE Yuuji.[yuuji@yatex.org] +;;; Last modified Fri Feb 21 01:35:19 2003 on firestorm ;;; $Id$ ;(require 'yatex) @@ -18,15 +18,15 @@ ((boundp 'frame-background-mode) frame-background-mode) ((fboundp 'get-frame-background-mode) (get-frame-background-mode (selected-frame))) - (if (face-background 'default) - (if (> (+ 32768 32768 32768) - (apply '+ - (funcall (if (fboundp 'color-rgb-components) - 'color-rgb-components - 'x-color-values) - (face-background 'default)))) - 'dark - 'light)) + ((face-background 'default) + (if (> (+ 32768 32768 32768) + (apply '+ + (funcall (if (fboundp 'color-rgb-components) + 'color-rgb-components + 'x-color-values) + (face-background 'default)))) + 'dark + 'light)) (t nil))) (defvar YaTeX-mode-menu-map (make-sparse-keymap "YaTeX")) diff -r c16a10460ce5 -r 1b172d26b55e yatexadd.el --- a/yatexadd.el Mon Nov 25 09:33:34 2002 +0000 +++ b/yatexadd.el Thu May 01 13:38:27 2003 +0000 @@ -1,8 +1,8 @@ ;;; -*- Emacs-Lisp -*- ;;; YaTeX add-in functions. -;;; yatexadd.el rev.14 -;;; (c )1991-2000 by HIROSE Yuuji.[yuuji@yatex.org] -;;; Last modified Sat Sep 29 23:17:06 2001 on duke +;;; yatexadd.el rev.15 +;;; (c )1991-2003 by HIROSE Yuuji.[yuuji@yatex.org] +;;; Last modified Mon Mar 17 16:46:01 2003 on serow ;;; $Id$ ;;; @@ -144,7 +144,7 @@ (defun YaTeX:thebibliography () (setq YaTeX-section-name "bibitem") - "") + (concat "{" (read-string "Longest label: ") "}")) ;;; ;;Sample functions for section-type command. @@ -492,9 +492,14 @@ (forward-list 1) (skip-chars-forward " \t\n") ;(setq boundary "[^\\]") + (setq inspoint (point)) (setq boundary (save-excursion - (if (YaTeX-re-search-active-forward "[^\\]" r-escape nil 1) + (if (YaTeX-re-search-active-forward + (concat YaTeX-ec-regexp + "\\(" YaTeX-sectioning-regexp "\\|" + "begin\\|item\\)") + r-escape nil 1) (match-beginning 0) (1- (point)))))) ((looking-at "item\\s ") @@ -506,7 +511,8 @@ (concat YaTeX-ec-regexp "\\(item\\|begin\\|end\\)\\b") r-escape nil 1) (match-beginning 0) - (1- (point)))))) + (1- (point)))) + inspoint boundary)) ((looking-at "bibitem") (setq labelholder "bibitem") ; label holder is bibitem itself (setq boundary @@ -515,7 +521,8 @@ (concat YaTeX-ec-regexp "\\(bibitem\\|end\\)\\b") r-escape nil 1) (match-beginning 0) - (1- (point)))))) + (1- (point)))) + inspoint boundary)) ((string-match YaTeX::ref-mathenv-regexp (setq env (or (YaTeX-inner-environment t) "document"))) (setq mathp t) @@ -526,7 +533,8 @@ (concat YaTeX-ec-regexp "\\(\\\\\\|end{" env "}\\)") r-escape nil 1) (match-beginning 0) - (1- (point)))))) + (1- (point)))) + inspoint boundary)) ((looking-at "footnote\\s *{") (skip-chars-forward "^{") ;move onto `{' (setq boundary @@ -535,11 +543,15 @@ (forward-list 1) (error (error "\\\\footnote at point %s's brace not closed" (point)))) - (1- (point))))) + (1- (point))) + inspoint boundary)) ((looking-at "caption\\|\\(begin\\)") (skip-chars-forward "^{") - (if (match-beginning 1) (forward-list 1)) + ;;;;;;(if (match-beginning 1) (forward-list 1)) + ;; caption can be treated as mathenv, is it right?? + (forward-list 1) ;;(setq boundary (concat YaTeX-ec-regexp "\\(begin\\|end\\)\\b")) + (setq inspoint (point)) (setq boundary (save-excursion (if (YaTeX-re-search-active-forward @@ -566,7 +578,7 @@ (forward-sexp 1) (1- (point)))) ;;else make a label ;(goto-char (match-beginning 0)) - (goto-char boundary) + (goto-char inspoint) (skip-chars-backward " \t\n") (save-excursion (setq newlabel (YaTeX::ref-generate-label))) (delete-region (point) (progn (skip-chars-backward " \t") (point))) @@ -578,7 +590,7 @@ (defvar YaTeX::ref-labeling-regexp-alist '(("\\\\begin{java}{\\([^}]+\\)}" . 1) - ("\\\\elabel{\\([^}]+\\)}" . 1))) + ("\\\\label{\\([^}]+\\)}" . 1))) (defvar YaTeX::ref-labeling-regexp (mapconcat 'car YaTeX::ref-labeling-regexp-alist "\\|")) (defvar YaTeX::ref-mathenv-regexp @@ -614,7 +626,7 @@ (car s)))) YaTeX-sectioning-level)) "\\|") - "\\|caption\\|footnote\\){" + "\\|caption\\(\\[[^]]+\\]\\)?\\|footnote\\){" "\\|\\(begin{\\(" mathenvs "\\|" enums "\\)\\)\\)"))) (regexp (concat "\\(" counter "\\)\\|\\(" YaTeX::ref-labeling-regexp "\\)")) @@ -706,15 +718,21 @@ (skip-chars-backward " \t") (1- (point))) (point-end-of-line))) - x)))) - + x)) + (setq e0 (point-max)))) + ;;else, simple section-type counter ((= (char-after (1- (point))) ?{) (setq label (buffer-substring (match-beginning 0) (progn (forward-char -1) (forward-list 1) (point)))) - (funcall output label match-point)) + (funcall output label match-point) + ;; Skip preceding label if exists + (if (save-excursion + (skip-chars-forward "\t \n") + (looking-at YaTeX::ref-labeling-regexp)) + (setq e0 (match-end 0)))) (t (skip-chars-forward " \t") (setq label (buffer-substring @@ -728,7 +746,10 @@ (1- (point))) (point-end-of-line)))) (funcall output label match-point) - )) + (if (save-excursion + (skip-chars-forward "\t \n") + (looking-at YaTeX::ref-labeling-regexp)) + (setq e0 (match-end 0))))) ) ;;put label buffer ;; ;; if user defined label found @@ -834,9 +855,13 @@ (point))))))))) (setq files (cdr files)))))) +(defvar YaTeX::cite-bibitem-macro-regexp "bibitem\\|harvarditem" + "*Regexp of macro name of bibitem definition") + (defun YaTeX::cite-collect-bibs-internal () "Collect bibentry in the current buffer and print them to standard output." - (let ((ptn (concat YaTeX-ec-regexp "bibitem\\b")) + (let ((ptn (concat YaTeX-ec-regexp + "\\(" YaTeX::cite-bibitem-macro-regexp "\\)\\b")) (pcnt (regexp-quote YaTeX-comment-prefix))) (save-excursion (while (YaTeX-re-search-active-forward ptn pcnt nil t) @@ -884,11 +909,22 @@ (YaTeX::cite-collect-bibs-internal))) ;;Now bbuf holds the list of bibitem (set-buffer bbuf) - (YaTeX::ref argp "\\\\\\(bibitem\\)\\(\\[.*\\]\\)?" "cite")))) - + (YaTeX::ref + argp + (concat "\\\\\\(" + YaTeX::cite-bibitem-macro-regexp + "\\)\\(\\[.*\\]\\)?") + "cite")))) + (t nil))) +;;; for AMS-LaTeX (and YaTeX-use-AMS-LaTeX (fset 'YaTeX::eqref 'YaTeX::ref)) +;;; for Harvard citation style +(fset 'YaTeX::citeasnoun 'YaTeX::cite) +(fset 'YaTeX::possessivecite 'YaTeX::cite) +(fset 'YaTeX::citeyear 'YaTeX::cite) +(fset 'YaTeX::citename 'YaTeX::cite) (defun YaTeX-yatex-buffer-list () (save-excursion diff -r c16a10460ce5 -r 1b172d26b55e yatexenv.el --- a/yatexenv.el Mon Nov 25 09:33:34 2002 +0000 +++ b/yatexenv.el Thu May 01 13:38:27 2003 +0000 @@ -1,8 +1,8 @@ ;;; -*- Emacs-Lisp -*- ;;; YaTeX environment-specific functions. ;;; yatexenv.el -;;; (c ) 1994-1997 by HIROSE Yuuji.[yuuji@yatex.org] -;;; Last modified Thu Jan 18 15:21:26 2001 on buell +;;; (c ) 1994-2003 by HIROSE Yuuji.[yuuji@yatex.org] +;;; Last modified Sun Mar 30 19:25:47 2003 on firestorm ;;; $Id$ ;;; @@ -280,12 +280,11 @@ ;;;###autoload (defun YaTeX-goto-corresponding-leftright () - "Go to corresponding \left or \right. -Note that this function assumes the corresponding \left\right -is on another line." + "Go to corresponding \left or \right." (let ((YaTeX-struct-begin "\\left%1") (YaTeX-struct-end "\\right%1") - (YaTeX-struct-name-regexp "[][(){}\\.|]")) + (YaTeX-struct-name-regexp "[][(){}\\.|]") + (in-leftright-p t)) (YaTeX-goto-corresponding-environment t))) ;;; diff -r c16a10460ce5 -r 1b172d26b55e yatexlib.el --- a/yatexlib.el Mon Nov 25 09:33:34 2002 +0000 +++ b/yatexlib.el Thu May 01 13:38:27 2003 +0000 @@ -2,7 +2,7 @@ ;;; YaTeX and yahtml common libraries, general functions and definitions ;;; yatexlib.el ;;; (c )1994-2002 by HIROSE Yuuji.[yuuji@yatex.org] -;;; Last modified Wed May 22 13:55:31 2002 on firestorm +;;; Last modified Wed Oct 2 23:35:33 2002 on firestorm ;;; $Id$ ;; General variables @@ -30,14 +30,16 @@ (defvar YaTeX-kanji-code-alist (cond ((boundp '*junet*) - (list (cons + (list '(0 . *noconv*) + (cons 1 (if YaTeX-dos (if (boundp '*sjis-dos*) *sjis-dos* *sjis*dos) *sjis*)) '(2 . *junet*) '(3 . *euc-japan*))) (YaTeX-emacs-20 ;;(cdr-safe(assq 'coding-system (assoc "Japanese" language-info-alist))) - (list (cons + (list '(0 . no-conversion) + (cons 1 (cond (YaTeX-dos 'shift_jis-dos) ((member 'shift_jis (coding-system-list)) 'shift_jis-unix) (t 'sjis))) @@ -724,7 +726,7 @@ (cond ((and (string< "19" emacs-version) (not (featurep 'xemacs))) (insert-file-contents file visit beg end)) - ((string-match "unix" (symbol-name system-type)) + ((string-match "unix\\|linux" (symbol-name system-type)) (let ((default-process-coding-system (and (boundp '*noconv*) (list '*noconv*))) (file-coding-system (and (boundp '*noconv*) '*noconv*)) @@ -734,7 +736,7 @@ (or (and (boundp 'shell-command-option) shell-command-option) "-c") - (format "head -c %d | tail -c +%d" end beg)))) + (format "dd bs=1 count=%d | tail -c +%d" end beg)))) (t (insert-file-contents file)))) (defun YaTeX-split-string (str &optional sep null) diff -r c16a10460ce5 -r 1b172d26b55e yatexmth.el --- a/yatexmth.el Mon Nov 25 09:33:34 2002 +0000 +++ b/yatexmth.el Thu May 01 13:38:27 2003 +0000 @@ -1,8 +1,8 @@ ;;; -*- Emacs-Lisp -*- ;;; YaTeX math-mode-specific functions. ;;; yatexmth.el -;;; (c)1993-2000 by HIROSE Yuuji [yuuji@yatex.org] -;;; Last modified Tue Dec 19 11:03:51 2000 on buell +;;; (c)1993-2003 by HIROSE Yuuji [yuuji@yatex.org] +;;; Last modified Sun Mar 30 19:56:00 2003 on firestorm ;;; $Id$ ;;; [Customization guide] @@ -466,6 +466,10 @@ (defun YaTeX-math-get-sign (list) (YaTeX-math-gets (car (cdr-safe (cdr-safe list)))) ) +(defvar YaTeX-math-section-type-regexp + "eqn\\\\\\sw+\\b" + "*Regexp of section-type math-mode macro") + (defun YaTeX-in-math-mode-p () "If current position is supposed to be in LaTeX-math-mode, return t." (or (YaTeX-quick-in-environment-p @@ -477,7 +481,7 @@ "gather*" "aligned*" "gathered" "gathered*" "alignat" "equation*" "cases" "alignat*" "xalignat" "xalignat*" "xxalignat" "xxalignat*")))) - (let*((p (point)) (nest 0) me0 + (let*((p (point)) (nest 0) me0 r (delim (concat YaTeX-sectioning-regexp "\\|^$\\|^\C-l")) (boundary (save-excursion @@ -503,6 +507,11 @@ (setq nest (1- nest)))))) (if (< nest 0) (throw 'open t)))) t) + ((and (setq r (YaTeX-on-section-command-p + YaTeX-math-section-type-regexp)) + (numberp r) + (> r 0)) + t) (t (catch 'dollar (while ;(search-backward "$" boundary t);little bit fast. (YaTeX-re-search-active-backward ;;;;;; Too slow??? @@ -824,8 +833,9 @@ (if (<= move (length (match-string 0))) (match-string 0))))))) -(defun YaTeX-goto-open-paren () - "Jump to the exact position of open parenthesis" +(defun YaTeX-goto-open-paren (&optional jumpto-co) + "Jump to the exact position of open parenthesis. +If optional argument JUMPTO-CO is non-nil, goto corresponding parentheses." (interactive) (let ((paren) (backslash-syntax (char-to-string (char-syntax ?\\)))) @@ -833,14 +843,30 @@ (if (string-match "(\\|{\\|\\[" paren (1- (length paren))) (progn (re-search-forward "(\\|{\\|\\[" (+ (point) (length paren)) t) - (backward-char)) + (backward-char) + (if jumpto-co + (unwind-protect + (progn + (modify-syntax-entry ?\\ " ") + (forward-list) + (backward-char)) + (modify-syntax-entry ?\\ backslash-syntax))) + (point)) (re-search-forward ")\\|}\\|\\]" (+ (point) (length paren)) t) (unwind-protect (progn (modify-syntax-entry ?\\ " ") - (backward-list)) + (backward-list) + (point)) (modify-syntax-entry ?\\ backslash-syntax)))))) +;;;###autoload +(defun YaTeX-goto-corresponding-paren () + "Go to corresponding mathematical parentheses." + (if (YaTeX-on-parenthesis-p) + (YaTeX-goto-open-paren t) + nil)) + (defun YaTeX-change-parentheses () "Change the size of parentheses, braces, and brackets of AMS-LaTeX." (interactive) @@ -855,6 +881,7 @@ (length (+ mod-length paren-length)) ;; length of whole string (big-p t) ;; flag whether new modifier is "[Bb]ig+" or not. size ;; left, big, Big etc. + type ;; parentheses type lr ;; "l" or "r". char newsize newsize-length (backslash-syntax (char-to-string (char-syntax ?\\))) @@ -876,7 +903,7 @@ (while (not newsize) (message (format (concat "Change from %s: " "l(big) L(Big) h(bigg) H(Bigg) " - "r(left-right) n(NONE) ") size)) + "r(left-right) n(NONE) ( { [") size)) (setq char (read-char) newsize (cond ((char-equal char ?l) "\\big") ((char-equal char ?L) "\\Big") @@ -884,28 +911,43 @@ ((char-equal char ?H) "\\Bigg") ((char-equal char ?r) (setq big-p nil) "\\left") + ((memq char '(?\( ?\))) + (setq big-p nil type '("(" . ")")) "") + ((memq char '(?\{ ?\})) + (setq big-p nil type '("\\{" . "\\}")) "") + ((memq char '(?\[ ?\])) + (setq big-p nil type '("[" . "]")) "") ((char-equal char ?n) (setq big-p nil) "") (t nil)) newsize-length (length newsize))) (YaTeX-goto-open-paren) (forward-char) - (delete-region (- (point) length) (- (point) paren-length)) - (backward-char paren-length) + (cond + (type + (delete-region (point) (- (point) paren-length)) + (save-excursion (insert (car type)))) + (t + (delete-region (- (point) length) (- (point) paren-length)) + (backward-char paren-length))) (insert-string newsize) (if big-p (insert ?l)) - (forward-char (1- paren-length)) (unwind-protect (progn (modify-syntax-entry ?\\ " ") (forward-list) (if (string= size "left-right") (setq length (1+ length))) (if (eq char ?r) (setq newsize "\\right")) - (delete-region (- (point) length) (- (point) paren-length)) - (backward-char paren-length) - (insert-string newsize) - (if big-p (insert ?r)) - (forward-char paren-length) + (cond + (type + (delete-region (point) (- (point) paren-length)) + (insert (cdr type))) + (t + (delete-region (- (point) length) (- (point) paren-length)) + (backward-char paren-length) + (insert-string newsize) + (if big-p (insert ?r)) + (forward-char paren-length))) (if (string= lr "l") (backward-list))) (modify-syntax-entry ?\\ backslash-syntax)) t))) diff -r c16a10460ce5 -r 1b172d26b55e yatexprc.el --- a/yatexprc.el Mon Nov 25 09:33:34 2002 +0000 +++ b/yatexprc.el Thu May 01 13:38:27 2003 +0000 @@ -1,8 +1,8 @@ ;;; -*- Emacs-Lisp -*- ;;; YaTeX process handler. ;;; yatexprc.el -;;; (c )1993-2000 by HIROSE Yuuji.[yuuji@yatex.org] -;;; Last modified Sun Dec 31 21:57:44 2000 on firestorm +;;; (c )1993-2003 by HIROSE Yuuji.[yuuji@yatex.org] +;;; Last modified Thu May 1 22:37:31 2003 on firestorm ;;; $Id$ ;(require 'yatex) @@ -386,18 +386,20 @@ (defun YaTeX-get-paper-type () "Search options in header and return a paper type, such as \"a4\", \"a4r\", etc." (save-excursion + (YaTeX-visit-main t) (goto-char (point-min)) - (if (re-search-forward - "^[ \t]*\\\\document\\(style\\|class\\)[ \t]*\\[\\([^]]*\\)\\]" nil t) - (let ((opts (YaTeX-split-string (YaTeX-match-string 2) "[ \t]*,[ \t]*"))) - (concat - (catch 'found-paper - (mapcar (lambda (pair) - (if (member (car pair) opts) - (throw 'found-paper (cdr pair)))) - YaTeX-paper-type-alist) - YaTeX-default-paper-type) - (if (member "landscape" opts) "r" "")))))) + (let ((opts + (if (re-search-forward + "^[ \t]*\\\\document\\(style\\|class\\)[ \t]*\\[\\([^]]*\\)\\]" nil t) + (YaTeX-split-string (YaTeX-match-string 2) "[ \t]*,[ \t]*")))) + (concat + (catch 'found-paper + (mapcar (lambda (pair) + (if (member (car pair) opts) + (throw 'found-paper (cdr pair)))) + YaTeX-paper-type-alist) + YaTeX-default-paper-type) + (if (member "landscape" opts) "r" ""))))) (defvar YaTeX-preview-command-history nil "Holds minibuffer history of preview command.") diff -r c16a10460ce5 -r 1b172d26b55e yatexsec.el --- a/yatexsec.el Mon Nov 25 09:33:34 2002 +0000 +++ b/yatexsec.el Thu May 01 13:38:27 2003 +0000 @@ -1,8 +1,8 @@ ;;; -*- Emacs-Lisp -*- ;;; YaTeX sectioning browser. ;;; yatexsec.el -;;; (c ) 1994,1998,1999 by HIROSE Yuuji [yuuji@yatex.org] -;;; Last modified Mon Dec 25 19:18:36 2000 on firestorm +;;; (c ) 1994,1998,1999,2003 by HIROSE Yuuji [yuuji@yatex.org] +;;; Last modified Wed Mar 5 13:19:11 2003 on firestorm ;;; $Id$ (defvar YaTeX-sectioning-level @@ -115,20 +115,35 @@ (defvar YaTeX-sectioning-buffer-parent nil) (defun YaTeX-sectioning-buffer-jump-internal (&optional keep) - (let (ptn (p (point))) ;save-excursion is NG because - (beginning-of-line) ;this function should switch buffer + (let ((p (point)) ;save-excursion is NG because + ptn ln) ;this function should switch buffer + (beginning-of-line) (if (re-search-forward YaTeX-sectioning-regexp) - (progn (setq ptn (buffer-substring - (1- (match-beginning 0)) - (progn (skip-chars-forward "^}") (1+ (point))))) - (goto-char p) - (YaTeX-showup-buffer YaTeX-sectioning-buffer-parent nil t) - (goto-char (point-max)) - (search-backward ptn) - (if keep (goto-buffer-window YaTeX-sectioning-buffer)) - (current-buffer)) - nil)) -) + (progn + (save-restriction + (narrow-to-region (point-beginning-of-line) (point-end-of-line)) + (setq ptn (buffer-substring + (1- (match-beginning 0)) + (progn (skip-chars-forward "^}") (1+ (point)))) + ln (buffer-substring + (progn (search-forward "line:") (match-end 0)) + (progn (skip-chars-forward "0-9") (point))))) + (goto-char p) + (YaTeX-showup-buffer YaTeX-sectioning-buffer-parent nil t) + (or + (and ln (string< "" ln) + (progn + (goto-line (max 1 (1- (string-to-int ln)))) + (and + (search-forward ptn nil t) + (goto-char (match-beginning 0))))) + (progn + (goto-char (point-max)) + (search-backward ptn))) + (if keep (goto-buffer-window YaTeX-sectioning-buffer)) + (current-buffer)) + nil))) + (defun YaTeX-sectioning-buffer-jump (&optional keep) "Goto corresponding sectioning unit with current line in the next window. If optional argument KEEP is non-nil, only shows the line."