Don't delete leading and trailing space from CJK word (bug#25685)

* lisp/textmodes/fill.el (fill-delete-newlines):
Don't delete leading and trailing space from CJK word.
(fill-separate-heterogeneous-words-with-space):
New user option that controls it (bug#25685).
This commit is contained in:
Katsumi Yamaoka 2017-02-15 01:26:59 +00:00
parent 4e23578127
commit 61ea36bb37

View file

@ -49,6 +49,15 @@ A value of nil means that any change in indentation starts a new paragraph."
:group 'fill)
(put 'colon-double-space 'safe-local-variable 'booleanp)
(defcustom fill-separate-heterogeneous-words-with-space nil
"Non-nil means that use a space to separate words of different kind.
This will be done with a word in the end of a line and a word in the
beginning of the next line when concatenating them for filling those
lines. Whether to use a space is up to how the words are categorized."
:type 'boolean
:group 'fill
:version "26.1")
(defvar fill-paragraph-function nil
"Mode-specific function to fill a paragraph, or nil if there is none.
If the function returns nil, then `fill-paragraph' does its normal work.
@ -494,8 +503,11 @@ Point is moved to just past the fill prefix on the first line."
(replace-match (get-text-property (match-beginning 0) 'fill-space))
(let ((prev (char-before (match-beginning 0)))
(next (following-char)))
(if (and (or (aref (char-category-set next) ?|)
(aref (char-category-set prev) ?|))
(if (and (if fill-separate-heterogeneous-words-with-space
(and (aref (char-category-set next) ?|)
(aref (char-category-set prev) ?|))
(or (aref (char-category-set next) ?|)
(aref (char-category-set prev) ?|)))
(or (aref fill-nospace-between-words-table next)
(aref fill-nospace-between-words-table prev)))
(delete-char -1))))))