Skip to content

Commit

Permalink
require cl-indent, bump the version
Browse files Browse the repository at this point in the history
remove nic-lisp-1 example.
  • Loading branch information
nicferrier committed Oct 23, 2014
1 parent 688b3d6 commit 08a0932
Showing 1 changed file with 2 additions and 35 deletions.
37 changes: 2 additions & 35 deletions noflet.el
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

;; Author: Nic Ferrier <[email protected]>
;; Keywords: lisp
;; Version: 0.0.11
;; Version: 0.0.13
;; Url: https://github.com/nicferrier/emacs-noflet

;; This program is free software; you can redistribute it and/or modify
Expand All @@ -29,6 +29,7 @@
;;; Code:

(eval-when-compile (require 'cl))
(require 'cl-indent)

(defun noflet|base ()
"A base function."
Expand Down Expand Up @@ -153,40 +154,6 @@ maintainers refuse to add the correct indentation spec to
`(cl-flet ,bindings ,@body))


(defmacro nic-lisp1 (bindings &rest body)
"This makes lisp-1 functions.
For example:
(destructuring-bind (value func)
(nic-lisp1 ((a (x)
(* x 7)))
(list (a 10) a))
(funcall func 6))
the nic-lisp1 form returns the value of (a 10) as well as the
original function."
(declare (debug ((&rest (cl-defun)) cl-declarations body))
(indent ((&whole 4 &rest (&whole 1 &lambda &body)) &body)))
(let (newenv lambdas)
(dolist (binding bindings)
(let* ((bind-var (car binding))
(ldef `(cl-function (lambda . ,(cdr binding))))
(alias-def `(lambda (&rest cl-labels-args)
(cl-list* 'funcall ',bind-var
cl-labels-args))))
(push (cons bind-var alias-def) newenv)
(push (cons bind-var (list ldef)) lambdas)))
`(let ,lambdas
,@(macroexp-unprogn
(macroexpand-all
`(progn ,@body)
(if (assq 'function newenv)
newenv
(cons
(cons 'function #'cl--labels-convert)
newenv)))))))

(provide 'noflet)

;;; noflet.el ends here

0 comments on commit 08a0932

Please sign in to comment.