* Tangling is broken in git master @ 2012-08-12 1:03 Bernt Hansen 2012-08-12 6:27 ` Achim Gratz 2012-08-12 8:43 ` Bastien 0 siblings, 2 replies; 16+ messages in thread From: Bernt Hansen @ 2012-08-12 1:03 UTC (permalink / raw) To: emacs-orgmode, Bastien Hi Bastien, Tangling doesn't work for me in git master anymore. Git bisect identifies the following commit as introducing the problem --8<---------------cut here---------------start------------->8--- ba16c3c6f50738b070769040586945436439be76 is the first bad commit commit ba16c3c6f50738b070769040586945436439be76 Author: Bastien Guerry <bzg@altern.org> Date: Sat Aug 11 10:43:56 2012 +0200 Don't use `org-labels' * org-compat.el (org-labels): Remove. * org-bibtex.el (org-bibtex-headline): Don't use `org-labels'. * ob.el (org-babel-sha1-hash, org-babel-noweb-p): Ditto. :040000 040000 bf962e4c7c93de4f2b5f71bf4fc1520ec0723a0e 43ecd68f89e1e856a4e65d84eff3cf6b84872494 M lisp --8<---------------cut here---------------end--------------->8--- --8<---------------cut here---------------start------------->8--- Debugger entered--Lisp error: (void-function letrec) (letrec ((intersect ...)) (funcall intersect (case context ... ... ...) (split-string ...))) org-babel-noweb-p(((:colname-names) (:rowname-names) (:result-params "replace") (:result-type . value) (:comments . "") (:shebang . "") (:cache . "no") (:padline . "") (:noweb . "no") (:tangle . "yes") (:exports . "none") (:results . "replace") (:colnames . "no") (:hlines . "yes") (:padnewline . "yes") (:session . "none")) :tangle) (if (org-babel-noweb-p params :tangle) (org-babel-expand-noweb-references info) (nth 1 info)) ((lambda (body) (if ... body ...)) (if (org-babel-noweb-p params :tangle) (org-babel-expand-noweb-references info) (nth 1 info))) ((lambda (body) (with-temp-buffer ... ... ...)) ((lambda ... ...) (if ... ... ...))) (let* ((info ...) (params ...) (link ...) (source-name ...) (expand-cmd ...) (assignments-cmd ...) (body ...) (comment ...) by-lang) (setq by-lang (cdr ...)) (setq blocks (delq ... blocks)) (setq blocks (cons ... blocks))) (if (and language (not ...)) nil (let* (... ... ... ... ... ... ... ... by-lang) (setq by-lang ...) (setq blocks ...) (setq blocks ...))) (unless (and language (not ...)) (let* (... ... ... ... ... ... ... ... by-lang) (setq by-lang ...) (setq blocks ...) (setq blocks ...))) (if (string= (cdr ...) "no") nil (unless (and language ...) (let* ... ... ... ...))) (unless (string= (cdr ...) "no") (unless (and language ...) (let* ... ... ... ...))) (let* ((start-line ...) (file ...) (info ...) (src-lang ...)) (unless (string= ... "no") (unless ... ...))) (let ((full-block ...) (beg-block ...) (end-block ...) (lang ...) (beg-lang ...) (end-lang ...) (switches ...) (beg-switches ...) (end-switches ...) (header-args ...) (beg-header-args ...) (end-header-args ...) (body ...) (beg-body ...) (end-body ...)) ((lambda ... ...) (replace-regexp-in-string "[ ]" "-" ...)) (let* (... ... ... ...) (unless ... ...)) (goto-char end-block)) (while (re-search-forward org-babel-src-block-regexp nil t) (goto-char (match-beginning 0)) (let (... ... ... ... ... ... ... ... ... ... ... ... ... ... ...) (... ...) (let* ... ...) (goto-char end-block))) (save-window-excursion (when file (find-file file)) (setq to-be-removed (current-buffer)) (goto-char (point-min)) (while (re-search-forward org-babel-src-block-regexp nil t) (goto-char ...) (let ... ... ... ...))) (let* ((file ...) (visited-p ...) (point ...) to-be-removed) (save-window-excursion (when file ...) (setq to-be-removed ...) (goto-char ...) (while ... ... ...)) (unless visited-p (kill-buffer to-be-removed)) (goto-char point)) (org-babel-map-src-blocks (buffer-file-name) ((lambda ... ...) (replace-regexp-in-string "[ ]" "-" ...)) (let* (... ... ... ...) (unless ... ...))) (let ((block-counter 1) (current-heading "") blocks) (org-babel-map-src-blocks (buffer-file-name) (... ...) (let* ... ...)) (setq blocks (mapcar ... blocks)) blocks) org-babel-tangle-collect-blocks(nil) (mapc (lambda (by-lang) (let* ... ...)) (org-babel-tangle-collect-blocks lang)) (let ((block-counter 0) (org-babel-default-header-args ...) path-collector) (mapc (lambda ... ...) (org-babel-tangle-collect-blocks lang)) (message "tangled %d code block%s from %s" block-counter (if ... "" "s") (file-name-nondirectory ...)) (when org-babel-post-tangle-hook (mapc ... path-collector)) path-collector) (save-excursion (let (... ... path-collector) (mapc ... ...) (message "tangled %d code block%s from %s" block-counter ... ...) (when org-babel-post-tangle-hook ...) path-collector)) (save-restriction (when only-this-block (unless ... ...) (save-match-data ...) (narrow-to-region ... ...)) (save-excursion (let ... ... ... ... path-collector))) org-babel-tangle(nil) call-interactively(org-babel-tangle nil nil) --8<---------------cut here---------------end--------------->8--- Regards, Bernt ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Tangling is broken in git master 2012-08-12 1:03 Tangling is broken in git master Bernt Hansen @ 2012-08-12 6:27 ` Achim Gratz 2012-08-13 1:57 ` Bernt Hansen 2012-08-12 8:43 ` Bastien 1 sibling, 1 reply; 16+ messages in thread From: Achim Gratz @ 2012-08-12 6:27 UTC (permalink / raw) To: emacs-orgmode Bernt Hansen writes: > Tangling doesn't work for me in git master anymore. Git bisect > identifies the following commit as introducing the problem [...] > Debugger entered--Lisp error: (void-function letrec) > (letrec ((intersect ...)) (funcall intersect (case context ... ... ...) (split-string ...))) From the NEWS file in Emacs 24: --8<---------------cut here---------------start------------->8--- * Lisp changes in Emacs 24.1 [...] *** New macro `letrec' to define recursive local functions. --8<---------------cut here---------------end--------------->8--- Regards, Achim. -- +<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+ Samples for the Waldorf Blofeld: http://Synth.Stromeko.net/Downloads.html#BlofeldSamplesExtra ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Tangling is broken in git master 2012-08-12 6:27 ` Achim Gratz @ 2012-08-13 1:57 ` Bernt Hansen 0 siblings, 0 replies; 16+ messages in thread From: Bernt Hansen @ 2012-08-13 1:57 UTC (permalink / raw) To: Achim Gratz; +Cc: emacs-orgmode Achim Gratz <Stromeko@nexgo.de> writes: > Bernt Hansen writes: >> Tangling doesn't work for me in git master anymore. Git bisect >> identifies the following commit as introducing the problem > [...] >> Debugger entered--Lisp error: (void-function letrec) >> (letrec ((intersect ...)) (funcall intersect (case context ... ... ...) (split-string ...))) > > From the NEWS file in Emacs 24: > * Lisp changes in Emacs 24.1 > [...] > *** New macro `letrec' to define recursive local functions. > > > Regards, > Achim. I'm using GNU Emacs 23.2.1 (i486-pc-linux-gnu, GTK+ Version 2.20.0) of 2010-12-11 on raven, modified by Debian Regards, Bernt ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Tangling is broken in git master 2012-08-12 1:03 Tangling is broken in git master Bernt Hansen 2012-08-12 6:27 ` Achim Gratz @ 2012-08-12 8:43 ` Bastien 2012-08-13 1:55 ` Bernt Hansen 1 sibling, 1 reply; 16+ messages in thread From: Bastien @ 2012-08-12 8:43 UTC (permalink / raw) To: Bernt Hansen; +Cc: emacs-orgmode [-- Attachment #1: Type: text/plain, Size: 248 bytes --] Hi Bernt, Bernt Hansen <bernt@norang.ca> writes: > Tangling doesn't work for me in git master anymore. Git bisect > identifies the following commit as introducing the problem Please try the attached patch and let us know if it works. Thanks, [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: 0001-org-compat.el-New-alias-org-letrec-for-labels.patch --] [-- Type: text/x-patch, Size: 4048 bytes --] From 45c517919756b7af78b720e454e8ea8d969f6a43 Mon Sep 17 00:00:00 2001 From: Bastien Guerry <bzg@altern.org> Date: Sun, 12 Aug 2012 10:41:28 +0200 Subject: [PATCH] org-compat.el: New alias 'org-letrec for 'labels * org-compat.el: New alias 'org-letrec for 'labels. * org-bibtex.el (org-compat): Require. (org-bibtex-headline): Use the `org-letrec' alias. * ob.el (org-compat): Require. (org-babel-noweb-p): Use the `org-letrec' alias. --- lisp/ob.el | 12 +++++++----- lisp/org-bibtex.el | 42 ++++++++++++++++++++++-------------------- lisp/org-compat.el | 2 ++ 3 files changed, 31 insertions(+), 25 deletions(-) diff --git a/lisp/ob.el b/lisp/ob.el index a6d1359..79f12f7 100644 --- a/lisp/ob.el +++ b/lisp/ob.el @@ -27,6 +27,7 @@ (require 'cl)) (require 'ob-eval) (require 'org-macs) +(require 'org-compat) (defconst org-babel-exeext (if (memq system-type '(windows-nt cygwin)) @@ -2223,11 +2224,12 @@ header argument from buffer or subtree wide properties.") (defun org-babel-noweb-p (params context) "Check if PARAMS require expansion in CONTEXT. CONTEXT may be one of :tangle, :export or :eval." - (letrec ((intersect (lambda (as bs) - (when as - (if (member (car as) bs) - (car as) - (funcall intersect (cdr as) bs)))))) + (org-letrec + ((intersect (lambda (as bs) + (when as + (if (member (car as) bs) + (car as) + (funcall intersect (cdr as) bs)))))) (funcall intersect (case context (:tangle '("yes" "tangle" "no-export" "strip-export")) (:eval '("yes" "no-export" "strip-export" "eval")) diff --git a/lisp/org-bibtex.el b/lisp/org-bibtex.el index 43b3c41..f857459 100644 --- a/lisp/org-bibtex.el +++ b/lisp/org-bibtex.el @@ -111,6 +111,7 @@ (require 'bibtex) (eval-when-compile (require 'cl)) +(require 'org-compat) (defvar org-bibtex-description nil) ; dynamically scoped from org.el (defvar org-id-locations) @@ -309,26 +310,27 @@ This variable is relevant only if `org-bibtex-export-tags-as-keywords` is t." (defun org-bibtex-headline () "Return a bibtex entry of the given headline as a string." - (letrec ((val (lambda (key lst) (cdr (assoc key lst)))) - (to (lambda (string) (intern (concat ":" string)))) - (from (lambda (key) (substring (symbol-name key) 1))) - (flatten (lambda (&rest lsts) - (apply #'append (mapcar - (lambda (e) - (if (listp e) (apply flatten e) (list e))) - lsts)))) - (notes (buffer-string)) - (id (org-bibtex-get org-bibtex-key-property)) - (type (org-bibtex-get org-bibtex-type-property-name)) - (tags (when org-bibtex-tags-are-keywords - (delq nil - (mapcar - (lambda (tag) - (unless (member tag - (append org-bibtex-tags - org-bibtex-no-export-tags)) - tag)) - (org-get-local-tags-at)))))) + (org-letrec + ((val (lambda (key lst) (cdr (assoc key lst)))) + (to (lambda (string) (intern (concat ":" string)))) + (from (lambda (key) (substring (symbol-name key) 1))) + (flatten (lambda (&rest lsts) + (apply #'append (mapcar + (lambda (e) + (if (listp e) (apply flatten e) (list e))) + lsts)))) + (notes (buffer-string)) + (id (org-bibtex-get org-bibtex-key-property)) + (type (org-bibtex-get org-bibtex-type-property-name)) + (tags (when org-bibtex-tags-are-keywords + (delq nil + (mapcar + (lambda (tag) + (unless (member tag + (append org-bibtex-tags + org-bibtex-no-export-tags)) + tag)) + (org-get-local-tags-at)))))) (when type (let ((entry (format "@%s{%s,\n%s\n}\n" type id diff --git a/lisp/org-compat.el b/lisp/org-compat.el index b049ecc..5f410bd 100644 --- a/lisp/org-compat.el +++ b/lisp/org-compat.el @@ -110,6 +110,8 @@ any other entries, and any resulting duplicates will be removed entirely." t)) t))) +(defalias 'org-letrec (if (>= emacs-major-version 24) 'letrec 'labels) + \f ;;;; Emacs/XEmacs compatibility -- 1.7.10.2 [-- Attachment #3: Type: text/plain, Size: 14 bytes --] -- Bastien ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: Tangling is broken in git master 2012-08-12 8:43 ` Bastien @ 2012-08-13 1:55 ` Bernt Hansen 2012-08-13 5:43 ` Bastien 0 siblings, 1 reply; 16+ messages in thread From: Bernt Hansen @ 2012-08-13 1:55 UTC (permalink / raw) To: Bastien; +Cc: emacs-orgmode Bastien <bzg@gnu.org> writes: > Hi Bernt, > > Bernt Hansen <bernt@norang.ca> writes: > >> Tangling doesn't work for me in git master anymore. Git bisect >> identifies the following commit as introducing the problem > > Please try the attached patch and let us know if it works. > > Thanks, That doesn't work. There's a missing ) at the end of the defalias and after I add that I get progn: Symbol's value as variable is void: intersect Regards, Bernt ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Tangling is broken in git master 2012-08-13 1:55 ` Bernt Hansen @ 2012-08-13 5:43 ` Bastien 2012-08-13 13:44 ` Eric Schulte 0 siblings, 1 reply; 16+ messages in thread From: Bastien @ 2012-08-13 5:43 UTC (permalink / raw) To: Bernt Hansen; +Cc: emacs-orgmode Bernt Hansen <bernt@norang.ca> writes: > That doesn't work. There's a missing ) at the end of the defalias and > after I add that I get Er, sorry for the typo. I've reverted this commit for now, I'll see if I can get rid of cl-labels another way. Thanks, -- Bastien ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Tangling is broken in git master 2012-08-13 5:43 ` Bastien @ 2012-08-13 13:44 ` Eric Schulte 2012-08-13 13:56 ` Bastien 0 siblings, 1 reply; 16+ messages in thread From: Eric Schulte @ 2012-08-13 13:44 UTC (permalink / raw) To: Bastien; +Cc: Bernt Hansen, emacs-orgmode Bastien <bzg@gnu.org> writes: > Bernt Hansen <bernt@norang.ca> writes: > >> That doesn't work. There's a missing ) at the end of the defalias and >> after I add that I get > > Er, sorry for the typo. > > I've reverted this commit for now, I'll see if I can get rid of > cl-labels another way. > I've just pushed up another version of this commit, which I believe removes cl-labels while still preserving tangling behavior. If you have a chance please re-check tangling with the latest Org-mode. Thanks, -- Eric Schulte http://cs.unm.edu/~eschulte ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Tangling is broken in git master 2012-08-13 13:44 ` Eric Schulte @ 2012-08-13 13:56 ` Bastien 2012-08-13 14:18 ` Eric Schulte 0 siblings, 1 reply; 16+ messages in thread From: Bastien @ 2012-08-13 13:56 UTC (permalink / raw) To: Eric Schulte; +Cc: Bernt Hansen, emacs-orgmode Hi Eric, Eric Schulte <eric.schulte@gmx.com> writes: > I've just pushed up another version of this commit, which I believe > removes cl-labels while still preserving tangling behavior. If you have > a chance please re-check tangling with the latest Org-mode. `letrec' is not available on Emacs <24.1 Your commit looks like the one I pushed here... http://orgmode.org/w/?p=org-mode.git;a=commit;h=ba16c3 ... and reverted, thanks to Bernt's report. Apart from one replacement of org-labels with `let*' in ob.el, I don't see how we can get rid of `org-labels' completely. -- Bastien ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Tangling is broken in git master 2012-08-13 13:56 ` Bastien @ 2012-08-13 14:18 ` Eric Schulte 2012-08-13 14:42 ` Bastien 2012-08-13 14:46 ` Nick Dokos 0 siblings, 2 replies; 16+ messages in thread From: Eric Schulte @ 2012-08-13 14:18 UTC (permalink / raw) To: Bastien; +Cc: Bernt Hansen, emacs-orgmode Bastien <bzg@gnu.org> writes: > Hi Eric, > > Eric Schulte <eric.schulte@gmx.com> writes: > >> I've just pushed up another version of this commit, which I believe >> removes cl-labels while still preserving tangling behavior. If you have >> a chance please re-check tangling with the latest Org-mode. > > `letrec' is not available on Emacs <24.1 > > Your commit looks like the one I pushed here... > http://orgmode.org/w/?p=org-mode.git;a=commit;h=ba16c3 > > ... and reverted, thanks to Bernt's report. > > Apart from one replacement of org-labels with `let*' in ob.el, > I don't see how we can get rid of `org-labels' completely. Oh, my apologies, I just reverted my commit. I thought letrec was an old elisp construct. I'm happy to stick with using org-labels (the code was much more readable using org-labels). I'm surprised that elisp doesn't provide any mechanism for local anonymous functions. I can't imagine why this would be an intentional design decision. Thanks, -- Eric Schulte http://cs.unm.edu/~eschulte ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Tangling is broken in git master 2012-08-13 14:18 ` Eric Schulte @ 2012-08-13 14:42 ` Bastien 2012-08-13 15:25 ` Nicolas Goaziou 2012-08-13 14:46 ` Nick Dokos 1 sibling, 1 reply; 16+ messages in thread From: Bastien @ 2012-08-13 14:42 UTC (permalink / raw) To: Eric Schulte; +Cc: Bernt Hansen, emacs-orgmode Hi Eric, Eric Schulte <eric.schulte@gmx.com> writes: > I'm surprised that elisp doesn't provide any mechanism for local > anonymous functions. (let ((my-local-func (lambda (a) (message a)))) (funcall my-local-func "Hello!")) is fine. It's just for recursive local function -- letrec provides it now, but apparently cl-labels was needed for that before. -- Bastien ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Tangling is broken in git master 2012-08-13 14:42 ` Bastien @ 2012-08-13 15:25 ` Nicolas Goaziou 2012-08-13 19:00 ` Bastien 0 siblings, 1 reply; 16+ messages in thread From: Nicolas Goaziou @ 2012-08-13 15:25 UTC (permalink / raw) To: Bastien; +Cc: Bernt Hansen, emacs-orgmode, Eric Schulte Hello, Bastien <bzg@gnu.org> writes: > Eric Schulte <eric.schulte@gmx.com> writes: > >> I'm surprised that elisp doesn't provide any mechanism for local >> anonymous functions. > > (let ((my-local-func (lambda (a) (message a)))) > (funcall my-local-func "Hello!")) > > is fine. > > It's just for recursive local function -- letrec provides it now, > but apparently cl-labels was needed for that before. You can have recursive local functions: #+begin_src emacs-lisp (let* (len ; For byte compiler. (len (lambda (l) (if (not l) 0 (1+ (funcall len (cdr l))))))) (funcall len '(1 2 3))) #+end_src Regards, -- Nicolas Goaziou ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Tangling is broken in git master 2012-08-13 15:25 ` Nicolas Goaziou @ 2012-08-13 19:00 ` Bastien 0 siblings, 0 replies; 16+ messages in thread From: Bastien @ 2012-08-13 19:00 UTC (permalink / raw) To: Nicolas Goaziou; +Cc: Bernt Hansen, emacs-orgmode, Eric Schulte Nicolas Goaziou <n.goaziou@gmail.com> writes: > You can have recursive local functions: > > #+begin_src emacs-lisp > (let* (len ; For byte compiler. > (len (lambda (l) (if (not l) 0 > (1+ (funcall len (cdr l))))))) > (funcall len '(1 2 3))) > #+end_src Indeed, neat! -- Bastien ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Tangling is broken in git master 2012-08-13 14:18 ` Eric Schulte 2012-08-13 14:42 ` Bastien @ 2012-08-13 14:46 ` Nick Dokos 2012-08-13 14:53 ` Bastien 1 sibling, 1 reply; 16+ messages in thread From: Nick Dokos @ 2012-08-13 14:46 UTC (permalink / raw) To: Eric Schulte; +Cc: Bastien, Bernt Hansen, emacs-orgmode Eric Schulte <eric.schulte@gmx.com> wrote: > Bastien <bzg@gnu.org> writes: > > > Hi Eric, > > > > Eric Schulte <eric.schulte@gmx.com> writes: > > > >> I've just pushed up another version of this commit, which I believe > >> removes cl-labels while still preserving tangling behavior. If you have > >> a chance please re-check tangling with the latest Org-mode. > > > > `letrec' is not available on Emacs <24.1 > > > > Your commit looks like the one I pushed here... > > http://orgmode.org/w/?p=org-mode.git;a=commit;h=ba16c3 > > > > ... and reverted, thanks to Bernt's report. > > > > Apart from one replacement of org-labels with `let*' in ob.el, > > I don't see how we can get rid of `org-labels' completely. > > Oh, my apologies, I just reverted my commit. I thought letrec was an > old elisp construct. I'm happy to stick with using org-labels (the code > was much more readable using org-labels). > > I'm surprised that elisp doesn't provide any mechanism for local > anonymous functions. I can't imagine why this would be an intentional > design decision. > Can't the definition of letrec in emacs24 be lifted bodily into org-compat.el (or whatever the correct place is) as a compatibility-with-emacs-23 macro? Nick ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Tangling is broken in git master 2012-08-13 14:46 ` Nick Dokos @ 2012-08-13 14:53 ` Bastien 2012-08-13 15:38 ` Nick Dokos 0 siblings, 1 reply; 16+ messages in thread From: Bastien @ 2012-08-13 14:53 UTC (permalink / raw) To: nicholas.dokos; +Cc: Bernt Hansen, emacs-orgmode, Eric Schulte Hi Nick, Nick Dokos <nicholas.dokos@hp.com> writes: > Can't the definition of letrec in emacs24 be lifted bodily into org-compat.el > (or whatever the correct place is) as a compatibility-with-emacs-23 macro? I don't think it's worth the effort. The current code works and compiles without warnings for the user. Getting rid of org-flet was to make things a bit more "elispy", but I'm fine with `org-labels' and those four lines of warnings- for-developers-only. -- Bastien ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Tangling is broken in git master 2012-08-13 14:53 ` Bastien @ 2012-08-13 15:38 ` Nick Dokos 2012-08-13 19:00 ` Bastien 0 siblings, 1 reply; 16+ messages in thread From: Nick Dokos @ 2012-08-13 15:38 UTC (permalink / raw) To: Bastien; +Cc: Bernt Hansen, emacs-orgmode, Eric Schulte Bastien <bzg@gnu.org> wrote: > Hi Nick, > > Nick Dokos <nicholas.dokos@hp.com> writes: > > > Can't the definition of letrec in emacs24 be lifted bodily into org-compat.el > > (or whatever the correct place is) as a compatibility-with-emacs-23 macro? > > I don't think it's worth the effort. > > The current code works and compiles without warnings for the user. > What about future code? IME, it's always worthwhile to be thinking about ways to avoid future bugs. > Getting rid of org-flet was to make things a bit more "elispy", > but I'm fine with `org-labels' and those four lines of warnings- > for-developers-only. > It's more the freedom that it gives to developers (i.e Eric S. :-) ) who are used to writing code a certain way: the way it is now, they've got to keep in mind that letrec is not valid for emacs23 and write the code differently - I'd suggest that that can be a source of bugs that would be avoided with a compatibility macro. But maybe the compatibility macro would be a bigger problem - I don't know for sure. In particular, the file would need a periodic cleanup to get rid of old cruft, but if it's a once-a-year-or-two occurrence, that might not be too bad. Nick ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: Tangling is broken in git master 2012-08-13 15:38 ` Nick Dokos @ 2012-08-13 19:00 ` Bastien 0 siblings, 0 replies; 16+ messages in thread From: Bastien @ 2012-08-13 19:00 UTC (permalink / raw) To: nicholas.dokos; +Cc: Bernt Hansen, emacs-orgmode, Eric Schulte Hi Nick, Nick Dokos <nicholas.dokos@hp.com> writes: > I'd suggest that that can be a source of bugs that would be > avoided with a compatibility macro. `org-labels' is an alias for `cl-labels' (when available) or `labels'. There is no need for a compatibility macro here, as the current code is compatible with both Emacs 23 and Emacs 24 -- and hopefully later versions of Emacs. The question is rather whether we want to be very strict and replace as much cl-* constructs as possible. Nicolas shown a way to let-bind functions recursively (which is simple and neat, by the way), so yes, I'd favor replacing org-labels in this case. Especially because the cl-labels and labels macros do not work exactly the same way. See labels' docstring: ... Like `cl-labels' except that the lexical scoping is handled via `lexical-let' rather than relying on `lexical-binding'. > But maybe the compatibility macro would be a bigger problem - I don't > know for sure. In particular, the file would need a periodic cleanup to > get rid of old cruft, but if it's a once-a-year-or-two occurrence, that > might not be too bad. Always good to know there are many people we can rely on to clean the old cruft :) -- Bastien ^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2012-08-13 18:59 UTC | newest] Thread overview: 16+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-08-12 1:03 Tangling is broken in git master Bernt Hansen 2012-08-12 6:27 ` Achim Gratz 2012-08-13 1:57 ` Bernt Hansen 2012-08-12 8:43 ` Bastien 2012-08-13 1:55 ` Bernt Hansen 2012-08-13 5:43 ` Bastien 2012-08-13 13:44 ` Eric Schulte 2012-08-13 13:56 ` Bastien 2012-08-13 14:18 ` Eric Schulte 2012-08-13 14:42 ` Bastien 2012-08-13 15:25 ` Nicolas Goaziou 2012-08-13 19:00 ` Bastien 2012-08-13 14:46 ` Nick Dokos 2012-08-13 14:53 ` Bastien 2012-08-13 15:38 ` Nick Dokos 2012-08-13 19:00 ` Bastien
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).