;;; paragraphs.el --- paragraph and sentence parsing
-;; Copyright (C) 1985, 1986, 1987, 1991, 1994, 1995, 1996, 1997, 1999, 2000,
-;; 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+;; Copyright (C) 1985-1987, 1991, 1994-1997, 1999-2011
+;; Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: wp
+;; Package: emacs
;; This file is part of GNU Emacs.
(put 'sentence-end-without-period 'safe-local-variable 'booleanp)
(defcustom sentence-end-without-space
- "\e$B!#!%!)!*\e$A!##.#?#!\e$(0!$!%!)!*\e$(G!$!%!)!*\e(B"
+ "。.?!"
"String of characters that end sentence without following spaces.
This value is used by the function `sentence-end' to construct the
:type '(choice regexp (const :tag "Use default value" nil)))
(put 'sentence-end 'safe-local-variable 'string-or-null-p)
-(defcustom sentence-end-base "[.?!][]\"'\e$B!I\e$,1r}\e(B)}]*"
+(defcustom sentence-end-base "[.?!][]\"'”)}]*"
"Regexp matching the basic end of a sentence, not including following space."
:group 'paragraphs
:type 'string
must be followed by two spaces, with perhaps some closing delimiters
in between. See Info node `(elisp)Standard Regexps'."
(or sentence-end
- (concat (if sentence-end-without-period "\\w \\|")
+ ;; We accept non-break space along with space.
+ (concat (if sentence-end-without-period "\\w[ \u00a0][ \u00a0]\\|")
"\\("
sentence-end-base
(if sentence-end-double-space
- "\\($\\| $\\|\t\\| \\)" "\\($\\|[\t ]\\)")
+ "\\($\\|[ \u00a0]$\\|\t\\|[ \u00a0][ \u00a0]\\)" "\\($\\|[\t \u00a0]\\)")
"\\|[" sentence-end-without-space "]+"
"\\)"
- "[ \t\n]*")))
+ "[ \u00a0\t\n]*")))
(defcustom page-delimiter "^\014"
"Regexp describing line-beginnings that separate pages."
(kill-region (point) (progn (backward-paragraph arg) (point))))
(defun transpose-paragraphs (arg)
- "Interchange this (or next) paragraph with previous one."
+ "Interchange the current paragraph with the next one.
+With prefix argument ARG a non-zero integer, moves the current
+paragraph past ARG paragraphs, leaving point after the current paragraph.
+If ARG is positive, moves the current paragraph forwards, if
+ARG is negative moves it backwards. If ARG is zero, exchanges
+the current paragraph with the one containing the mark."
(interactive "*p")
(transpose-subr 'forward-paragraph arg))
(sentence-end (sentence-end)))
(while (< arg 0)
(let ((pos (point))
- (par-beg (save-excursion (start-of-paragraph-text) (point))))
+ ;; We used to use (start-of-paragraph-text), but this can
+ ;; prevent sentence-end from matching if it is anchored at
+ ;; BOL and the paragraph starts indented.
+ (par-beg (save-excursion (backward-paragraph) (point))))
(if (and (re-search-backward sentence-end par-beg t)
(or (< (match-end 0) pos)
(re-search-backward sentence-end par-beg t)))
nil t))
(defun transpose-sentences (arg)
- "Interchange this (next) and previous sentence."
+ "Interchange the current sentence with the next one.
+With prefix argument ARG a non-zero integer, moves the current
+sentence past ARG sentences, leaving point after the current sentence.
+If ARG is positive, moves the current sentence forwards, if
+ARG is negative moves it backwards. If ARG is zero, exchanges
+the current sentence with the one containing the mark."
(interactive "*p")
(transpose-subr 'forward-sentence arg))
;; Local Variables:
-;; coding: iso-2022-7bit
+;; coding: utf-8
;; End:
-;; arch-tag: e727eb1a-527a-4464-b9d7-9d3ec0d1a575
;;; paragraphs.el ends here