Use named-builder on several functions

This commit is contained in:
Ivan Malison 2016-08-10 17:16:20 -07:00
parent 8dcf6ea962
commit eb61aedab9
No known key found for this signature in database
GPG Key ID: 62530EFBE99DC2F8

View File

@ -442,7 +442,7 @@ The packages in this section provide no functionality on their own, but provide
(let ((result (help-function-arglist function ))) (let ((result (help-function-arglist function )))
(if (eq result t) '(&rest args) result))) (if (eq result t) '(&rest args) result)))
(defmacro imalison:compose (&rest funcs) (defmacro imalison:compose-fn (&rest funcs)
(let* ((last-function (car (last funcs))) (let* ((last-function (car (last funcs)))
(arguments (imalison:help-function-arglist last-function)) (arguments (imalison:help-function-arglist last-function))
(call-arguments (delq '&optional arguments))) (call-arguments (delq '&optional arguments)))
@ -465,6 +465,8 @@ The packages in this section provide no functionality on their own, but provide
`(,last-function ,@arguments)) `(,last-function ,@arguments))
`(,(car funcs) `(,(car funcs)
(imalison:compose-helper ,(cdr funcs) ,arguments)))) (imalison:compose-helper ,(cdr funcs) ,arguments))))
(imalison:named-builder imalison:compose)
#+END_SRC #+END_SRC
*** Named Build *** Named Build
imalison:named-build is a way to invoke a macro in such a way that the lambda that it produces is given a name. imalison:named-build is a way to invoke a macro in such a way that the lambda that it produces is given a name.
@ -729,7 +731,7 @@ Get route information
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(defun imalison:muni-get-route-ids (route-name &optional direction) (defun imalison:muni-get-route-ids (route-name &optional direction)
(delete-dups (delete-dups
(mapcar (imalison:compose intern car) (mapcar (imalison:compose-fn intern car)
(s-match-strings-all (s-match-strings-all
"^\\([[:digit:]]\\{1,10\\}\\)" "^\\([[:digit:]]\\{1,10\\}\\)"
(shell-command-to-string (shell-command-to-string
@ -840,10 +842,12 @@ This interactive functions allows the user the select a function to invoke using
#+END_SRC #+END_SRC
** Make interactive ** Make interactive
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(defmacro imalison:make-interactive (function) (defmacro imalison:make-interactive-fn (function)
`(lambda (&rest args) `(lambda (&rest args)
(interactive) (interactive)
(apply ,function args))) (apply ,function args)))
(imalison:named-builder imalison:make-interactive)
#+END_SRC #+END_SRC
** Custom ~shell-command-on-region~ ** Custom ~shell-command-on-region~
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
@ -874,8 +878,8 @@ A macro for composing functions together to build an interactive command to copy
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(defmacro imalison:compose-copy-builder (name &rest funcs) (defmacro imalison:compose-copy-builder (name &rest funcs)
`(imalison:named-build ,name `(imalison:named-build ,name
imalison:make-interactive imalison:make-interactive-fn
(imalison:compose kill-new ,@funcs))) (imalison:compose-fn kill-new ,@funcs)))
#+END_SRC #+END_SRC
*** Copy portions of the buffer file name *** Copy portions of the buffer file name
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
@ -895,11 +899,11 @@ A macro for composing functions together to build an interactive command to copy
(imalison:compose-copy-builder imalison:copy-current-git-branch (imalison:compose-copy-builder imalison:copy-current-git-branch
magit-get-current-branch) magit-get-current-branch)
#+END_SRC #+END_SRC
** Advice Add Around Builder ** Compose Around Builder
For composing functions with an apply so that they can be used with the ~:around~ keyword of advice-add For composing functions with an apply so that they can be used with the ~:around~ keyword of advice-add
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(defmacro imalison:compose-around-builder (&rest functions) (defmacro imalison:compose-around-builder (&rest functions)
`(imalison:compose ,@functions 'apply)) `(imalison:compose-fn ,@functions 'apply))
#+END_SRC #+END_SRC
** Named Compile ** Named Compile
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp