Comments
Patch
From d49ff05ef86b652ec4883d7075df4fb65c846342 Mon Sep 17 00:00:00 2001
From: David Edmondson <dme@dme.org>
Date: Tue, 16 Feb 2010 09:03:18 +0000
Subject: [PATCH] notmuch.el: Improved wrapping of long lines - respect the indentation
level.
---
Makefile.local | 2 +-
notmuch-coolj.el | 40 ++++++++++++++++++++++++++++++++++++++++
notmuch.el | 9 ++++++---
3 files changed, 47 insertions(+), 4 deletions(-)
create mode 100644 notmuch-coolj.el
@@ -1,4 +1,4 @@
-emacs: notmuch.elc
+emacs: notmuch.elc notmuch-coolj.el
notmuch_client_srcs = \
$(notmuch_compat_srcs) \
new file mode 100644
@@ -0,0 +1,40 @@
+(defgroup notmuch-coolj nil
+ "Automatic wrapping of long lines when displaying notmuch articles."
+ :group 'notmuch)
+
+(defcustom notmuch-coolj-prefix-regexp " *\\(>+ +\\)?"
+ "A regexp matching potential line prefixes.")
+
+(defun notmuch-coolj-wrap-region (beg end)
+ "Wrap lines in the region."
+ (goto-char beg)
+ (forward-line -1)
+ (while (not (>= (point) end))
+ (notmuch-coolj-wrap-line)
+ (forward-line)))
+
+(defun notmuch-coolj-wrap-line ()
+ "Wrap the current line, if necessary."
+ (let ((prefix (notmuch-coolj-determine-prefix))
+ (start (point))
+ (end (make-marker))
+ (width (window-width)))
+ (set-marker end (save-excursion (end-of-line) (point)))
+ (while (> end (+ (point) width))
+ (forward-char (window-width))
+ (if (re-search-backward "[^ ]\\( \\)" start t)
+ (progn
+ (goto-char (match-beginning 1))
+ (insert-before-markers ?\n)
+ (re-search-forward "\\( +\\)[^ ]" nil t)
+ (delete-region (match-beginning 1) (match-end 1))
+ (backward-char 1)
+ (insert-before-markers prefix)))
+ (beginning-of-line))))
+
+(defun notmuch-coolj-determine-prefix ()
+ "Determine the prefix for the current line."
+ (if (looking-at notmuch-coolj-prefix-regexp)
+ (buffer-substring-no-properties (match-beginning 0) (match-end 0))))
+
+(provide 'notmuch-coolj)
@@ -51,6 +51,8 @@
(require 'mm-view)
(require 'message)
+(require 'notmuch-coolj)
+
(defvar notmuch-show-mode-map
(let ((map (make-sparse-keymap)))
(define-key map "?" 'notmuch-help)
@@ -777,7 +779,9 @@ is what to put on the button."
(mm-display-part mime-message))))
)
(if (equal mime-type "text/plain")
- (notmuch-show-markup-citations-region beg end depth))
+ (progn
+ (notmuch-show-markup-citations-region beg end depth)
+ (notmuch-coolj-wrap-region beg end)))
; Advance to the next part (if any) (so the outer loop can
; determine whether we've left the current message.
(if (re-search-forward notmuch-show-buttonize-begin-regexp nil t)
@@ -1053,8 +1057,7 @@ All currently available key bindings:
; Make show mode a bit prettier, highlighting URLs and using word wrap
(defun notmuch-show-pretty-hook ()
- (goto-address-mode 1)
- (visual-line-mode))
+ (goto-address-mode 1))
(add-hook 'notmuch-show-hook 'notmuch-show-pretty-hook)
(add-hook 'notmuch-search-hook
--
1.6.6.1