diff options
| author | Marcin Borkowski | 2018-01-24 10:32:40 +0100 |
|---|---|---|
| committer | Marcin Borkowski | 2018-01-24 10:32:40 +0100 |
| commit | 96de0503cd04f3cba7c4db94789b958e9775e2c6 (patch) | |
| tree | 86a459aa1c5e2739034c7a69e2d74a1e75ac7090 | |
| parent | 109da684c5124e22505917fe0255ca66f2a6bfc9 (diff) | |
| parent | 521470987b198fcadff294a8e3c700be21b1a15c (diff) | |
| download | emacs-96de0503cd04f3cba7c4db94789b958e9775e2c6.tar.gz emacs-96de0503cd04f3cba7c4db94789b958e9775e2c6.zip | |
Merge branch 'fix/bug-20871-cur'
| -rw-r--r-- | doc/emacs/text.texi | 7 | ||||
| -rw-r--r-- | etc/NEWS | 5 | ||||
| -rw-r--r-- | lisp/textmodes/fill.el | 12 | ||||
| -rw-r--r-- | test/lisp/textmodes/fill-tests.el | 50 |
4 files changed, 72 insertions, 2 deletions
diff --git a/doc/emacs/text.texi b/doc/emacs/text.texi index b7659976a98..7e49a46b179 100644 --- a/doc/emacs/text.texi +++ b/doc/emacs/text.texi | |||
| @@ -637,8 +637,11 @@ line. If a function returns a non-@code{nil} value, Emacs will not | |||
| 637 | break the line there. Functions you can use there include: | 637 | break the line there. Functions you can use there include: |
| 638 | @code{fill-single-word-nobreak-p} (don't break after the first word of | 638 | @code{fill-single-word-nobreak-p} (don't break after the first word of |
| 639 | a sentence or before the last); @code{fill-single-char-nobreak-p} | 639 | a sentence or before the last); @code{fill-single-char-nobreak-p} |
| 640 | (don't break after a one-letter word); and @code{fill-french-nobreak-p} | 640 | (don't break after a one-letter word preceded by a whitespace |
| 641 | (don't break after @samp{(} or before @samp{)}, @samp{:} or @samp{?}). | 641 | character); @code{fill-french-nobreak-p} (don't break after @samp{(} |
| 642 | or before @samp{)}, @samp{:} or @samp{?}); and | ||
| 643 | @code{fill-polish-nobreak-p} (don't break after a one letter word, | ||
| 644 | even if preceded by a non-whitespace character). | ||
| 642 | 645 | ||
| 643 | @node Fill Prefix | 646 | @node Fill Prefix |
| 644 | @subsection The Fill Prefix | 647 | @subsection The Fill Prefix |
| @@ -75,6 +75,11 @@ detect built-in libxml support, instead of testing for that | |||
| 75 | indirectly, e.g., by checking that functions like | 75 | indirectly, e.g., by checking that functions like |
| 76 | 'libxml-parse-html-region' return nil. | 76 | 'libxml-parse-html-region' return nil. |
| 77 | 77 | ||
| 78 | +++ | ||
| 79 | ** New function 'fill-polish-nobreak-p', to be used in 'fill-nobreak-predicate'. | ||
| 80 | It blocks line breaking after a one-letter word, also in the case when | ||
| 81 | this word is preceded by a non-space, but non-alphanumeric character. | ||
| 82 | |||
| 78 | 83 | ||
| 79 | * Editing Changes in Emacs 27.1 | 84 | * Editing Changes in Emacs 27.1 |
| 80 | 85 | ||
diff --git a/lisp/textmodes/fill.el b/lisp/textmodes/fill.el index 7f9538fb569..08e975f2355 100644 --- a/lisp/textmodes/fill.el +++ b/lisp/textmodes/fill.el | |||
| @@ -340,6 +340,18 @@ places." | |||
| 340 | (and (memq (preceding-char) '(?\t ?\s)) | 340 | (and (memq (preceding-char) '(?\t ?\s)) |
| 341 | (eq (char-syntax (following-char)) ?w))))))) | 341 | (eq (char-syntax (following-char)) ?w))))))) |
| 342 | 342 | ||
| 343 | (defun fill-polish-nobreak-p () | ||
| 344 | "Return nil if Polish style allows breaking the line at point. | ||
| 345 | This function may be used in the `fill-nobreak-predicate' hook. | ||
| 346 | It is almost the same as `fill-single-char-nobreak-p', with the | ||
| 347 | exception that it does not require the one-letter word to be | ||
| 348 | preceded by a space. This blocks line-breaking in cases like | ||
| 349 | \"(a jednak)\"." | ||
| 350 | (save-excursion | ||
| 351 | (skip-chars-backward " \t") | ||
| 352 | (backward-char 2) | ||
| 353 | (looking-at "[^[:alpha:]]\\cl"))) | ||
| 354 | |||
| 343 | (defun fill-single-char-nobreak-p () | 355 | (defun fill-single-char-nobreak-p () |
| 344 | "Return non-nil if a one-letter word is before point. | 356 | "Return non-nil if a one-letter word is before point. |
| 345 | This function is suitable for adding to the hook `fill-nobreak-predicate', | 357 | This function is suitable for adding to the hook `fill-nobreak-predicate', |
diff --git a/test/lisp/textmodes/fill-tests.el b/test/lisp/textmodes/fill-tests.el new file mode 100644 index 00000000000..03323090f9b --- /dev/null +++ b/test/lisp/textmodes/fill-tests.el | |||
| @@ -0,0 +1,50 @@ | |||
| 1 | ;;; fill-test.el --- ERT tests for fill.el -*- lexical-binding: t -*- | ||
| 2 | |||
| 3 | ;; Copyright (C) 2017 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | ;; Author: Marcin Borkowski <mbork@mbork.pl> | ||
| 6 | ;; Keywords: text, wp | ||
| 7 | |||
| 8 | ;; This file is part of GNU Emacs. | ||
| 9 | |||
| 10 | ;; GNU Emacs is free software: you can redistribute it and/or modify | ||
| 11 | ;; it under the terms of the GNU General Public License as published by | ||
| 12 | ;; the Free Software Foundation, either version 3 of the License, or | ||
| 13 | ;; (at your option) any later version. | ||
| 14 | |||
| 15 | ;; GNU Emacs is distributed in the hope that it will be useful, | ||
| 16 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 17 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 18 | ;; GNU General Public License for more details. | ||
| 19 | |||
| 20 | ;; You should have received a copy of the GNU General Public License | ||
| 21 | ;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. | ||
| 22 | |||
| 23 | ;;; Commentary: | ||
| 24 | |||
| 25 | ;; This package defines tests for the filling feature, specifically | ||
| 26 | ;; the `fill-polish-nobreak-p' function. | ||
| 27 | |||
| 28 | ;;; Code: | ||
| 29 | |||
| 30 | (require 'ert) | ||
| 31 | |||
| 32 | (ert-deftest fill-test-no-fill-polish-nobreak-p nil | ||
| 33 | "Tests of the `fill-polish-nobreak-p' function." | ||
| 34 | (with-temp-buffer | ||
| 35 | (insert "Abc d efg (h ijk).") | ||
| 36 | (setq fill-column 8) | ||
| 37 | (setq-local fill-nobreak-predicate '()) | ||
| 38 | (fill-paragraph) | ||
| 39 | (should (string= (buffer-string) "Abc d\nefg (h\nijk)."))) | ||
| 40 | (with-temp-buffer | ||
| 41 | (insert "Abc d efg (h ijk).") | ||
| 42 | (setq fill-column 8) | ||
| 43 | (setq-local fill-nobreak-predicate '(fill-polish-nobreak-p)) | ||
| 44 | (fill-paragraph) | ||
| 45 | (should (string= (buffer-string) "Abc\nd efg\n(h ijk).")))) | ||
| 46 | |||
| 47 | |||
| 48 | (provide 'fill-tests) | ||
| 49 | |||
| 50 | ;;; fill-tests.el ends here | ||