emacs: что делает C-c% в auctex и как мне заставить его вести себя лучше? - PullRequest
2 голосов
/ 24 ноября 2010

C-c % должен быть ярлыком в режиме emacs auctex для комментирования. (Также есть C-c ;, который комментирует отмеченную область, но этот работает ). Теперь иногда он комментирует одну строку, иногда он комментирует строку и те, что над ней. Кажется, он не очень последовательный.

Что я действительно хотел бы сделать, так это закомментировать строку, в которой находится курсор, если только он не находится в начале или конце тега, в этом случае закомментировать всю среду. (На самом деле, я бы согласился просто понять немного странное поведение макроса комментария ...)

1 Ответ

3 голосов
/ 25 ноября 2010

C-c % работает TeX-comment-or-uncomment-paragraph.Что именно здесь считается абзацем, см. руководство :

Команда: TeX-comment-or-uncomment-абзац
(C-c %) Добавить или удалить % в начале каждой строки в текущем абзаце.При удалении символов % абзац считается состоящим из всех предыдущих и последующих строк, начиная с % и до первой строки без комментариев.


Вот функция комментирования, котораяделает более или менее то, что вы хотите.Раскомментирование среды работает только в том случае, если LaTeX-syntactic-comments равно t (и даже не всегда очень хорошо).

(defun LaTeX-comment-environment-or-line (arg)
  "Comment or uncomment the current line.
If the current line is the \\begin or \\end line of an environment, comment
or uncomment the whole environment."
  (interactive "*P")
  (save-match-data
    (save-excursion
      (beginning-of-line)
      (cond
       ((looking-at (concat "\\s-*\\(" TeX-comment-start-regexp "\\)?\\s-*"
                            (regexp-quote TeX-esc) "begin"))
        (let ((begin (point)))
          (goto-char (match-end 0))
          (LaTeX-find-matching-end)
          (TeX-comment-or-uncomment-region begin (point) arg)))
       ((looking-at (concat "\\s-*\\(" TeX-comment-start-regexp "\\)?\\s-*"
                            (regexp-quote TeX-esc) "end"))
        (let ((end (save-excursion (end-of-line) (point))))
          (LaTeX-find-matching-begin)
          (beginning-of-line)
          (TeX-comment-or-uncomment-region (point) end arg)))
       (t
        (TeX-comment-or-uncomment-region
         (point) (save-excursion (end-of-line) (point)) arg))))))
...