emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Orgmode] [PATCH 2/2] Fix adaptive filling.


From: Dan Hackney
Subject: [Orgmode] [PATCH 2/2] Fix adaptive filling.
Date: Mon, 1 Mar 2010 08:49:10 -0500

For paragraph text, `org-adaptive-fill-function' did not handle the base case of
regular text which needed to be filled. This commit saves a buffer-local value
of `adaptive-fill-regexp' and uses it if none of the org-specific regexps match.
This allows email-style ">" comments to be filled correctly.

Signed-off-by: Dan Hackney <address@hidden>
---
 lisp/org.el |   25 ++++++++++++++++++++-----
 1 files changed, 20 insertions(+), 5 deletions(-)

diff --git a/lisp/org.el b/lisp/org.el
index 8ba782a..073061e 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -17289,6 +17289,12 @@ which make use of the date at the cursor."
                       t t))
     (org-move-to-column column)))
 
+(defvar org-adaptive-fill-regexp-backup adaptive-fill-regexp
+  "Variable to store copy of `adaptive-fill-regexp'.
+Since `adaptive-fill-regexp' is set to never match, we need to
+store a backup of its value before entering `org-mode' so that
+the functionality can be provided as a fall-back.")
+
 (defun org-set-autofill-regexps ()
   (interactive)
   ;; In the paragraph separator we include headlines, because filling
@@ -17324,8 +17330,11 @@ which make use of the date at the cursor."
   ;; and fixed-width regions are not wrapped.  That function will pass
   ;; through to `fill-paragraph' when appropriate.
   (org-set-local 'fill-paragraph-function 'org-fill-paragraph)
-  ; Adaptive filling: To get full control, first make sure that
+  ;; Adaptive filling: To get full control, first make sure that
   ;; `adaptive-fill-regexp' never matches.  Then install our own matcher.
+  (unless (local-variable-p 'adaptive-fill-regexp)
+    (org-set-local 'org-adaptive-fill-regexp-backup
+                   adaptive-fill-regexp))
   (org-set-local 'adaptive-fill-regexp "\000")
   (org-set-local 'adaptive-fill-function
                 'org-adaptive-fill-function)
@@ -17354,8 +17363,11 @@ which make use of the date at the cursor."
   "Return a fill prefix for org-mode files.
 In particular, this makes sure hanging paragraphs for hand-formatted lists
 work correctly."
-  (cond ((looking-at "#[ \t]+")
-        (match-string 0))
+  (cond
+   ;; Comment line
+   ((looking-at "#[ \t]+")
+    (match-string-no-properties 0))
+   ;; Description list
        ((looking-at "[ \t]*\\([-*+] .*? :: \\)")
         (save-excursion
           (if (> (match-end 1) (+ (match-beginning 1)
@@ -17363,11 +17375,14 @@ work correctly."
               (goto-char (+ (match-beginning 1) 5))
             (goto-char (match-end 0)))
           (make-string (current-column) ?\ )))
-       ((looking-at "[ \t]*\\([-*+] \\|[0-9]+[.)]  ?\\)?")
+    ;; Ordered or unordered list
+       ((looking-at "[ \t]*\\([-*+] \\|[0-9]+[.)]  ?\\)")
         (save-excursion
           (goto-char (match-end 0))
           (make-string (current-column) ?\ )))
-       (t nil)))
+    ;; Other text
+    ((looking-at org-adaptive-fill-regexp-backup)
+     (match-string-no-properties 0))))
 
 ;;; Other stuff.
 
-- 
1.6.3.3





reply via email to

[Prev in Thread] Current Thread [Next in Thread]