On 2020-12-13 16:02, pie...@caramail.com wrote:
Would that apply with respect to inserting long headings or descriptions in org file?
Yes. If you have not used completing-read, just play around with it a bit and you will very quickly see how it works. It takes a list (Elisp data type) as input, on which you can do narrowing selection as you type. Ivy was one of recommendations which I can second, I prefer it's more intuitive (to me) interaction style and support for native completing-read format. But there are (many) others, too.
Example: ;; "Site_SubType: ;; [1a] Settlement > Encampment ;; [1a] Settlement > Hamlet or Village ;; [1a] Settlement > Town or City [...]
However to make it even simpler to use / maintain your candidate lists, I would just put them in a simple plain text file, aligned to left margin. Example: File name: Site_SubType [1a] Settlement > Encampment [1a] Settlement > Hamlet or Village [1a] Settlement > Town or City Then you need a function to read from plain text file with your "list" of candidates, and turn that into an (Elisp data type) list: #+begin_src emacs-lisp (defun my-file-to-list (file) "Read FILE and return it as a list of strings. List items will be split upon newlines." (with-temp-buffer (insert-file-contents file) (split-string (buffer-string) "\n" t))) #+end_src You then use the above function (with filename argument) for your candidate list in completing-read. Modifying Jean Louis' earlier example, it now becomes: #+begin_src emacs-lisp (completing-read "Choose: " (my-file-to-list "/path/to/Site_SubType")) #+end_src You can even use this to fill in Org Properties. Or you can use Org Properties similar native completion, although by default that only uses whatever values already exist in the buffer (which therefore could be "none"), instead of your specified controlled vocabulary file as I used above. I (by far) prefer the controlled vocabulary method, for lots of reasons. Cheers, TRS-80