emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[elpa] externals/orgalist d9ffd2c: Fix "Symbol's function definition is


From: Nicolas Goaziou
Subject: [elpa] externals/orgalist d9ffd2c: Fix "Symbol's function definition is void: nil" in Text mode
Date: Wed, 1 Jan 2020 17:48:43 -0500 (EST)

branch: externals/orgalist
commit d9ffd2c6105809ae5d9149b9a65bb932996cdc72
Author: Nicolas Goaziou <address@hidden>
Commit: Nicolas Goaziou <address@hidden>

    Fix "Symbol's function definition is void: nil" in Text mode
    
    * orgalist.el (orgalist--fill-item): Catch case when
    `fill-paragraph-function' was initially nil.
    (orgalist-mode): Advise `fill-paragraph-function' around it, not
    before.
---
 orgalist.el | 24 ++++++++++++++++--------
 1 file changed, 16 insertions(+), 8 deletions(-)

diff --git a/orgalist.el b/orgalist.el
index e1f25bd..029209f 100644
--- a/orgalist.el
+++ b/orgalist.el
@@ -527,17 +527,26 @@ is meant to be used as a piece of advice on both
           (if item? (orgalist--call-in-item fill-function item?)
             (funcall fill-function)))))))
 
-(defun orgalist--fill-item (justify)
+(defun orgalist--fill-item (fill-function justify)
   "Fill item as a paragraph.
 
-If JUSTIFY is non-nil, justify as well.
+FILL-FUNCTION is the regular function used for filling
+paragraphs, or nil.  If JUSTIFY is non-nil, justify as well.
 
 Return nil outside of a list.  This function is meant to be used
 as a piece of advice on `fill-paragraph-function'."
-  (let ((item? (orgalist--in-item-p)))
-    (when item?
-      (orgalist--call-in-item #'fill-paragraph item? justify)
-      t)))
+  (pcase (orgalist--in-item-p)
+    (`nil
+     ;; When `fill-paragraph-function' is nil in the current major
+     ;; mode (e.g.,in Text mode), the advice makes it look like
+     ;; a function anyway.  As a consequence, calling it results in an
+     ;; error.  Catch that error and call plain `fill-paragraph'
+     ;; instead.
+     (condition-case nil
+         (funcall fill-function justify)
+       (void-function (fill-paragraph justify))))
+    (item
+     (orgalist--call-in-item #'fill-paragraph item justify))))
 
 (defun orgalist--indent-line ()
   "Indent current line in an item.
@@ -815,8 +824,7 @@ C-c C-c         `orgalist-check-item'"
     (setq-local org-plain-list-ordered-item-terminator ?.)
     (add-function :around (local 'fill-forward-paragraph-function)
                   #'orgalist--fill-forward-wrapper)
-    (add-function :before-until
-                  (local 'fill-paragraph-function)
+    (add-function :around (local 'fill-paragraph-function)
                   #'orgalist--fill-item)
     ;; Unless `indent-line-function' is buffer-local before it is
     ;; advised with `add-function', the workaround for bug#31361 below



reply via email to

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