[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug-AUCTeX] 2014-07-13; Requests for the mark management improvements
From: |
Ikumi Keita |
Subject: |
[Bug-AUCTeX] 2014-07-13; Requests for the mark management improvements |
Date: |
Thu, 02 Oct 2014 17:26:46 +0900 |
Remember to cover the basics, that is, what you expected to happen and
what in fact did happen.
Be sure to consult the FAQ section in the manual before submitting
a bug report. In addition check if the bug is reproducable with an
up-to-date version of AUCTeX. So please upgrade to the version
available from http://www.gnu.org/software/auctex/ if your
installation is older than the one available from the web site.
If the bug is triggered by a specific (La)TeX file, you should try
to produce a minimal sample file showing the problem and include it
in your report.
Your bug report will be posted to the AUCTeX bug reporting list.
------------------------------------------------------------------------
(1) The mark position is not recorded in mark-ring when using C-c .
(LaTeX-mark-environment).
This is inconvenient when I plan to go back to the marked position
afterward.
Example:
1. Open the following file with AUCTeX.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass{article}
\begin{document}
\begin{itemize}
\item abc
\item MARK HERE
\item xyz
\end{itemize}
\end{document}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% End:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2. Put the point on the text "MARK HERE" and type C-SPC.
3. Type C-c . to cover the itemize environment with a region.
4. Type C-u C-SPC several times. You cannot go back to the position
"MARK HERE".
The reason is that LaTeX-mark-environment uses set-mark, not
push-mark. Considering that the doc string of set-mark tells
to avoid using set-mark, I propose the attached patch-1 to replace
set-mark with push-mark.
Similar issue seems to apply for ConTeXt-mark-environment in
context.el and Texinfo-mark-environment, Texinfo-mark-section in
tex-info.el so the patch-1 includes fixes for them, too.
(2) TeX-insert-dollar now has a nice feature that repeating type of `$'
toggles between inline equation, display equation, and no equation
if TeX-electric-math is properly set up. I have a question about
the management of the mark with respect to that toggle.
--- Quote from TeX-insert-dollar in tex.el ----------------------------
(cond
;; $...$ to $$...$$
((and (eq last-command 'TeX-insert-dollar)
(re-search-forward "\\=\\$\\([^$][^z-a]*[^$]\\)\\$" (mark) t))
(replace-match "$$\\1$$")
(push-mark (match-beginning 0) t))
;; \(...\) to \[...\]
((and (eq last-command 'TeX-insert-dollar)
(re-search-forward "\\=\\\\(\\([^z-a]*\\)\\\\)" (mark) t))
(replace-match "\\\\[\\1\\\\]")
(push-mark (match-beginning 0) t))
;; Strip \[...\] or $$...$$
((and (eq last-command 'TeX-insert-dollar)
(or (re-search-forward "\\=\\\\\\[\\([^z-a]*\\)\\\\\\]" (mark) t)
(re-search-forward "\\=\\$\\$\\([^z-a]*\\)\\$\\$" (mark) t)))
(replace-match "\\1")
(push-mark (match-beginning 0) t))
(t
-----------------------------------------------------------------------
Here push-mark is called every time for a toggle. They repeat to
save the mark position in mark-ring, which results in mark-ring
populated with duplicated markers with the same position like this:
(#<marker at 45 in abc.tex> #<marker at 45 in abc.tex> #<marker at 42 in
abc.tex> #<marker at 42 in abc.tex> #<marker at 42 in abc.tex> #<marker at 42
in abc.tex> #<marker at 42 in abc.tex> #<marker at 42 in abc.tex>)
Is this an intended behaviour? If not so, I propose to replace
push-mark with just goto-char like in the attached patch-2.
(Although looking-at should be used instead of re-search-forward in the
above quoted portion for code readability, I don't touch those lines
here.)
Emacs : GNU Emacs 24.3.1 (x86_64-unknown-freebsd10.0, GTK+ Version 3.8.8)
of 2014-08-12 on freebsd.vmware
Package: 2014-07-13
current state:
==============
(setq
AUCTeX-date "2014-07-13"
window-system 'x
LaTeX-version "2e"
TeX-style-path '("/usr/local/var/auctex" "/home/keita/elisp/auctex/style"
"/home/keita/.emacs.d/auctex/auto"
"/home/keita/.emacs.d/auctex/style" "auto" "style")
TeX-auto-save nil
TeX-parse-self t
TeX-master t
TeX-command-list '(("PDF" "dvipdfmx -C 2 %d" TeX-run-command t t :help
"Generate PDF file")
("jTeX" "%(PDF)jtex %`%S%(PDFout)%(mode)%' %t" TeX-run-TeX
nil (plain-tex-mode) :help "Run NTT jTeX")
("jLaTeX" "%(PDF)jlatex %`%S%(PDFout)%(mode)%' %t"
TeX-run-TeX nil (latex-mode) :help "Run NTT jLaTeX")
("pTeX" "%(PDF)ptex %(kanjiopt)%`%S%(PDFout)%(mode)%' %t"
TeX-run-TeX nil (plain-tex-mode) :help "Run ASCII pTeX")
("pLaTeX"
"%(PDF)platex %(kanjiopt)%`%S%(PDFout)%(mode)%' %t"
TeX-run-TeX nil (latex-mode) :help "Run ASCII pLaTeX")
("Mendex" "mendex %(mendexkopt)%s" TeX-run-command nil t
:help "Create index file with mendex")
("jBibTeX" "jbibtex %s" TeX-run-BibTeX nil t :help
"Run jBibTeX")
("pBibTeX" "pbibtex %(kanjiopt)%s" TeX-run-BibTeX nil t
:help "Run pBibTeX")
("-" "" ignore nil t)
("TeX"
"%(PDF)%(tex) %(extraopts) %`%S%(PDFout)%(mode)%' %t"
TeX-run-TeX nil (plain-tex-mode ams-tex-mode texinfo-mode)
:help "Run plain TeX")
("LaTeX" "%`%l%(mode)%' %t" TeX-run-TeX nil
(latex-mode doctex-mode) :help "Run LaTeX")
("Makeinfo" "makeinfo %(extraopts) %t" TeX-run-compile nil
(texinfo-mode) :help "Run Makeinfo with Info output")
("Makeinfo HTML" "makeinfo %(extraopts) --html %t"
TeX-run-compile nil (texinfo-mode) :help
"Run Makeinfo with HTML output")
("AmSTeX"
"%(PDF)amstex %(extraopts) %`%S%(PDFout)%(mode)%' %t"
TeX-run-TeX nil (ams-tex-mode) :help "Run AMSTeX")
("ConTeXt"
"texexec --once --texutil %(extraopts) %(execopts)%t"
TeX-run-TeX nil (context-mode) :help "Run ConTeXt once")
("ConTeXt Full" "texexec %(extraopts) %(execopts)%t"
TeX-run-TeX nil (context-mode) :help
"Run ConTeXt until completion")
("BibTeX" "%(bibtex) %s" TeX-run-BibTeX nil t :help
"Run BibTeX")
("Biber" "biber %s" TeX-run-Biber nil t :help "Run Biber")
("View" "%V" TeX-run-discard-or-function t t :help
"Run Viewer")
("Print" "%p" TeX-run-command t t :help "Print the file")
("Queue" "%q" TeX-run-background nil t :help
"View the printer queue" :visible TeX-queue-command)
("File" "%(o?)dvips %d -o %f " TeX-run-command t t :help
"Generate PostScript file")
("Index" "%(makeindex) %s" TeX-run-command nil t :help
"Create index file")
("Xindy" "texindy %s" TeX-run-command nil t :help
"Run xindy to create index file")
("Check" "lacheck %s" TeX-run-compile nil (latex-mode)
:help "Check LaTeX file for correctness")
("ChkTeX" "chktex -v6 %s" TeX-run-compile nil (latex-mode)
:help "Check LaTeX file for common mistakes")
("Spell" "(TeX-ispell-document \"\")" TeX-run-function nil
t :help "Spell-check the document")
("Clean" "TeX-clean" TeX-run-function nil t :help
"Delete generated intermediate files")
("Clean All" "(TeX-clean t)" TeX-run-function nil t :help
"Delete generated intermediate and output files")
("Other" "" TeX-run-command t t :help
"Run an arbitrary command")
)
)
patch-1
Description: replace set-mark with push-mark
patch-2
Description: replace push-mark with goto-char
- [Bug-AUCTeX] 2014-07-13; Requests for the mark management improvements,
Ikumi Keita <=