emacs lisp: Getting User Input with Completion and Input History

Perm URL with updates: http://xahlee.org/emacs/elisp_idioms.html

Some commands provide input history, so that user can use key to enter previous input. (e.g. shell-commandAlt+!】) Also, some commands provide name completion (e.g. “dired” 【Ctrl+x d】)

The most useful are: read-string, read-file-name, read-regexp. Examples:

(defun test-fun (arg)
  "Prompt user to enter a string, with input history support."
  (interactive (list (read-string "Your name is:")) )
  (message "String is 「%s」." arg) )

(defun test-fun (arg)
  "Prompt user to enter a file path, with file name completion and input history support."
  (interactive (list (read-file-name "Open directory:")) )
  (message "Path is 「%s」." arg) )

(defun test-fun (arg)
  "Prompt user to enter a elisp regex and input history support."
  (interactive (list (read-regexp "Type a regex:")) )
  (message "Regex is 「%s」." arg) )

The most general command is read-from-minibuffer. All the above are implemented on top of it.

(info "(elisp) Minibuffers")

Popular posts from this blog

Browser User Agent Strings 2012

11 Years of Writing About Emacs

does md5 creates more randomness?