emacs-orgmode
[Top][All Lists]
Advanced

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

Re: [O] Could org-mode use `completing-read-function' instead of `org-ic


From: Rasmus
Subject: Re: [O] Could org-mode use `completing-read-function' instead of `org-icompleting-read'?
Date: Thu, 16 Apr 2015 17:21:12 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux)

Hi Oleh,

Oleh Krehel <address@hidden> writes:

>>> I was just trying to customize the completion back end for refiling
>>> (ido isn't
>>> great for that, even with the ido-vertical upgrade).  And it's not
>>> at all easy,
>>> since ido seems to be hard-wired into org-mode's completion.  Could we just
>>> change to use `completing-read-function' instead of `org-icompleting-read'?
>>
>> I think it's nicer to use existing features/variables, but comparability
>> is also an issue.
>
> Alright, I've made so that if `completing-read-function' is
> `completing-read-default', nothing changes.  But when it's set, it
> used. So now, e.g. `helm-mode' or `ivy-mode' will automatically work.

The change is no good IMO.  For the fix to work one needs to set
org-completion-use-ido.  If this is non-nil it would be weird if ido is
not used.

I don't know how to use helm of ivy.  But I think the attached patch is
better.  Would that work with helm and ivy?

—Rasmus

-- 
Send from my Emacs
>From 3836d34a10218cfe6a84d9479cbb587a2797a271 Mon Sep 17 00:00:00 2001
From: Rasmus <address@hidden>
Date: Thu, 16 Apr 2015 17:15:16 +0200
Subject: [PATCH] org.el: Small refactor

* org.el (org-icompleting-read): Support completing-read-default.
---
 lisp/org.el | 42 +++++++++++++++++++-----------------------
 1 file changed, 19 insertions(+), 23 deletions(-)

diff --git a/lisp/org.el b/lisp/org.el
index 659536d..fbd5ca7 100755
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -10502,29 +10502,25 @@ from."
 (defun org-icompleting-read (&rest args)
   "Completing-read using `ido-mode' or `iswitchb' speedups if available."
   (org-without-partial-completion
-   (if (and org-completion-use-ido
-            (fboundp 'ido-completing-read)
-            (boundp 'ido-mode) ido-mode
-            (listp (second args)))
-       (let ((ido-enter-matching-directory nil))
-         (apply (if (eq completing-read-function
-                        'completing-read-default)
-                    'ido-completing-read
-                  completing-read-function)
-                (concat (car args))
-                (if (consp (car (nth 1 args)))
-                    (mapcar 'car (nth 1 args))
-                  (nth 1 args))
-                (cddr args)))
-     (if (and org-completion-use-iswitchb
-              (boundp 'iswitchb-mode) iswitchb-mode
-              (listp (second args)))
-         (apply 'org-iswitchb-completing-read (concat (car args))
-                (if (consp (car (nth 1 args)))
-                    (mapcar 'car (nth 1 args))
-                  (nth 1 args))
-                (cddr args))
-       (apply 'completing-read args)))))
+   (let ((ido-enter-matching-directory nil))
+     (apply
+      (cond ((and org-completion-use-ido
+                 (fboundp 'ido-completing-read)
+                 (boundp 'ido-mode) ido-mode
+                 (listp (second args)))
+            'ido-completing-read)
+           ((and org-completion-use-iswitchb
+                 (boundp 'iswitchb-mode) iswitchb-mode
+                 (listp (second args)))
+            'org-iswitchb-completing-read)
+           (t (or (and (boundp 'completing-read-function)
+                       completing-read-function)
+                  'completing-read)))
+      (concat (car args))
+      (if (consp (car (nth 1 args)))
+         (mapcar 'car (nth 1 args))
+       (nth 1 args))
+      (cddr args)))))
 
 (defun org-extract-attributes (s)
   "Extract the attributes cookie from a string and set as text property."
-- 
2.3.5


reply via email to

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