[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#44647: 27.1.50; `bibtex-contline-indentation' doesn't work as file l
From: |
Teemu Likonen |
Subject: |
bug#44647: 27.1.50; `bibtex-contline-indentation' doesn't work as file local variable |
Date: |
Sun, 15 Nov 2020 11:39:59 +0200 |
* 2020-11-14 23:27:41+02, Teemu Likonen wrote:
> * 2020-11-14 23:18:16+02, Teemu Likonen wrote:
>> Variable bibtex-contline-indentation does not work as file local
>> variable. The reason is that bibtex-mode command initializes variable
>> fill-prefix before the possible file local variable is available. It
>> gets always the global value of bibtex-contline-indentation.
>>
>> This can be fixed by locally let-binding fill-prefix every time in the
>> relevant filling function. Patch for that is attached.
>
> See: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=44647
I'll add one example. Currently if we want to use file or directory
local variable to define bibtex indentation we must do use variable
bibtex-text-indentation for normal field value indentation and then use
fill-prefix with spaces to define the indentation for continuation
lines:
;; .dir-locals.el
((bibtex-mode . ((bibtex-text-indentation . 20)
(fill-prefix . " ")))) ; 21 spaces
Quite obviously more user-friendly way would be this:
;; .dir-locals.el
((bibtex-mode . ((bibtex-text-indentation . 20)
(bibtex-contline-indentation . 21))))
My patch does this. It let-binds fill-prefix every time and initializes
its value by using the (possibly buffer local) value of
bibtex-contline-indentation.
Here is inline version of the patch so that it is easier to read in
debbugs.gnu.org page.
From a776cae4fcd34987e30b6eab3df45bd2ae66fbd9 Mon Sep 17 00:00:00 2001
From: Teemu Likonen <tlikonen@iki.fi>
Date: Sat, 14 Nov 2020 22:53:18 +0200
Subject: [PATCH] Make `bibtex-contline-indentation' work as file local
variable
* lisp/textmodes/bibtex.el (bibtex-mode): Don't make fill-prefix a
buffer local variable. It would use the global value, not possible
file local variable.
* lisp/textmodes/bibtex.el (bibtex-fill-field-bounds): Let-bind
fill-prefix variable locally (and dynamically) for use with filling
bibtex fields. The variable is initialized every time by using the
current value of bibtex-contline-indentation variable.
---
lisp/textmodes/bibtex.el | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/lisp/textmodes/bibtex.el b/lisp/textmodes/bibtex.el
index fcf63ed5ec..151dca6fab 100644
--- a/lisp/textmodes/bibtex.el
+++ b/lisp/textmodes/bibtex.el
@@ -3442,8 +3442,6 @@ bibtex-mode
(set (make-local-variable 'defun-prompt-regexp) "^[ \t]*@[[:alnum:]]+[ \t]*")
(set (make-local-variable 'outline-regexp) "[ \t]*@")
(set (make-local-variable 'fill-paragraph-function) #'bibtex-fill-field)
- (set (make-local-variable 'fill-prefix)
- (make-string (+ bibtex-entry-offset bibtex-contline-indentation) ?\s))
(set (make-local-variable 'font-lock-defaults)
'(bibtex-font-lock-keywords
nil t ((?$ . "\"")
@@ -4902,7 +4900,10 @@ bibtex-fill-field-bounds
"Fill BibTeX field delimited by BOUNDS.
If JUSTIFY is non-nil justify as well.
If optional arg MOVE is non-nil move point to end of field."
- (let ((end-field (copy-marker (bibtex-end-of-field bounds))))
+ (let ((end-field (copy-marker (bibtex-end-of-field bounds)))
+ (fill-prefix (make-string (+ bibtex-entry-offset
+ bibtex-contline-indentation)
+ ?\s)))
(if (not justify)
(goto-char (bibtex-start-of-text-in-field bounds))
(goto-char (bibtex-start-of-field bounds))
--
2.20.1
--
/// Teemu Likonen - .-.. https://www.iki.fi/tlikonen/
// OpenPGP: 4E1055DC84E9DFF613D78557719D69D324539450
signature.asc
Description: PGP signature