Function: todo-edit-item--next-key

todo-edit-item--next-key is a byte-compiled function defined in todo-mode.el.gz.

Signature

(todo-edit-item--next-key TYPE &optional ARG)

Source Code

;; Defined in /usr/src/emacs/lisp/calendar/todo-mode.el.gz
(defun todo-edit-item--next-key (type &optional arg)
  (let* ((todo-param-key-alist '((edit       . "e")
                                 (header     . "h")
                                 (multiline  . "m")
                                 (diary      . "y")
                                 (nonmarking . "k")
                                 (date       . "d")
                                 (time       . "t")))
         (done-param-key-alist '((add/edit   . "c")
                                 (delete     . "d")))
         (date-param-key-alist '((full       . "f")
                                 (calendar   . "c")
                                 (today      . "a")
                                 (dayname    . "n")
                                 (year       . "y")
                                 (month      . "m")
                                 (daynum     . "d")))
         (params (pcase type
                   ('todo todo-param-key-alist)
                   ('done done-param-key-alist)
                   ('date date-param-key-alist)))
         (p->k (mapconcat (lambda (elt)
			    (format "%s=>%s"
				    (propertize (cdr elt) 'face
						'todo-key-prompt)
				    (concat (symbol-name (car elt))
					    (when (memq (car elt)
							'(add/edit delete))
					      " comment"))))
			  params " "))
	 (key-prompt (substitute-command-keys
                      (concat "Press a key (so far `e"
                              (if (eq type 'date) " d" "")
                              "'): ")))
	 (this-key (let ((key (read-key (concat key-prompt p->k))))
		     (and (characterp key) (char-to-string key))))
	 (this-param (car (rassoc this-key params))))
    (pcase this-param
      ('edit (todo-edit-item--text))
      ('header (todo-edit-item--text 'include-header))
      ('multiline (todo-edit-item--text 'multiline))
      ('add/edit (todo-edit-item--text 'comment-edit))
      ('delete (todo-edit-item--text 'comment-delete))
      ('diary (todo-edit-item--diary-inclusion))
      ('nonmarking (todo-edit-item--diary-inclusion 'nonmarking))
      ('date (todo-edit-item--next-key 'date arg))
      ('full (progn (todo-edit-item--header 'date)
		    (when todo-always-add-time-string
		      (todo-edit-item--header 'time))))
      ('calendar (todo-edit-item--header 'calendar))
      ('today (todo-edit-item--header 'today))
      ('dayname (todo-edit-item--header 'dayname))
      ('year (todo-edit-item--header 'year arg))
      ('month (todo-edit-item--header 'month arg))
      ('daynum (todo-edit-item--header 'day arg))
      ('time (todo-edit-item--header 'time)))))