mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-30 08:09:04 +00:00
Fix auto-filling in Texinfo mode
This fixes auto-filling in Texinfo buffers. It was broken by the
fix to bug#49558, which made M-q fill over-long @noindent lines by
refraining from customizing 'paragraph-separate' in Texinfo mode.
The underlying problem here is that 'auto-fill-mode' doesn't call
mode-specific filling functions, but does its job by itself, and
depends on 'forward-paragraph' to find the beginning of the
paragraph as appropriate for calculation of 'fill-prefix', and a
different value of 'paragraph-separate' broke that. As a side
effect, the change below also changes paragraph-movement commands
in Texinfo back to how they behaved prior to that bugfix, but I
don't see why the paragraph-movement behavior introduced by that
fix made more sense. Try to move through a series of
@-directives, like a paragraph preceded by several @cindex
entries, and you will see the inconsistencies. In any case, the
adverse effects of that fix on auto-filling is unacceptable.
* lisp/textmodes/texinfo.el (fill-paragraph-separate): New
variable.
(texinfo-mode): Set 'fill-paragraph-separate' to the default value
of 'paragraph-separate'. Customize 'paragraph-separate' to the
Texinfo-specific value, as it was before commit dde591571a
.
(texinfo--fill-paragraph): Bind 'paragraph-separate' to the value
of 'fill-paragraph-separate', to keep 'M-q' happy.
This commit is contained in:
parent
4bda962734
commit
7acae22f42
@ -409,6 +409,8 @@ REPORT-FN is the callback function."
|
|||||||
|
|
||||||
;;; Texinfo mode
|
;;; Texinfo mode
|
||||||
|
|
||||||
|
(defvar fill-paragraph-separate nil)
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(define-derived-mode texinfo-mode text-mode "Texinfo"
|
(define-derived-mode texinfo-mode text-mode "Texinfo"
|
||||||
"Major mode for editing Texinfo files.
|
"Major mode for editing Texinfo files.
|
||||||
@ -482,6 +484,10 @@ value of `texinfo-mode-hook'."
|
|||||||
"\\)\\>"))
|
"\\)\\>"))
|
||||||
(setq-local require-final-newline mode-require-final-newline)
|
(setq-local require-final-newline mode-require-final-newline)
|
||||||
(setq-local indent-tabs-mode nil)
|
(setq-local indent-tabs-mode nil)
|
||||||
|
;; This is used in 'texinfo--fill-paragraph'.
|
||||||
|
(setq-local fill-paragraph-separate (default-value 'paragraph-separate))
|
||||||
|
(setq-local paragraph-separate
|
||||||
|
(concat "@[a-zA-Z]*[ \n]\\|" paragraph-separate))
|
||||||
(setq-local paragraph-start (concat "@[a-zA-Z]*[ \n]\\|"
|
(setq-local paragraph-start (concat "@[a-zA-Z]*[ \n]\\|"
|
||||||
paragraph-start))
|
paragraph-start))
|
||||||
(setq-local fill-paragraph-function 'texinfo--fill-paragraph)
|
(setq-local fill-paragraph-function 'texinfo--fill-paragraph)
|
||||||
@ -536,7 +542,13 @@ value of `texinfo-mode-hook'."
|
|||||||
|
|
||||||
(defun texinfo--fill-paragraph (justify)
|
(defun texinfo--fill-paragraph (justify)
|
||||||
"Function to fill a paragraph in `texinfo-mode'."
|
"Function to fill a paragraph in `texinfo-mode'."
|
||||||
(let ((command-re "\\(@[a-zA-Z]+\\)[ \t\n]"))
|
(let ((command-re "\\(@[a-zA-Z]+\\)[ \t\n]")
|
||||||
|
;; Kludge alert: we override paragraph-separate here because
|
||||||
|
;; that is needed for filling @noindent and similar lines.
|
||||||
|
;; The default Texinfo-specific paragraph-separate value,
|
||||||
|
;; OTOH, is needed for auto-fill-mode, which doesn't call
|
||||||
|
;; mode-specific functions.
|
||||||
|
(paragraph-separate fill-paragraph-separate))
|
||||||
(catch 'no-fill
|
(catch 'no-fill
|
||||||
(save-restriction
|
(save-restriction
|
||||||
;; First check whether we're on a command line that can be
|
;; First check whether we're on a command line that can be
|
||||||
|
Loading…
Reference in New Issue
Block a user