bug-auctex
[Top][All Lists]
Advanced

[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")
                    )
 )

Attachment: patch-1
Description: replace set-mark with push-mark

Attachment: patch-2
Description: replace push-mark with goto-char


reply via email to

[Prev in Thread] Current Thread [Next in Thread]