emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] [bug?][ob-core] using remove-if


From: Eric Schulte
Subject: Re: [O] [bug?][ob-core] using remove-if
Date: Mon, 29 Jul 2013 18:28:43 -0600
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux)

Rasmus <address@hidden> writes:

> Hi,
>
> Regarding this commit:
>
>           commit 3142297d69f6063221215757a3ba9c74adcf3e43
>           Author: Eric Schulte <address@hidden>
>           Date:   Fri Jul 26 11:48:51 2013 -0600.
>
> remove-if is introduced in ob-core.el:
>
>           (setf (cdr (assoc param params))
>                 (remove-if (lambda (pair) (equal (car pair) name))
>                            (cdr (assoc param params))))
>           (setf params (remove-if (lambda (pair) (and (equal (car pair) param)
>                                                  (null (cdr pair))))
>
> I personally don't care too much if Org depends on cl, but it breaks
> async export since cl is usually not loaded.
>
> Thus, I guess it should (i) either be changed to org-remove-if or
> there should be an autoload to remove-if.  I don't feel very
> comfortable about messing with ob-core ob-core and I don't know if
> org-remove-if is a drop-in replacement of remove-if so I havne't made
> a patch.
>
> –Rasmus

Thanks for catching this, I've just pushed up a fix.

To complain to no-one in particular for a second...

  The exclusion of the cl functions from Emacs packages including both
  functions like `remove-if', and basic macros like `flet', has one of
  two possible consequences.  Either (1) authors work around the missing
  functionality by contorting the logic of their code so as to not need
  this functionality, or (2) the function is re-implemented with a
  package specific prefix and often slightly different semantics.  I
  know I've had to do both in my own Org-mode coding, and I believe most
  major packages do both of these [1].

Best,

Footnotes: 
[1]  ,----[M-x apropos remove-if RET]
     | Type RET on a type label to view its full documentation.
     | 
     | cl-remove-if
     |   Function: Remove all items satisfying PREDICATE in SEQ.
     |   Properties: autoload
     | cl-remove-if-not
     |   Function: Remove all items not satisfying PREDICATE in SEQ.
     |   Properties: autoload
     | ert--remove-if-not
     |   Function: A reimplementation of `remove-if-not'.
     | gnus-remove-if
     |   Function: Return a copy of SEQUENCE with all items satisfying
     |             PREDICATE removed.
     | gnus-remove-if-not
     |   Function: Return a copy of SEQUENCE with all items not satisfying
     |             PREDICATE removed.
     | org-remove-if
     |   Function: Remove everything from SEQ that fulfills PREDICATE.
     | org-remove-if-not
     |   Function: Remove everything from SEQ that does not fulfill
     |             PREDICATE.
     | recentf-remove-if-non-kept
     |   Function: Remove FILENAME from the recent list, if file is not kept.
     |   Properties: byte-optimizer
     | remove-if
     |   Function: Remove all items satisfying PREDICATE in SEQ.
     | remove-if-not
     |   Function: Remove all items not satisfying PREDICATE in SEQ.
     | widget-remove-if
     |   Function: (not documented)
     `----

-- 
Eric Schulte
http://cs.unm.edu/~eschulte
PGP fingerprint: FA8D C2C3 E8A0 A749 34CD  9DCF 3C1B 8581 614C A05D



reply via email to

[Prev in Thread] Current Thread [Next in Thread]