Mercurial > hgrepos > hgweb.cgi > yatex
changeset 168:191cffccc912 dev
Replace all \ref{LABEL} when changing \label{LABEL}.
Move YaTeX-yatex-buffer-list to yatexlib.el
author | yuuji@gentei.org |
---|---|
date | Wed, 16 Feb 2011 20:08:05 +0900 |
parents | d891d7c6cd8e |
children | 0cb6c6a78e9e |
files | yatex.el yatex.new yatexadd.el yatexlib.el |
diffstat | 4 files changed, 117 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/yatex.el Mon Feb 14 14:50:33 2011 +0900 +++ b/yatex.el Wed Feb 16 20:08:05 2011 +0900 @@ -1,15 +1,15 @@ ;;; -*- Emacs-Lisp -*- ;;; Yet Another tex-mode for emacs - //野鳥// -;;; yatex.el rev. 1.74.3 +;;; yatex.el rev. 1.74.4 ;;; (c)1991-2011 by HIROSE Yuuji.[yuuji@yatex.org] -;;; Last modified Mon Feb 14 12:48:33 2011 on firestorm +;;; Last modified Wed Feb 16 17:23:52 2011 on firestorm ;;; $Id$ ;;; The latest version of this software is always available at; ;;; http://www.yatex.org/ (require 'comment) (require 'yatexlib) -(defconst YaTeX-revision-number "1.74.3" +(defconst YaTeX-revision-number "1.74.4" "Revision number of running yatex.el") ;---------- Local variables ---------- @@ -1528,6 +1528,29 @@ (set-marker e nil)) )))) +(defvar YaTeX-refcommand-def-regexp-default + "label\\|bibitem") +(defvar YaTeX-refcommand-def-regexp-private nil + "*Regexp of defining label commands") +(defvar YaTeX-refcommand-def-regexp + (concat (if YaTeX-refcommand-def-regexp-private + (concat YaTeX-refcommand-def-regexp-private "\\|")) + YaTeX-refcommand-def-regexp-default)) + +(defvar YaTeX-refcommand-ref-regexp-default + "\\(page\\|eq\\|fig\\)?ref\\|cite") +(defvar YaTeX-refcommand-ref-regexp-private nil + "*Regexp of referring label commands") +(defvar YaTeX-refcommand-ref-regexp + (concat (if YaTeX-refcommand-ref-regexp-private + (concat YaTeX-refcommand-ref-regexp-private "\\|")) + YaTeX-refcommand-ref-regexp-default)) + +(defvar YaTeX-refcommand-regexp + (concat YaTeX-refcommand-def-regexp + "\\|" YaTeX-refcommand-ref-regexp) + "Regexp of label defining/referring command name.") + (defun YaTeX-goto-corresponding-label (reverse &optional otherwin) "Jump to corresponding \\label{} and \\ref{} or \\cite and \\bibitem. The default search direction depends on the command at the cursor position. @@ -1543,7 +1566,7 @@ If optional second argument OTHERWIN is non-nil, move to other window." (let ((scmd "") label direc string blist (p (point)) (cb (current-buffer)) - (refcommands "label\\|\\(page\\|eq\\)?ref\\|cite\\|bibitem") + (refcommands YaTeX-refcommand-regexp) (foundmsg (format "Type %s %c to return to original position." (key-description (car
--- a/yatex.new Mon Feb 14 14:50:33 2011 +0900 +++ b/yatex.new Wed Feb 16 20:08:05 2011 +0900 @@ -5,7 +5,8 @@ [prefix] t e でポイント位置を含む環境か数式環境をタイプセット。 M-C-SPC で環境だけでなく数式環境もマークする。 [prefix] t d でタイプセッタ起動成功のあと dvipdfmx を起動。 - \label{}でラベル名を入れたときは \ref{NAME} を自動的にkill-ring追加。 + \label{}でラベル名を入れたときは \ref{NAME} を自動的にkill-ringに追加。 + \bibitem{}を入れたときは \cite{TAG} を自動的にkill-ringに追加。 === yahtml === [prefix] t ブラウザメニューに「n:新規ページ作成」を追加(実験)。 [prefix] t j のlintコマンドを <!-- #lint CmdLine --> 行で指定可。
--- a/yatexadd.el Mon Feb 14 14:50:33 2011 +0900 +++ b/yatexadd.el Wed Feb 16 20:08:05 2011 +0900 @@ -2,7 +2,7 @@ ;;; YaTeX add-in functions. ;;; yatexadd.el rev.19 ;;; (c)1991-2011 by HIROSE Yuuji.[yuuji@yatex.org] -;;; Last modified Mon Feb 14 14:48:30 2011 on firestorm +;;; Last modified Wed Feb 16 19:57:26 2011 on firestorm ;;; $Id$ ;;; @@ -742,7 +742,7 @@ "Alist of labeling regexp vs. its group number points to label string. This alist is used in \\ref's argument's completion.") (defvar YaTeX::ref-labeling-regexp-alist-private nil - "*Private extesion to YaTeX::ref-labeling-regexp-alist. + "*Private extension to YaTeX::ref-labeling-regexp-alist. See the documetation of YaTeX::ref-labeling-regexp-alist.") (defvar YaTeX::ref-labeling-regexp-alist (append YaTeX::ref-labeling-regexp-alist-default @@ -1119,12 +1119,86 @@ (bury-buffer YaTeX-label-buffer))) label))))) +(defun YaTeX::label-rename-refs (old new &optional def ref) + "Rename reference tag from OLD to NEW. +Optional arguments DEF and REF specify defining command and +referring command respectively. +--------------------------------------------------------- +CONTROL KEYS - キーの説明 + y Replace 置換する + n Do not replace 置換しない + ! Replace All w/o query 残る全部を確認なしで置換 + r Enter Recursive-edit 再帰編集モードへ + q Quit from replacing ここまでで置換をやめる + +Don't forget to exit from recursive edit by typing \\[exit-recursive-edit] +再帰編集に入ったら \\[exit-recursive-edit] で抜け忘れなきよう。" + (save-window-excursion + (catch 'exit + (let*((bufs (YaTeX-yatex-buffer-list)) buf b e + (oldptn (regexp-quote old)) + (sw (selected-window)) + (ptn (concat + "\\(" YaTeX-refcommand-ref-regexp "\\)" + "\\s *{" oldptn "}")) + (useov (fboundp 'make-overlay)) ov + (qmsg "Replace to `%s'? [yn!rq]") + continue ch) + (while bufs + (set-buffer (setq buf (car bufs))) + (save-excursion + (goto-char (point-min)) + (while (re-search-forward ptn nil t) + (goto-char (match-end 1)) + (skip-chars-forward " \t\n{") + (unwind-protect + (if (and + (looking-at oldptn) + (setq b (match-beginning 0) + e (match-end 0)) + (or continue + (catch 'query + (if useov + (if ov (move-overlay ov b e) + (overlay-put + (setq ov (make-overlay b e)) + 'face 'isearch))) + (switch-to-buffer buf) + (while t + (message qmsg new) + (setq ch (read-char)) + (cond + ((= ch ?q) (throw 'exit t)) + ((= ch ?r) + (message + "Exit recursive-edit by `%s'" + (key-description + (where-is-internal + 'exit-recursive-edit '(keymap) t))) + (sleep-for 2) + (recursive-edit)) + ((= ch ?y) (throw 'query t)) + ((= ch ?!) (throw 'query (setq continue t))) + ((= ch ??) + (describe-function + 'YaTeX::label-rename-refs) + (select-window (get-buffer-window "*Help*")) + (search-forward "----") + (forward-line 1) + (set-window-start (selected-window) (point)) + (sit-for 0) + (select-window sw)) + ((= ch ?n) (throw 'query nil))))))) + (replace-match new)) + (and ov (delete-overlay ov))))) + (setq bufs (cdr bufs))))))) + (defun YaTeX::label (argp &optional labname refname) "Read label name and return it with copying \\ref{LABEL-NAME} to kill-ring." (cond ((= argp 1) - (let*((dlab (if (boundp (intern-soft "old")) - old ;if called via YaTeX-change-section (tricky...) + (let*((chmode (boundp (intern-soft "old"))) + (dlab (if chmode old ;if called via YaTeX-change-section (tricky...) (YaTeX::ref-default-label))) (label (read-string (format "New %s name: " (or labname "label")) @@ -1137,7 +1211,8 @@ "をkill-ringに入れました。yank(%s)で取り出せます。" " is stored into kill-ring. Paste it by yank(%s)."))) (kill-new refstr) - (message (concat "`%s'" msg) refstr key))) + (message (concat "`%s'" msg) refstr key) + (if chmode (YaTeX::label-rename-refs old label)))) label)))) @@ -1322,13 +1397,6 @@ (fset 'YaTeX::citep 'YaTeX::cite) (fset 'YaTeX::citet 'YaTeX::cite) -(defun YaTeX-yatex-buffer-list () - (save-excursion - (delq nil (mapcar (function (lambda (buf) - (set-buffer buf) - (if (eq major-mode 'yatex-mode) buf))) - (buffer-list))))) - (defun YaTeX-select-other-yatex-buffer () "Select buffer from all yatex-mode's buffers interactivelly." (interactive)
--- a/yatexlib.el Mon Feb 14 14:50:33 2011 +0900 +++ b/yatexlib.el Wed Feb 16 20:08:05 2011 +0900 @@ -2,7 +2,7 @@ ;;; YaTeX and yahtml common libraries, general functions and definitions ;;; yatexlib.el ;;; (c)1994-2009 by HIROSE Yuuji.[yuuji@yatex.org] -;;; Last modified Sat Sep 11 11:40:11 2010 on firestorm +;;; Last modified Wed Feb 16 19:58:33 2011 on firestorm ;;; $Id$ ;; General variables @@ -665,6 +665,13 @@ (self-insert-command 1) (YaTeX-minibuffer-complete))) +(defun YaTeX-yatex-buffer-list () + (save-excursion + (delq nil (mapcar (function (lambda (buf) + (set-buffer buf) + (if (eq major-mode 'yatex-mode) buf))) + (buffer-list))))) + (defun foreach-buffers (pattern job) "For each buffer which matches with PATTERN, do JOB." (let ((list (buffer-list)))