Merge from emacs-23; up to 2010-05-28T19:18:47Z!juri@jurta.org.
[bpt/emacs.git] / lisp / longlines.el
index 57b5742..8843b16 100644 (file)
@@ -1,6 +1,6 @@
-;;; longlines.el --- automatically wrap long lines
+;;; longlines.el --- automatically wrap long lines   -*- coding:utf-8 -*-
 
-;; Copyright (C) 2000, 2001, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+;; Copyright (C) 2000-2001, 2004-2011 Free Software Foundation, Inc.
 
 ;; Authors:    Kai Grossjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
 ;;             Alex Schroeder <alex@gnu.org>
 
 ;; This file is part of GNU Emacs.
 
-;; GNU Emacs is free software; you can redistribute it and/or modify
+;; GNU Emacs is free software: you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 3, or (at your option)
-;; any later version.
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
 
 ;; GNU Emacs is distributed in the hope that it will be useful,
 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -21,9 +21,7 @@
 ;; GNU General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
 
 ;;; Commentary:
 
@@ -71,7 +69,7 @@ You can also enable the display temporarily, using the command
   :group 'longlines
   :type 'boolean)
 
-(defcustom longlines-show-effect (propertize "|\n" 'face 'escape-glyph)
+(defcustom longlines-show-effect (propertize "ΒΆ\n" 'face 'escape-glyph)
   "A string to display when showing hard newlines.
 This is used when `longlines-show-hard-newlines' is on."
   :group 'longlines
@@ -121,6 +119,10 @@ are indicated with a symbol."
         (make-local-variable 'longlines-auto-wrap)
        (set (make-local-variable 'isearch-search-fun-function)
             'longlines-search-function)
+       (set (make-local-variable 'replace-search-function)
+            'longlines-search-forward)
+       (set (make-local-variable 'replace-re-search-function)
+            'longlines-re-search-forward)
         (add-to-list 'buffer-substring-filters 'longlines-encode-string)
         (when longlines-wrap-follows-window-size
          (let ((dw (if (and (integerp longlines-wrap-follows-window-size)
@@ -136,7 +138,8 @@ are indicated with a symbol."
         (let ((buffer-undo-list t)
               (inhibit-read-only t)
              (after-change-functions nil)
-              (mod (buffer-modified-p)))
+              (mod (buffer-modified-p))
+             buffer-file-name buffer-file-truename)
           ;; Turning off undo is OK since (spaces + newlines) is
           ;; conserved, except for a corner case in
           ;; longlines-wrap-lines that we'll never encounter from here
@@ -176,7 +179,8 @@ are indicated with a symbol."
         (longlines-unshow-hard-newlines))
     (let ((buffer-undo-list t)
          (after-change-functions nil)
-          (inhibit-read-only t))
+          (inhibit-read-only t)
+         buffer-file-name buffer-file-truename)
       (if longlines-decoded
          (save-restriction
            (widen)
@@ -191,6 +195,8 @@ are indicated with a symbol."
     (when longlines-wrap-follows-window-size
       (kill-local-variable 'fill-column))
     (kill-local-variable 'isearch-search-fun-function)
+    (kill-local-variable 'replace-search-function)
+    (kill-local-variable 'replace-re-search-function)
     (kill-local-variable 'require-final-newline)
     (kill-local-variable 'buffer-substring-filters)
     (kill-local-variable 'use-hard-newlines)))
@@ -220,7 +226,8 @@ With optional argument ARG, make the hard newlines invisible again."
         (mod (buffer-modified-p))
         (buffer-undo-list t)
         (inhibit-read-only t)
-        (inhibit-modification-hooks t))
+        (inhibit-modification-hooks t)
+        buffer-file-name buffer-file-truename)
     (while pos
       (put-text-property pos (1+ pos) 'display
                         (copy-sequence longlines-show-effect))
@@ -235,7 +242,8 @@ With optional argument ARG, make the hard newlines invisible again."
        (mod (buffer-modified-p))
        (buffer-undo-list t)
        (inhibit-read-only t)
-       (inhibit-modification-hooks t))
+       (inhibit-modification-hooks t)
+       buffer-file-name buffer-file-truename)
     (while pos
       (remove-text-properties pos (1+ pos) '(display))
       (setq pos (text-property-not-all (1+ pos) (point-max) 'hard nil)))
@@ -456,13 +464,17 @@ This is called by `window-configuration-change-hook'."
       'longlines-search-backward))))
 
 (defun longlines-search-forward (string &optional bound noerror count)
-  (let ((search-spaces-regexp "[ \n]+"))
+  (let ((search-spaces-regexp " *[ \n]"))
     (re-search-forward (regexp-quote string) bound noerror count)))
 
 (defun longlines-search-backward (string &optional bound noerror count)
-  (let ((search-spaces-regexp "[ \n]+"))
+  (let ((search-spaces-regexp " *[ \n]"))
     (re-search-backward (regexp-quote string) bound noerror count)))
 
+(defun longlines-re-search-forward (string &optional bound noerror count)
+  (let ((search-spaces-regexp " *[ \n]"))
+    (re-search-forward string bound noerror count)))
+
 ;; Loading and saving
 
 (defun longlines-before-revert-hook ()
@@ -478,7 +490,17 @@ This is called by `window-configuration-change-hook'."
  (list 'longlines "Automatically wrap long lines." nil nil
        'longlines-encode-region t nil))
 
+;; Unloading
+
+(defun longlines-unload-function ()
+  "Unload the longlines library."
+  (save-current-buffer
+    (dolist (buffer (buffer-list))
+      (set-buffer buffer)
+      (longlines-mode-off)))
+  ;; continue standard unloading
+  nil)
+
 (provide 'longlines)
 
-;; arch-tag: 3489d225-5506-47b9-8659-d8807b77c624
 ;;; longlines.el ends here