branch: externals/auctex
commit 2a642a45814b57243a6c78aa876211175afc992e
Author: Arash Esbati <[email protected]>
Commit: Arash Esbati <[email protected]>
Add support for ChangeLog entries for LaTeX files
* tex.el (TeX-current-defun-name): New function returning the name
of current sectioning command when `C-x 4 a' is invoked.
* latex.el (LaTeX-common-initialization): Set a local version
`add-log-current-defun-function' to `TeX-current-defun-name'.
---
latex.el | 8 ++++++--
tex.el | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
2 files changed, 58 insertions(+), 3 deletions(-)
diff --git a/latex.el b/latex.el
index 898eec8..6a96cb4 100644
--- a/latex.el
+++ b/latex.el
@@ -1,6 +1,6 @@
;;; latex.el --- Support for LaTeX documents.
-;; Copyright (C) 1991, 1993-2018 Free Software Foundation, Inc.
+;; Copyright (C) 1991, 1993-2019 Free Software Foundation, Inc.
;; Maintainer: [email protected]
;; Keywords: tex
@@ -6516,7 +6516,11 @@ function would return non-nil and `(match-string 1)'
would return
;; emacs 24.4.
(when (and LaTeX-electric-left-right-brace
(boundp 'electric-pair-mode))
- (set (make-local-variable 'electric-pair-mode) nil)))
+ (set (make-local-variable 'electric-pair-mode) nil))
+
+ ;; Initialization of `add-log-current-defun-function':
+ (set (make-local-variable 'add-log-current-defun-function)
+ #'TeX-current-defun-name))
(defun LaTeX-imenu-create-index-function ()
"Imenu support function for LaTeX."
diff --git a/tex.el b/tex.el
index f469a6c..6c2cbb6 100644
--- a/tex.el
+++ b/tex.el
@@ -1,6 +1,6 @@
;;; tex.el --- Support for TeX documents.
-;; Copyright (C) 1985-1987, 1991, 1993-2018 Free Software Foundation, Inc.
+;; Copyright (C) 1985-1987, 1991, 1993-2019 Free Software Foundation, Inc.
;; Maintainer: [email protected]
;; Keywords: tex
@@ -6575,6 +6575,57 @@ Used as function for validating a variable's
`safe-local-variable' property."
(setq lst (cdr lst)))
all-strings)))
+;; add-log.el: This function is a variation of
+;; `tex-current-defun-name' defined in `tex-mode.el'. In `latex.el',
+;; the variable `add-log-current-defun-function' is set to this
+;; function.
+(defun TeX-current-defun-name ()
+ "Return the name of the TeX section/paragraph/chapter at point, or nil."
+ (save-excursion
+ (let (s1 e1 s2 e2)
+ ;; If we are now precisely at the beginning of a sectioning
+ ;; command, move forward and make sure `re-search-backward'
+ ;; finds this one rather than the previous one:
+ (or (eobp) (progn
+ (when (looking-at-p "\\\\")
+ (forward-char))
+ (unless (eolp)
+ (forward-sexp))))
+ ;; Search backward for sectioning command. If
+ ;; `LaTeX-section-label' is buffer-local, assume that a style
+ ;; has changed the value and recalculate the string. Otherwise
+ ;; take the standard one:
+ (when (re-search-backward
+ (if (local-variable-p 'LaTeX-section-label)
+ (concat (regexp-opt
+ (remove "part" (mapcar #'car LaTeX-section-label)))
+ "\\*?")
+ "\\\\\\(sub\\)*\\(section\\|paragraph\\|chapter\\)\\*?")
+ nil t)
+ ;; Skip over the backslash:
+ (setq s1 (1+ (point)))
+ ;; Skip over the sectioning command, incl. the *:
+ (setq e1 (goto-char (match-end 0)))
+ ;; Skip over the optional argument, if any:
+ (when (looking-at-p "[ \t]*\\[")
+ (forward-sexp))
+ ;; Skip over any chars until the mandatory argument:
+ (skip-chars-forward "^{")
+ ;; Remember the points for the mandatory argument:
+ (setq s2 (point))
+ (setq e2 (progn (forward-sexp)
+ (point)))
+ ;; Now pick the content: For one-line title, return it
+ ;; incl. the closing brace. For multi-line, return the first
+ ;; line of the mandatory argument incl. ellipsis and a brace;
+ (concat
+ (buffer-substring-no-properties s1 e1)
+ (buffer-substring-no-properties
+ (goto-char s2)
+ (min (line-end-position) e2))
+ (when (> e2 (line-end-position))
+ (concat "..." TeX-grcl)))))))
+
(provide 'tex)
;; Local Variables: