mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-08 08:43:52 -08:00
(fill-common-string-prefix): New function.
(fill-context-prefix): Use the longest common substring of both prefixes, if there is one.
This commit is contained in:
parent
7fbc46a0a2
commit
7190ab8737
1 changed files with 27 additions and 7 deletions
|
|
@ -185,6 +185,15 @@ Remove indentation from each line."
|
|||
;; of the line and wants it to stay at the end of the line.
|
||||
(insert-before-markers-and-inherit ? )))))
|
||||
|
||||
(defun fill-common-string-prefix (s1 s2)
|
||||
"Return the longest common prefix of strings S1 and S2, or nil if none."
|
||||
(let ((cmp (compare-strings s1 nil nil s2 nil nil)))
|
||||
(if (eq cmp t)
|
||||
s1
|
||||
(setq cmp (1- (abs cmp)))
|
||||
(unless (zerop cmp)
|
||||
(substring s1 0 cmp)))))
|
||||
|
||||
(defun fill-context-prefix (from to &optional first-line-regexp)
|
||||
"Compute a fill prefix from the text between FROM and TO.
|
||||
This uses the variables `adaptive-fill-regexp' and `adaptive-fill-function'
|
||||
|
|
@ -233,13 +242,24 @@ act as a paragraph-separator."
|
|||
;; If the second line prefix is whitespace, use it.
|
||||
(string-match "\\`[ \t]+\\'" second-line-prefix))
|
||||
second-line-prefix
|
||||
;; If the second line has the first line prefix,
|
||||
;; plus whitespace, use the part that the first line shares.
|
||||
(if (string-match (concat "\\`"
|
||||
(regexp-quote first-line-prefix)
|
||||
"[ \t]*\\'")
|
||||
second-line-prefix)
|
||||
first-line-prefix)))
|
||||
|
||||
;; If using the common prefix of first-line-prefix
|
||||
;; and second-line-prefix leads to problems, consider
|
||||
;; to restore the code below that's commented out,
|
||||
;; and document why a common prefix cannot be used.
|
||||
|
||||
; ;; If the second line has the first line prefix,
|
||||
; ;; plus whitespace, use the part that the first line shares.
|
||||
; (if (string-match (concat "\\`"
|
||||
; (regexp-quote first-line-prefix)
|
||||
; "[ \t]*\\'")
|
||||
; second-line-prefix)
|
||||
; first-line-prefix)))
|
||||
|
||||
;; Use the longest common substring of both prefixes,
|
||||
;; if there is one.
|
||||
(fill-common-string-prefix first-line-prefix
|
||||
second-line-prefix)))
|
||||
;; If we get a fill prefix from a one-line paragraph,
|
||||
;; maybe change it to whitespace,
|
||||
;; and check that it isn't a paragraph starter.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue