emacs-orgmode
[Top][All Lists]
Advanced

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

[Orgmode] org-olpath-completing-read is not friendly with partial-comple


From: Levin Du
Subject: [Orgmode] org-olpath-completing-read is not friendly with partial-completion-mode
Date: Fri, 16 Oct 2009 14:52:19 +0800

Try this:

(partial-completion-mode t)
(funcall 'org-olpath-completing-read "? "
         '("todo1.org/tasks/"
          "todo1.org/tasks/normal/"
          "todo1.org/tasks/urgent/"
          "note.org/")
         nil t nil nil)

todo<tab><tab>

It stays on todo1.org/ (Sole completion)



my raw patch:
diff --git a/vendor/org/org.el b/vendor/org/org.el
index d3d886f..f3a02cf 100644
--- a/vendor/org/org.el
+++ b/vendor/org/org.el
@@ -7780,23 +7780,29 @@ from."

 (defun org-icompleting-read (&rest args)
   "Completing-read using `ido-mode' or `iswitchb' speedups if available"
-  (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 'ido-completing-read (concat (car args))
-              (if (consp (car (nth 1 args)))
-                  (mapcar (lambda (x) (car x)) (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))
-              (mapcar (lambda (x) (car x)) (nth 1 args))
-              (cddr args))
-      (apply 'completing-read args))))
+  (let ((saved-pc-mode partial-completion-mode))
+    (when saved-pc-mode
+      (partial-completion-mode 0))
+    (unwind-protect
+        (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 'ido-completing-read (concat (car args))
+                     (if (consp (car (nth 1 args)))
+                         (mapcar (lambda (x) (car x)) (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))
+                     (mapcar (lambda (x) (car x)) (nth 1 args))
+                     (cddr args))
+            (apply 'completing-read args)))
+      (when saved-pc-mode
+        (partial-completion-mode 1)))))

 (defun org-extract-attributes (s)
   "Extract the attributes cookie from a string and set as text property."
@@ -8890,7 +8896,6 @@ See also `org-refile-use-outline-path' and
`org-completion-use-ido'"
   (unless org-refile-target-table
     (error "No refile targets"))
   (let* ((cbuf (current-buffer))
-        (partial-completion-mode nil)
         (cfn (buffer-file-name (buffer-base-buffer cbuf)))
         (cfunc (if (and org-refile-use-outline-path
                         org-outline-path-complete-in-steps)


Hope it helps.

Regards,
Levin




reply via email to

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