[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [External] : Re: Lisp files that load cl-lib in problematical ways
From: |
Eli Zaretskii |
Subject: |
Re: [External] : Re: Lisp files that load cl-lib in problematical ways |
Date: |
Wed, 01 Nov 2023 14:32:51 +0200 |
> From: Emanuel Berg <incal@dataswamp.org>
> Date: Wed, 01 Nov 2023 12:16:26 +0100
>
> Richard Stallman wrote:
>
> > Would someoe like to filter that list to remove everything
> > not defined in cl-lib.el itself?
>
> One can do this in zsh by means of an extended glob pattern.
>
> We see that `cl-pushnew' is on position #15, used 169 times.
> So it is popular, but perhaps less so than expected?
>
> `cl-loop' (#2, 979 times) and `cl-incf' (#3, 715 times) are as
> expected very popular.
>
> And there are more stuff that has been mentioned that appears
> on the top 10 part of the list.
>
> It is the list processing langauge :P
>
> #! /bin/zsh
> #
> # this file:
> # https://dataswamp.org/~incal/conf/.zsh/emacs
>
> setopt extendedglob
>
> cle () {
> cd ~/src/emacs
> grep -E -h -o 'cl-[-a-z]+' **/*.el~lisp/emacs-lisp/cl-lib.el |
> sort |
> uniq -c |
> sort -r -b -n |
> head -n 100
> }
>
> $ cle
> 1416 cl-defmethod
> 979 cl-loop
> 715 cl-incf
> 611 cl-lib
> 486 cl-assert
> 309 cl-letf
> 301 cl-seq
> 279 cl-defstruct
> 257 cl-defgeneric
> 227 cl-case
> 209 cl-end
> 208 cl-list
> 189 cl-call-next-method
> 172 cl-start
> 169 cl-pushnew
> 149 cl-defun
> 142 cl-p
> 142 cl-decf
> 135 cl-flet
> 132 cl-return
> 130 cl-keys
> 125 cl--loop-args
> 114 cl--generic-
> 106 cl-block
> 103 cl-destructuring-bind
> 101 cl-macs
> 99 cl-check-type
> 95 cl-some
> 89 cl-kwds
> 88 cl-typep
> 76 cl-prin
> 72 cl-getf
> 67 cl-pred
> 67 cl--find-class
> 66 cl-remove-if-not
> 66 cl-defmacro
> 66 cl-callf
> 65 cl-labels
> 65 cl-extra
> 63 cl-x
> 62 cl-second
> 62 cl-return-from
> 62 cl-mode
> 62 cl-count
> 61 cl-or-cast
> 60 cl-set-difference
> 53 cl-remove-if
> 53 cl-generic
> 51 cl-ecase
> 50 cl-plusp
> 50 cl-first
> 50 cl-cvs
> 49 cl-position
> 47 cl-program
> 47 cl-mapcan
> 47 cl-every
> 46 cl-third
> 46 cl-res
> 45 cl-tempo-comma
> 45 cl-substitute
> 44 cl-current-ic
> 43 cl-subseq
> 42 cl-key
> 41 cl-item
> 39 cl-tempo-right-paren
> 39 cl-tempo-left-paren
> 39 cl-function
> 39 cl-dolist
> 38 cl-print-object
> 38 cl-mapcar
> 37 cl-tempo-tags
> 37 cl--slot-descriptor-name
> 37 cl-macrolet
> 37 cl-do
> 36 cl-progv
> 36 cl-find-if
> 35 cl-f
> 35 cl-embed-code
> 34 cl-tree
> 34 cl-func
> 33 cl-gensym
> 33 cl-evenp
> 33 cl-defsubst
> 33 cl-check-register
> 32 cl-rest
> 32 cl-print
> 32 cl-pos
> 32 cl-get-next-code
> 30 cl-remove-duplicates
> 30 cl--loop-body
> 30 cl-block-end-regexp
> 30 cl-block-begin-regexp
> 30 cl-basic-offset
> 29 cl-remove
> 29 cl-i
> 28 cl-union
> 28 cl-member
> 28 cl-adjoin
> 27 cl-new
> 27 cl-mismatch
This list is not what Richard asked for, AFAIU. Richard asked for a
list of functions defined in cl-lib.el, and only functions defined in
cl-lib.el. The list above shows stuff that doesn't fit the request;
some examples of irrelevant symbols:
cl-defmethod
cl-defgeneric
cl-loop
cl-assert
cl-defstruct
cl-case
cl-end
cl-list
and many more.
I conclude that the above script is not a good way of producing a
useful list that Richard asked for.