]> code.delx.au - gnu-emacs/blobdiff - lisp/longlines.el
(enum event_kind) [MAC_OS]: Update comment for MAC_APPLE_EVENT.
[gnu-emacs] / lisp / longlines.el
index 93f3daa4ee89e7353934bf27eda905a9e07c6ab6..b11d4e6fabae92ff41cc29be337ce909fd9be8f6 100644 (file)
@@ -1,6 +1,6 @@
 ;;; longlines.el --- automatically wrap long lines
 
-;; Copyright (C) 2000, 2001, 2005 Free Software Foundation, Inc.
+;; Copyright (C) 2000, 2001, 2004, 2005, 2006 Free Software Foundation, Inc.
 
 ;; Authors:    Kai Grossjohann <Kai.Grossjohann@CS.Uni-Dortmund.DE>
 ;;             Alex Schroeder <alex@gnu.org>
@@ -111,7 +111,7 @@ are indicated with a symbol."
        (add-hook 'before-revert-hook 'longlines-before-revert-hook nil t)
         (make-local-variable 'buffer-substring-filters)
        (set (make-local-variable 'isearch-search-fun-function)
-            'longlinges-search-function)
+            'longlines-search-function)
         (add-to-list 'buffer-substring-filters 'longlines-encode-string)
         (when longlines-wrap-follows-window-size
           (set (make-local-variable 'fill-column)
@@ -127,8 +127,8 @@ are indicated with a symbol."
           ;; longlines-wrap-lines that we'll never encounter from here
          (save-restriction
            (widen)
-           (longlines-decode-buffer))
-          (longlines-wrap-region (point-min) (point-max))
+           (longlines-decode-buffer)
+           (longlines-wrap-region (point-min) (point-max)))
           (set-buffer-modified-p mod))
         (when (and longlines-show-hard-newlines
                    (not longlines-showing))
@@ -136,6 +136,7 @@ are indicated with a symbol."
 
        ;; Hacks to make longlines play nice with various modes.
        (cond ((eq major-mode 'mail-mode)
+              (add-hook 'mail-setup-hook 'longlines-decode-buffer nil t)
               (or mail-citation-hook
                   (add-hook 'mail-citation-hook 'mail-indent-citation nil t))
               (add-hook 'mail-citation-hook 'longlines-decode-region nil t))
@@ -165,7 +166,6 @@ are indicated with a symbol."
        (widen)
        (longlines-encode-region (point-min) (point-max))))
     (remove-hook 'change-major-mode-hook 'longlines-mode-off t)
-    (remove-hook 'before-kill-functions 'longlines-encode-region t)
     (remove-hook 'after-change-functions 'longlines-after-change-function t)
     (remove-hook 'post-command-hook 'longlines-post-command-function t)
     (remove-hook 'before-revert-hook 'longlines-before-revert-hook t)
@@ -246,17 +246,21 @@ not need to be wrapped, move point to the next line and return t."
              nil)
     (if (longlines-merge-lines-p)
         (progn (end-of-line)
-               (delete-char 1)
      ;; After certain commands (e.g. kill-line), there may be two
      ;; successive soft newlines in the buffer.  In this case, we
      ;; replace these two newlines by a single space.  Unfortunately,
      ;; this breaks the conservation of (spaces + newlines), so we
      ;; have to fiddle with longlines-wrap-point.
-               (if (or (bolp) (eolp))
-                   (if (> longlines-wrap-point (point))
-                       (setq longlines-wrap-point
-                             (1- longlines-wrap-point)))
-                 (insert-char ?  1))
+              (if (or (prog1 (bolp) (forward-char 1)) (eolp))
+                  (progn
+                    (delete-char -1)
+                    (if (> longlines-wrap-point (point))
+                        (setq longlines-wrap-point
+                              (1- longlines-wrap-point))))
+                (insert-before-markers-and-inherit ?\ )
+                (backward-char 1)
+                (delete-char -1)
+                (forward-char 1))
                nil)
       (forward-line 1)
       t)))
@@ -322,10 +326,11 @@ If BEG and END are nil, the point and mark are used."
   (if (null beg) (setq beg (point)))
   (if (null end) (setq end (mark t)))
   (save-excursion
-    (goto-char (min beg end))
-    (while (search-forward "\n" (max beg end) t)
-      (set-hard-newline-properties
-       (match-beginning 0) (match-end 0)))))
+    (let ((reg-max (max beg end)))
+      (goto-char (min beg end))
+      (while (search-forward "\n" reg-max t)
+       (set-hard-newline-properties
+        (match-beginning 0) (match-end 0))))))
 
 (defun longlines-decode-buffer ()
   "Turn all newlines in the buffer into hard newlines."
@@ -336,9 +341,10 @@ If BEG and END are nil, the point and mark are used."
 Hard newlines are left intact.  The optional argument BUFFER exists for
 compatibility with `format-alist', and is ignored."
   (save-excursion
-    (let ((mod (buffer-modified-p)))
+    (let ((reg-max (max beg end))
+         (mod (buffer-modified-p)))
       (goto-char (min beg end))
-      (while (search-forward "\n" (max (max beg end)) t)
+      (while (search-forward "\n" reg-max t)
         (unless (get-text-property (match-beginning 0) 'hard)
           (replace-match " ")))
       (set-buffer-modified-p mod)
@@ -417,7 +423,7 @@ This is called by `window-size-change-functions'."
 
 ;; Isearch
 
-(defun longlinges-search-function ()
+(defun longlines-search-function ()
   (cond
    (isearch-word
     (if isearch-forward 'word-search-forward 'word-search-backward))