diff options
-rw-r--r-- | ksh-forms-improved.el | 29 |
1 files changed, 13 insertions, 16 deletions
diff --git a/ksh-forms-improved.el b/ksh-forms-improved.el index 3e9e333..cfa72b9 100644 --- a/ksh-forms-improved.el +++ b/ksh-forms-improved.el @@ -20,11 +20,6 @@ (defalias 'print-buffer 'print-report) ;; Utilities -(defmacro setfun (function-name function) - "Set functions like using define in scheme" - `(defun ,function-name (&rest args) - (apply ,function args))) - (defun set-values (record values) "Set record RECORD to values in alist VALUES" (mapc (lambda (field-value) @@ -42,23 +37,25 @@ (setq forms-new-record-filter 'new-record-filter) ;; Entry creation functions for org export -(defun make-org-entry-function (format-string) - (lambda (label-field) - (let* ((label (car label-field)) - (field-no (cdr label-field)) - (value (get-field field-no))) - (if value - (princ (format format-string label - (replace-regexp-in-string "\n" "\n\n" value))) - (user-error "Field \"%s\" should not be blank" label))))) +(defun ksh-forms-org-entry-function (format-string label-field) + (pcase label-field + (`(,label . ,field-no) + (let ((value (get-field field-no))) + (if value + (princ (format format-string label + (replace-regexp-in-string "\n" "\n\n" value))) + (user-error "Field \"%s\" should not be blank" label)))))) (defun get-field (field) "Parse form and return field FIELD from form" (cond ((integerp field) (nth (1- field) (forms--parse-form))) ((stringp field) field))) -(setfun single-line-org-entry (make-org-entry-function "*%s:* %s\n\n")) -(setfun multi-line-org-entry (make-org-entry-function "\n* %s\n%s\n\n")) +(defun single-line-org-entry (label-field) + (ksh-forms-org-entry-function "*%s:* %s\n\n" label-field)) + +(defun multi-line-org-entry (label-field) + (ksh-forms-org-entry-function "\n* %s\n%s\n\n" label-field)) (defun text-if-non-blank (text) (if (and text (not (string-blank-p text))) |