Better outline-path completion.
This now is more like file name completion.
This commit is contained in:
parent
110b336275
commit
6d8ffe91e8
|
@ -1,3 +1,7 @@
|
||||||
|
2008-05-16 Carsten Dominik <dominik@science.uva.nl>
|
||||||
|
|
||||||
|
* org.el (org-olpath-completing-read): New function.
|
||||||
|
|
||||||
2008-05-15 Carsten Dominik <dominik@science.uva.nl>
|
2008-05-15 Carsten Dominik <dominik@science.uva.nl>
|
||||||
|
|
||||||
* org-id.el: New file, move from contrib to core.
|
* org-id.el: New file, move from contrib to core.
|
||||||
|
|
44
lisp/org.el
44
lisp/org.el
|
@ -4217,6 +4217,7 @@ RET=jump to location [Q]uit and return to previous location
|
||||||
|
|
||||||
(defvar org-goto-start-pos) ; dynamically scoped parameter
|
(defvar org-goto-start-pos) ; dynamically scoped parameter
|
||||||
|
|
||||||
|
;; FIXME: Docstring doe not mention both interfaces
|
||||||
(defun org-goto (&optional alternative-interface)
|
(defun org-goto (&optional alternative-interface)
|
||||||
"Look up a different location in the current file, keeping current visibility.
|
"Look up a different location in the current file, keeping current visibility.
|
||||||
|
|
||||||
|
@ -7576,20 +7577,54 @@ operation has put the subtree."
|
||||||
(unless org-refile-target-table
|
(unless org-refile-target-table
|
||||||
(error "No refile targets"))
|
(error "No refile targets"))
|
||||||
(let* ((cbuf (current-buffer))
|
(let* ((cbuf (current-buffer))
|
||||||
|
(cfunc (if org-refile-use-outline-path
|
||||||
|
'org-olpath-completing-read
|
||||||
|
'completing-read))
|
||||||
|
(extra (if org-refile-use-outline-path "/" ""))
|
||||||
(filename (buffer-file-name (buffer-base-buffer cbuf)))
|
(filename (buffer-file-name (buffer-base-buffer cbuf)))
|
||||||
(fname (and filename (file-truename filename)))
|
(fname (and filename (file-truename filename)))
|
||||||
(tbl (mapcar
|
(tbl (mapcar
|
||||||
(lambda (x)
|
(lambda (x)
|
||||||
(if (not (equal fname (file-truename (nth 1 x))))
|
(if (not (equal fname (file-truename (nth 1 x))))
|
||||||
(cons (concat (car x) " (" (file-name-nondirectory
|
(cons (concat (car x) extra " ("
|
||||||
(nth 1 x)) ")")
|
(file-name-nondirectory (nth 1 x)) ")")
|
||||||
(cdr x))
|
(cdr x))
|
||||||
x))
|
(cons (concat (car x) extra) (cdr x))))
|
||||||
org-refile-target-table))
|
org-refile-target-table))
|
||||||
(completion-ignore-case t))
|
(completion-ignore-case t))
|
||||||
(assoc (completing-read prompt tbl nil t nil 'org-refile-history)
|
(assoc (funcall cfunc prompt tbl nil t nil 'org-refile-history)
|
||||||
tbl)))
|
tbl)))
|
||||||
|
|
||||||
|
(defun org-olpath-completing-read (prompt collection &rest args)
|
||||||
|
"Read an outline path like a file name."
|
||||||
|
(let ((thetable collection))
|
||||||
|
(apply
|
||||||
|
'completing-read prompt
|
||||||
|
(lambda (string predicate &optional flag)
|
||||||
|
(let (rtn r s (l (length string)))
|
||||||
|
(cond
|
||||||
|
((eq flag nil)
|
||||||
|
;; try completion
|
||||||
|
(try-completion string thetable))
|
||||||
|
((eq flag t)
|
||||||
|
;; all-completions
|
||||||
|
(setq rtn (all-completions string thetable predicate))
|
||||||
|
(mapcar
|
||||||
|
(lambda (x)
|
||||||
|
(setq r (substring x l))
|
||||||
|
(if (string-match " ([^)]*)$" x)
|
||||||
|
(setq f (match-string 0 x))
|
||||||
|
(setq f ""))
|
||||||
|
(if (string-match "/" r)
|
||||||
|
(concat string (substring r 0 (match-end 0)) f)
|
||||||
|
x))
|
||||||
|
rtn))
|
||||||
|
((eq flag 'lambda)
|
||||||
|
;; exact match?
|
||||||
|
(assoc string thetable)))
|
||||||
|
))
|
||||||
|
args)))
|
||||||
|
|
||||||
;;;; Dynamic blocks
|
;;;; Dynamic blocks
|
||||||
|
|
||||||
(defun org-find-dblock (name)
|
(defun org-find-dblock (name)
|
||||||
|
@ -14028,3 +14063,4 @@ Still experimental, may disappear in the future."
|
||||||
;; arch-tag: e77da1a7-acc7-4336-b19e-efa25af3f9fd
|
;; arch-tag: e77da1a7-acc7-4336-b19e-efa25af3f9fd
|
||||||
|
|
||||||
;;; org.el ends here
|
;;; org.el ends here
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue