/ Published in: Emacs Lisp
An example solution for the 'insert-checkin-template exercise listed here: http://stackoverflow.com/questions/41522/tips-for-learning-elisp/59589#59589
It generates a "pretty" check in notice to be emailed, and also generates a line you can cut/paste into a shell to check in a list of files.
Note, it relies on a previous example listed here: http://snipplr.com/view/18683/stringreplace/
It generates a "pretty" check in notice to be emailed, and also generates a line you can cut/paste into a shell to check in a list of files.
Note, it relies on a previous example listed here: http://snipplr.com/view/18683/stringreplace/
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
(defun my-insert-checkin-form (branch type date priority description module files dependencies other) "Insert a checkin form string into current buffer. Called interactively, will prompt for fields." (interactive (list (read-string "Branch (default \"TOT\"): " nil nil "TOT") (read-string "Check-in Type: (default \"internal enhancement\"): " nil nil "internal enhancement") (format-time-string "%B %e, %Y") (read-string "Priority: " "med") (read-string "Description: ") (read-string "Module: ") (read-string "Files: ") "" "")) (let* ((deps-other-str (if (not (and (= 0 (length dependencies)) (= 0 (length other)))) (format " Dependencies: %s Other: %s " dependencies other) "")) (checkin-string-format (format "Branch: %%s Check-in Type: %%s When Ready: %%s Priority: %%s%s Description: %%s Module: %%s Files: %%s " deps-other-str)) (checkin-cvs-format "cvs ci -m '%s' %s")) ;; first insert the check-in notice (insert (format checkin-string-format branch type date priority description module (my-format-files-for-checkin-string files))) ;; put a few newlines in (insert "\n\n\n\n") ;; then insert a cvs commit line (insert (format checkin-cvs-format (concat type " " description) (my-format-files-for-checkin-cvs files))))) ;; relies on string-replace http://snipplr.com/view/18683/stringreplace/ (defun my-format-files-for-checkin-string (fstr) "replace all whitespace in string with a newline and 16 spaces" (string-replace "\\s-+" " " fstr t)) (defun my-format-files-for-checkin-cvs (fstr) "replace all whitespace in string with a space" (string-replace "\\s-+" " " fstr t))
URL: http://stackoverflow.com/questions/41522/tips-for-learning-elisp/59589#59589