Fn always promts for buffer/files; handle buffer obj and list

Fn: org-ql-view--complete-buffers-files
With buffers, org-ql-view--contract-buffers-files return the buffer
name.
When org-ql-view-buffers-files is a list, just dumpt it as a string
and check if completion-read returns the same value, if so return the
original value of org-ql-view-buffers-files
This commit is contained in:
Ahmed Shariff 2021-07-04 23:32:08 -05:00
parent cc6e22dd30
commit 06bdfc7a9e

View file

@ -1048,26 +1048,29 @@ current buffer. Otherwise BUFFERS-FILES is returned unchanged."
"org-agenda-files") "org-agenda-files")
((and (pred bufferp) (guard (buffer-file-name buffers-files))) ((and (pred bufferp) (guard (buffer-file-name buffers-files)))
(buffer-file-name buffers-files)) (buffer-file-name buffers-files))
((pred bufferp)
(buffer-name buffers-files))
(_ buffers-files)))) (_ buffers-files))))
(defun org-ql-view--complete-buffers-files () (defun org-ql-view--complete-buffers-files ()
"Return value for `org-ql-view-buffers-files' using completion. "Return value for `org-ql-view-buffers-files' using completion.
When `org-ql-view-buffers-files' cannot be contracted to a string When `org-ql-view-buffers-files' cannot be contracted to a string
representation `org-ql-view-buffers-files' is returned." representation `org-ql-view-buffers-files' is returned."
(if (and org-ql-view-buffers-files (let* ((contracted-org-ql-view-buffers-files
(bufferp org-ql-view-buffers-files)) (when org-ql-view-buffers-files
;; Buffers can't be input by name, so if the default value is a buffer, just use it.
;; TODO: Find a way to fix this.
org-ql-view-buffers-files
(let ((initial-input (when org-ql-view-buffers-files
(org-ql-view--contract-buffers-files (org-ql-view--contract-buffers-files
org-ql-view-buffers-files)))) org-ql-view-buffers-files)))
(if (or (not initial-input) (stringp initial-input)) (initial-input (if (or (not contracted-org-ql-view-buffers-files) ;; not nil
(org-ql-view--expand-buffers-files (stringp contracted-org-ql-view-buffers-files))
(completing-read "Buffers/Files: " contracted-org-ql-view-buffers-files
(format "%s" contracted-org-ql-view-buffers-files)))
(completion-read-result (completing-read
"Buffers/Files: "
(list 'buffer 'org-agenda-files 'org-directory 'all) (list 'buffer 'org-agenda-files 'org-directory 'all)
nil nil initial-input)) nil nil initial-input)))
org-ql-view-buffers-files)))) (if (equalp completion-read-result initial-input)
org-ql-view-buffers-files
(org-ql-view--expand-buffers-files completion-read-result))))
(defun org-ql-view--expand-buffers-files (buffers-files) (defun org-ql-view--expand-buffers-files (buffers-files)
"Return BUFFERS-FILES expanded to a list of files or buffers. "Return BUFFERS-FILES expanded to a list of files or buffers.