unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Use of `dash` and `s` functions by MELPA packages
@ 2015-01-27  9:13 Alexis
  2015-01-27 23:39 ` Phillip Lord
  2015-01-28 10:27 ` Nicolas Richard
  0 siblings, 2 replies; 6+ messages in thread
From: Alexis @ 2015-01-27  9:13 UTC (permalink / raw)
  To: emacs-devel


Hi all,

Out of interest, i've written a simple Perl5 script to analyse the
extent to which the various functions in the `dash` and `s` packages are
used by packages on MELPA. i've included the script within the org-babel
block at the end of this message; i imagine there are various issues
with its methodology and/or implementation, but feel it's at least a
starting point. Variables at the top of the script allow it to be
modified to analyse the use of libraries other than `dash` and `s`.

Comments in the script describe how i built all packages locally for the
script to work on. The download and build process took around 4 hours,
via a cable 'net connection and a Core i5 with 4G of RAM. Running the
script takes less than 10 minutes to complete on my system.


--- Results ---

###
### Usage of 'dash' by MELPA packages
###

'dash' is used by 259/4506 files (5.75%).


# Function usage counts, sorted by decreasing frequency

Count       %       Function
-----------------------------------------
 311      14.55     -when
 299      13.99     -map
 159       7.44     --map
  97       4.54     -filter
  91       4.26     --each
  76       3.56     -each
  76       3.56     --filter
  74       3.46     -if
  60       2.81     -contains
  52       2.43     -flatten
  48       2.25     --first
  42       1.97     -first
  36       1.68     -last
  36       1.68     --remove
  35       1.64     -remove
  30       1.40     --when
  29       1.36     -mapcat
  26       1.22     -any
  25       1.17     -difference
  25       1.17     --reduce
  24       1.12     -reduce
  24       1.12     -concat
  24       1.12     --any
  22       1.03     -elem
  22       1.03     -distinct
  21       0.98     -union
  17       0.80     -find
  17       0.80     -all
  16       0.75     -take
  16       0.75     -sort
  16       0.75     --if
  15       0.70     -select
  15       0.70     -drop
  15       0.70     --mapcat
  14       0.66     -partial
  14       0.66     --sort
  12       0.56     -let
  11       0.51     -zip
  11       0.51     -snoc
  11       0.51     -slice
  11       0.51     -partition
  10       0.47     --keep
   8       0.37     -repeat
   8       0.37     -non
   8       0.37     -min
   8       0.37     --all
   7       0.33     -intersection
   7       0.33     -interpose
   6       0.28     -keep
   6       0.28     -insert
   6       0.28     -dotimes
   6       0.28     --group
   6       0.28     --find
   6       0.28     --dotimes
   5       0.23     -tree
   5       0.23     -list
   5       0.23     --separate
   4       0.19     -replace
   4       0.19     -max
   4       0.19     -lambda
   4       0.19     --drop
   3       0.14     -value
   3       0.14     -iterate
   3       0.14     -is
   3       0.14     -group
   3       0.14     --take
   2       0.09     -separate
   2       0.09     -interleave
   2       0.09     -cons
   2       0.09     -clone
   2       0.09     --split
   2       0.09     --last
   1       0.05     -update
   1       0.05     -table
   1       0.05     -sum
   1       0.05     -split
   1       0.05     -only
   1       0.05     -butlast
   1       0.05     -annotate
   1       0.05     --zip
   1       0.05     --tree
   1       0.05     --partition
   1       0.05     --none
   1       0.05     --max
   0       0.00     -unfold
   0       0.00     -splice
   0       0.00     -same
   0       0.00     -rotate
   0       0.00     -product
   0       0.00     -pad
   0       0.00     -none
   0       0.00     -grade
   0       0.00     -fix
   0       0.00     -cycle
   0       0.00     -count
   0       0.00     --update
   0       0.00     --unfold
   0       0.00     --splice
   0       0.00     --only
   0       0.00     --min
   0       0.00     --iterate
   0       0.00     --fix
   0       0.00     --count
   0       0.00     --annotate


# Function usage counts, sorted by function name

Function                       Count      %
---------------------------------------------
--all                            8       0.37
--annotate                       0       0.00
--any                           24       1.12
--count                          0       0.00
--dotimes                        6       0.28
--drop                           4       0.19
--each                          91       4.26
--filter                        76       3.56
--find                           6       0.28
--first                         48       2.25
--fix                            0       0.00
--group                          6       0.28
--if                            16       0.75
--iterate                        0       0.00
--keep                          10       0.47
--last                           2       0.09
--map                          159       7.44
--mapcat                        15       0.70
--max                            1       0.05
--min                            0       0.00
--none                           1       0.05
--only                           0       0.00
--partition                      1       0.05
--reduce                        25       1.17
--remove                        36       1.68
--separate                       5       0.23
--sort                          14       0.66
--splice                         0       0.00
--split                          2       0.09
--take                           3       0.14
--tree                           1       0.05
--unfold                         0       0.00
--update                         0       0.00
--when                          30       1.40
--zip                            1       0.05
-all                            17       0.80
-annotate                        1       0.05
-any                            26       1.22
-butlast                         1       0.05
-clone                           2       0.09
-concat                         24       1.12
-cons                            2       0.09
-contains                       60       2.81
-count                           0       0.00
-cycle                           0       0.00
-difference                     25       1.17
-distinct                       22       1.03
-dotimes                         6       0.28
-drop                           15       0.70
-each                           76       3.56
-elem                           22       1.03
-filter                         97       4.54
-find                           17       0.80
-first                          42       1.97
-fix                             0       0.00
-flatten                        52       2.43
-grade                           0       0.00
-group                           3       0.14
-if                             74       3.46
-insert                          6       0.28
-interleave                      2       0.09
-interpose                       7       0.33
-intersection                    7       0.33
-is                              3       0.14
-iterate                         3       0.14
-keep                            6       0.28
-lambda                          4       0.19
-last                           36       1.68
-let                            12       0.56
-list                            5       0.23
-map                           299      13.99
-mapcat                         29       1.36
-max                             4       0.19
-min                             8       0.37
-non                             8       0.37
-none                            0       0.00
-only                            1       0.05
-pad                             0       0.00
-partial                        14       0.66
-partition                      11       0.51
-product                         0       0.00
-reduce                         24       1.12
-remove                         35       1.64
-repeat                          8       0.37
-replace                         4       0.19
-rotate                          0       0.00
-same                            0       0.00
-select                         15       0.70
-separate                        2       0.09
-slice                          11       0.51
-snoc                           11       0.51
-sort                           16       0.75
-splice                          0       0.00
-split                           1       0.05
-sum                             1       0.05
-table                           1       0.05
-take                           16       0.75
-tree                            5       0.23
-unfold                          0       0.00
-union                          21       0.98
-update                          1       0.05
-value                           3       0.14
-when                          311      14.55
-zip                            11       0.51


# Files using 'dash', sorted by usage count

Usage(s)  File
-----------------------------------------
 162      smartparens
 108      projectile
  74      prodigy
  74      emr-elisp
  49      origami
  40      skeletor
  38      flycheck
  38      bog
  37      clj-refactor
  36      magnatune
  36      js2r-functions
  34      cask
  33      cake2
  30      turnip
  29      dired-subtree
  28      dired-filter
  25      m-buffer
  24      f
  24      cider-interaction
  23      workgroups2
  22      malinka
  22      jumblr
  21      virtualenvwrapper
  21      helm-bibtex
  21      ecukes-run
  20      wacs-interactive
  20      ecukes-reporter
  18      wonderland
  18      sclang-doc-mode
  18      anaconda-mode
  17      ox-pandoc
  17      commander
  15      projectile-rails
  15      elmacro
  15      color-identifiers-mode
  15      bts
  13      wacs-configuration
  13      omnisharp
  13      fsharp-mode-completion
  13      bbdb-csv-import
  12      sclang-ac-mode
  12      rswitcher
  12      org-drill-table
  12      httprepl
  12      dash-functional
  11      sclang-extensions-utils
  11      org-trello-controller
  11      nrepl-client
  11      litable
  11      keyset
  11      ert-modeline
  11      ecukes-parse
  10      undercover
  10      sclang-extensions
  10      packed
  10      org-trello-data
  10      org-trello-buffer
  10      helm-projectile
  10      emr-c
  10      emr
  10      ebib-utils
  10      dired-ranger
  10      cider-spy
  10      cask-cli
   9      org-trello-proxy
   9      org-transform-tree-table
   8      git
   8      flycheck-mercury
   8      edbi-django
   8      company-tern
   8      color-moccur
   8      cider-test
   7      wrap-region
   7      smart-mode-line
   7      req-package
   7      psci
   7      eyebrowse
   7      ecukes-helpers
   7      dired-hacks-utils
   7      creds
   7      cider-stacktrace
   7      ansi
   6      soundklaus
   6      quickref
   6      paradox
   6      nvm
   6      multifiles
   6      markdown-toc
   6      malabar-reflection
   6      malabar-mode
   6      evil-visual-mark-mode
   6      edts-project
   6      ebib
   5      string-edit
   5      smartparens-html
   5      scala-outline-popup
   5      pallet
   5      orgit
   5      org-trello-action
   5      malabar-project
   5      lxc
   5      lentic-asciidoc
   5      jvm-mode
   5      interval-tree
   5      imgix
   5      helm-flycheck
   5      grass-mode
   5      ert-runner
   5      ensime-config
   5      dired-open
   5      decl
   5      cider
   5      ag
   4      with-editor
   4      web
   4      wacs-util
   4      relative-buffers
   4      org-trello-backend
   4      op-export
   4      navorski
   4      minitest
   4      malabar-import
   4      js2r-helpers
   4      espuds
   4      esh-help
   4      elwm
   4      edts-xref
   4      ecukes-load
   4      ecukes-cli
   4      ecukes
   4      clocker
   3      wand
   3      thumb-frm
   3      tco
   3      simplezen
   3      shadchen
   3      servant
   3      rake
   3      org-trello-cbx
   3      omnisharp-utils
   3      omnisharp-server-actions
   3      omnisharp-auto-complete-actions
   3      noflet
   3      mustache-render
   3      magma-scan
   3      lentic-block
   3      flycheck-haskell
   3      flycheck-ert
   3      emamux-ruby-test
   3      cdnjs
   3      camcorder
   3      bibslurp
   3      auto-compile
   3      ace-jump-buffer
   2      ycmd
   2      tree-buffer
   2      travis-version
   2      solarized
   2      rubocop
   2      recompile-on-save
   2      py-test
   2      prosjekt
   2      pip-requirements
   2      outshine
   2      outline-magic
   2      org-trello-hash
   2      misc-cmds
   2      marmalade-client
   2      malabar-util
   2      malabar-service
   2      magma-smie
   2      magit-find-file
   2      js2r-vars
   2      js2-refactor
   2      ivs-edit
   2      inf-fsharp-mode
   2      helm-projectile-all
   2      hamlet-mode
   2      grunt
   2      go-projectile
   2      gnomenm
   2      gitlab-version
   2      gitlab-ui
   2      flycheck-pos-tip
   2      flycheck-d-unittest
   2      ensime-company
   2      ensime-client
   2      enh-ruby-mode
   2      edts-navigate
   2      ecukes-steps
   2      ecukes-core
   2      doremi-frm
   2      date-field
   2      company-anaconda
   2      cider-util
   2      cider-grimoire
   2      cider-eldoc
   1      with-namespace
   1      wacs-init
   1      trident-mode
   1      travis-utils
   1      tern-django
   1      tbx2org
   1      tagedit
   1      sonic-pi-console
   1      smartparens-config
   1      serverspec
   1      sclang-post-mode
   1      replace-from-region
   1      projmake-elmm
   1      overseer
   1      orglink
   1      org-trello-utils
   1      org-trello-setup
   1      org-trello-entity
   1      org-trello-api
   1      org-trello
   1      org-projectile
   1      marcopolo-version
   1      malabar-semanticdb
   1      malabar-ede-maven
   1      maker-mode
   1      lib-requires
   1      lentic-org
   1      lentic
   1      highlight
   1      helm-gitlab
   1      helm-dirset
   1      helm-aws
   1      helm-ad
   1      flycheck-tip
   1      flycheck-rust
   1      flycheck-ghcmod
   1      flycheck-color-mode-line
   1      flycheck-cask
   1      fakir
   1      evm
   1      eval-in-repl
   1      elnode-proxy
   1      edts-debug
   1      edts-code
   1      ecukes-template
   1      ecukes-reporter-magnars
   1      ecukes-hooks
   1      ecukes-byte-compile
   1      ebib-keywords
   1      dispass
   1      dired-narrow
   1      datomic-snippets
   1      codesearch
   1      clojure-quick-repls
   1      cider-client
   1      cider-classpath
   1      cider-apropos
   1      auto-package-update
   1      angular-snippets
   1      amd-mode
   1      aggressive-fill-paragraph
   1      ac-anaconda


# Files using 'dash', sorted alphabetically

File                             Usage(s)
-----------------------------------------
ac-anaconda                         1
ace-jump-buffer                     3
ag                                  5
aggressive-fill-paragraph           1
amd-mode                            1
anaconda-mode                      18
angular-snippets                    1
ansi                                7
auto-compile                        3
auto-package-update                 1
bbdb-csv-import                    13
bibslurp                            3
bog                                38
bts                                15
cake2                              33
camcorder                           3
cask                               34
cask-cli                           10
cdnjs                               3
cider                               5
cider-apropos                       1
cider-classpath                     1
cider-client                        1
cider-eldoc                         2
cider-grimoire                      2
cider-interaction                  24
cider-spy                          10
cider-stacktrace                    7
cider-test                          8
cider-util                          2
clj-refactor                       37
clocker                             4
clojure-quick-repls                 1
codesearch                          1
color-identifiers-mode             15
color-moccur                        8
commander                          17
company-anaconda                    2
company-tern                        8
creds                               7
dash-functional                    12
date-field                          2
datomic-snippets                    1
decl                                5
dired-filter                       28
dired-hacks-utils                   7
dired-narrow                        1
dired-open                          5
dired-ranger                       10
dired-subtree                      29
dispass                             1
doremi-frm                          2
ebib                                6
ebib-keywords                       1
ebib-utils                         10
ecukes                              4
ecukes-byte-compile                 1
ecukes-cli                          4
ecukes-core                         2
ecukes-helpers                      7
ecukes-hooks                        1
ecukes-load                         4
ecukes-parse                       11
ecukes-reporter                    20
ecukes-reporter-magnars             1
ecukes-run                         21
ecukes-steps                        2
ecukes-template                     1
edbi-django                         8
edts-code                           1
edts-debug                          1
edts-navigate                       2
edts-project                        6
edts-xref                           4
elmacro                            15
elnode-proxy                        1
elwm                                4
emamux-ruby-test                    3
emr                                10
emr-c                              10
emr-elisp                          74
enh-ruby-mode                       2
ensime-client                       2
ensime-company                      2
ensime-config                       5
ert-modeline                       11
ert-runner                          5
esh-help                            4
espuds                              4
eval-in-repl                        1
evil-visual-mark-mode               6
evm                                 1
eyebrowse                           7
f                                  24
fakir                               1
flycheck                           38
flycheck-cask                       1
flycheck-color-mode-line            1
flycheck-d-unittest                 2
flycheck-ert                        3
flycheck-ghcmod                     1
flycheck-haskell                    3
flycheck-mercury                    8
flycheck-pos-tip                    2
flycheck-rust                       1
flycheck-tip                        1
fsharp-mode-completion             13
git                                 8
gitlab-ui                           2
gitlab-version                      2
gnomenm                             2
go-projectile                       2
grass-mode                          5
grunt                               2
hamlet-mode                         2
helm-ad                             1
helm-aws                            1
helm-bibtex                        21
helm-dirset                         1
helm-flycheck                       5
helm-gitlab                         1
helm-projectile                    10
helm-projectile-all                 2
highlight                           1
httprepl                           12
imgix                               5
inf-fsharp-mode                     2
interval-tree                       5
ivs-edit                            2
js2-refactor                        2
js2r-functions                     36
js2r-helpers                        4
js2r-vars                           2
jumblr                             22
jvm-mode                            5
keyset                             11
lentic                              1
lentic-asciidoc                     5
lentic-block                        3
lentic-org                          1
lib-requires                        1
litable                            11
lxc                                 5
m-buffer                           25
magit-find-file                     2
magma-scan                          3
magma-smie                          2
magnatune                          36
maker-mode                          1
malabar-ede-maven                   1
malabar-import                      4
malabar-mode                        6
malabar-project                     5
malabar-reflection                  6
malabar-semanticdb                  1
malabar-service                     2
malabar-util                        2
malinka                            22
marcopolo-version                   1
markdown-toc                        6
marmalade-client                    2
minitest                            4
misc-cmds                           2
multifiles                          6
mustache-render                     3
navorski                            4
noflet                              3
nrepl-client                       11
nvm                                 6
omnisharp                          13
omnisharp-auto-complete-actions     3
omnisharp-server-actions            3
omnisharp-utils                     3
op-export                           4
org-drill-table                    12
org-projectile                      1
org-transform-tree-table            9
org-trello                          1
org-trello-action                   5
org-trello-api                      1
org-trello-backend                  4
org-trello-buffer                  10
org-trello-cbx                      3
org-trello-controller              11
org-trello-data                    10
org-trello-entity                   1
org-trello-hash                     2
org-trello-proxy                    9
org-trello-setup                    1
org-trello-utils                    1
orgit                               5
orglink                             1
origami                            49
outline-magic                       2
outshine                            2
overseer                            1
ox-pandoc                          17
packed                             10
pallet                              5
paradox                             6
pip-requirements                    2
prodigy                            74
projectile                        108
projectile-rails                   15
projmake-elmm                       1
prosjekt                            2
psci                                7
py-test                             2
quickref                            6
rake                                3
recompile-on-save                   2
relative-buffers                    4
replace-from-region                 1
req-package                         7
rswitcher                          12
rubocop                             2
scala-outline-popup                 5
sclang-ac-mode                     12
sclang-doc-mode                    18
sclang-extensions                  10
sclang-extensions-utils            11
sclang-post-mode                    1
servant                             3
serverspec                          1
shadchen                            3
simplezen                           3
skeletor                           40
smart-mode-line                     7
smartparens                       162
smartparens-config                  1
smartparens-html                    5
solarized                           2
sonic-pi-console                    1
soundklaus                          6
string-edit                         5
tagedit                             1
tbx2org                             1
tco                                 3
tern-django                         1
thumb-frm                           3
travis-utils                        1
travis-version                      2
tree-buffer                         2
trident-mode                        1
turnip                             30
undercover                         10
virtualenvwrapper                  21
wacs-configuration                 13
wacs-init                           1
wacs-interactive                   20
wacs-util                           4
wand                                3
web                                 4
with-editor                         4
with-namespace                      1
wonderland                         18
workgroups2                        23
wrap-region                         7
ycmd                                2


### End


###
### Usage of 's' by MELPA packages
###

's' is used by 161/4506 files (3.57%).


# Function usage counts, sorted by decreasing frequency

Count       %       Function
-----------------------------------------
 134      12.97     s-match
 130      12.58     s-join
 100       9.68     s-concat
  84       8.13     s-split
  77       7.45     s-matches
  70       6.78     s-trim
  67       6.49     s-starts
  58       5.61     s-blank
  55       5.32     s-chop
  43       4.16     s-equals
  36       3.48     s-replace
  33       3.19     s-ends
  23       2.23     s-contains
  15       1.45     s-lines
  13       1.26     s-format
  11       1.06     s-prepend
  11       1.06     s-append
   9       0.87     s-repeat
   9       0.87     s-lex
   6       0.58     s-chomp
   5       0.48     s-index
   5       0.48     s-downcase
   4       0.39     s-truncate
   4       0.39     s-present
   4       0.39     s-numeric
   3       0.29     s-word
   3       0.29     s-slice
   3       0.29     s-shared
   2       0.19     s-with
   2       0.19     s-upcase
   2       0.19     s-right
   2       0.19     s-pad
   2       0.19     s-lower
   2       0.19     s-left
   2       0.19     s-dashed
   1       0.10     s-upper
   1       0.10     s-snake
   1       0.10     s-presence
   1       0.10     s-capitalize
   0       0.00     s-wrap
   0       0.00     s-uppercase
   0       0.00     s-titleized
   0       0.00     s-titleize
   0       0.00     s-reverse
   0       0.00     s-mixedcase
   0       0.00     s-lowercase
   0       0.00     s-less
   0       0.00     s-count
   0       0.00     s-collapse
   0       0.00     s-center
   0       0.00     s-capitalized
   0       0.00     s--truthy
   0       0.00     s--mapcar
   0       0.00     s--aget


# Function usage counts, sorted by function name

Function                       Count      %
---------------------------------------------
s--aget                          0       0.00
s--mapcar                        0       0.00
s--truthy                        0       0.00
s-append                        11       1.06
s-blank                         58       5.61
s-capitalize                     1       0.10
s-capitalized                    0       0.00
s-center                         0       0.00
s-chomp                          6       0.58
s-chop                          55       5.32
s-collapse                       0       0.00
s-concat                       100       9.68
s-contains                      23       2.23
s-count                          0       0.00
s-dashed                         2       0.19
s-downcase                       5       0.48
s-ends                          33       3.19
s-equals                        43       4.16
s-format                        13       1.26
s-index                          5       0.48
s-join                         130      12.58
s-left                           2       0.19
s-less                           0       0.00
s-lex                            9       0.87
s-lines                         15       1.45
s-lower                          2       0.19
s-lowercase                      0       0.00
s-match                        134      12.97
s-matches                       77       7.45
s-mixedcase                      0       0.00
s-numeric                        4       0.39
s-pad                            2       0.19
s-prepend                       11       1.06
s-presence                       1       0.10
s-present                        4       0.39
s-repeat                         9       0.87
s-replace                       36       3.48
s-reverse                        0       0.00
s-right                          2       0.19
s-shared                         3       0.29
s-slice                          3       0.29
s-snake                          1       0.10
s-split                         84       8.13
s-starts                        67       6.49
s-titleize                       0       0.00
s-titleized                      0       0.00
s-trim                          70       6.78
s-truncate                       4       0.39
s-upcase                         2       0.19
s-upper                          1       0.10
s-uppercase                      0       0.00
s-with                           2       0.19
s-word                           3       0.29
s-wrap                           0       0.00


# Files using 's', sorted by usage count

Usage(s)  File
-----------------------------------------
  70      clj-refactor
  35      sclang-extensions-utils
  35      projectile
  32      malinka
  32      ecukes-parse
  31      emr-elisp
  27      projectile-rails
  27      commander
  26      skeletor
  26      list-packages-ext
  24      helm-bibtex
  22      turnip
  20      cake2
  18      weechat
  18      sclang-ac-mode
  18      melpa-upstream-visit
  17      ecukes-reporter
  16      fsharp-mode-completion
  16      fountain-mode
  15      virtualenvwrapper
  14      prodigy
  14      emr
  13      sphinx-doc
  13      mustache-lex
  12      simplezen
  10      soundklaus
  10      org-trello-data
  10      nvm
  10      gotest
   9      magnatune
   9      magit-gh-pulls
   9      httprepl
   9      flycheck-mercury
   9      espuds
   9      ert-runner
   9      emamux-ruby-test
   8      sclang-post-mode
   8      ecukes-run
   7      weechat-relay
   7      phpunit
   7      org-trello-cbx
   7      mustache-render
   7      git
   7      elmacro
   7      cerbere-phpunit
   6      web
   6      org-drill-table
   6      ecukes-cli
   6      bibslurp
   5      timesheet
   5      marcopolo-utils
   5      maker-mode
   5      jumblr
   5      ecukes
   5      cask-cli
   5      bts
   5      ag
   4      weechat-image
   4      weechat-color
   4      show-css
   4      relative-buffers
   4      mustache-parse
   4      maven-test-mode
   4      marcopolo-registry
   4      imgix
   4      helm-gitlab
   4      helm-dirset
   4      gradle-mode
   4      f
   4      emr-scheme
   4      emr-c
   4      cerbere-gotest
   3      weechat-corrector
   3      weechat-button
   3      travis-utils
   3      tagedit
   3      sclang-doc-mode
   3      psci
   3      password-store
   3      markdown-toc
   3      marcopolo-mode
   3      elmine
   3      ecukes-steps
   3      ecukes-load
   3      crm-custom
   3      company-ycmd
   3      cake-inflector
   3      buffer-combine
   3      angular-snippets
   2      weechat-tracking
   2      weechat-spelling
   2      weechat-cmd
   2      wand
   2      serverspec
   2      s-buffer
   2      org-trello-proxy
   2      org-trello-buffer
   2      navorski
   2      marcopolo-hub
   2      magma-interactive
   2      helm-github-stars
   2      hamlet-mode
   2      goto-gem
   2      gitlab-utils
   2      gitlab-issues
   2      gitlab-groups
   2      fsharp-mode
   2      ert-modeline
   2      ensime-company
   2      elnode-proxy
   2      edbi-django
   2      ecukes-reporter-landing
   2      ecukes-core
   2      company-tern
   2      ansible
   2      amd-mode
   1      weechat-core
   1      travis-repos
   1      travis-mode
   1      travis-builds
   1      tbx2org
   1      stock-ticker
   1      signature-display
   1      signature-backend
   1      shelldoc
   1      quickref
   1      pallet
   1      org-trello-utils
   1      org-trello-setup
   1      org-transform-tree-table
   1      livid-mode
   1      kurecolor
   1      js2r-helpers
   1      js2r-conditionals
   1      http
   1      hookify
   1      helm-project-persist
   1      helm-bm
   1      helm-backup
   1      gnomenm
   1      gitlab-session
   1      gitlab-projects
   1      flycheck-tip
   1      eyuml
   1      evm
   1      ensime-vars
   1      ensime-mode
   1      emr-prog
   1      emr-lisp
   1      elnode
   1      ecukes-template
   1      ecukes-reporter-progress
   1      ecukes-new
   1      ecukes-helpers
   1      ecukes-def
   1      eclim-completion
   1      dollaro
   1      dired-filter
   1      creds
   1      company-edbi
   1      anaconda-mode


# Files using 's', sorted alphabetically

File                             Usage(s)
-----------------------------------------
ag                                  5
amd-mode                            2
anaconda-mode                       1
angular-snippets                    3
ansible                             2
bibslurp                            6
bts                                 5
buffer-combine                      3
cake-inflector                      3
cake2                              20
cask-cli                            5
cerbere-gotest                      4
cerbere-phpunit                     7
clj-refactor                       70
commander                          27
company-edbi                        1
company-tern                        2
company-ycmd                        3
creds                               1
crm-custom                          3
dired-filter                        1
dollaro                             1
eclim-completion                    1
ecukes                              5
ecukes-cli                          6
ecukes-core                         2
ecukes-def                          1
ecukes-helpers                      1
ecukes-load                         3
ecukes-new                          1
ecukes-parse                       32
ecukes-reporter                    17
ecukes-reporter-landing             2
ecukes-reporter-progress            1
ecukes-run                          8
ecukes-steps                        3
ecukes-template                     1
edbi-django                         2
elmacro                             7
elmine                              3
elnode                              1
elnode-proxy                        2
emamux-ruby-test                    9
emr                                14
emr-c                               4
emr-elisp                          31
emr-lisp                            1
emr-prog                            1
emr-scheme                          4
ensime-company                      2
ensime-mode                         1
ensime-vars                         1
ert-modeline                        2
ert-runner                          9
espuds                              9
evm                                 1
eyuml                               1
f                                   4
flycheck-mercury                    9
flycheck-tip                        1
fountain-mode                      16
fsharp-mode                         2
fsharp-mode-completion             16
git                                 7
gitlab-groups                       2
gitlab-issues                       2
gitlab-projects                     1
gitlab-session                      1
gitlab-utils                        2
gnomenm                             1
gotest                             10
goto-gem                            2
gradle-mode                         4
hamlet-mode                         2
helm-backup                         1
helm-bibtex                        24
helm-bm                             1
helm-dirset                         4
helm-github-stars                   2
helm-gitlab                         4
helm-project-persist                1
hookify                             1
http                                1
httprepl                            9
imgix                               4
js2r-conditionals                   1
js2r-helpers                        1
jumblr                              5
kurecolor                           1
list-packages-ext                  26
livid-mode                          1
magit-gh-pulls                      9
magma-interactive                   2
magnatune                           9
maker-mode                          5
malinka                            32
marcopolo-hub                       2
marcopolo-mode                      3
marcopolo-registry                  4
marcopolo-utils                     5
markdown-toc                        3
maven-test-mode                     4
melpa-upstream-visit               18
mustache-lex                       13
mustache-parse                      4
mustache-render                     7
navorski                            2
nvm                                10
org-drill-table                     6
org-transform-tree-table            1
org-trello-buffer                   2
org-trello-cbx                      7
org-trello-data                    10
org-trello-proxy                    2
org-trello-setup                    1
org-trello-utils                    1
pallet                              1
password-store                      3
phpunit                             7
prodigy                            14
projectile                         35
projectile-rails                   27
psci                                3
quickref                            1
relative-buffers                    4
s-buffer                            2
sclang-ac-mode                     18
sclang-doc-mode                     3
sclang-extensions-utils            35
sclang-post-mode                    8
serverspec                          2
shelldoc                            1
show-css                            4
signature-backend                   1
signature-display                   1
simplezen                          12
skeletor                           26
soundklaus                         10
sphinx-doc                         13
stock-ticker                        1
tagedit                             3
tbx2org                             1
timesheet                           5
travis-builds                       1
travis-mode                         1
travis-repos                        1
travis-utils                        3
turnip                             22
virtualenvwrapper                  15
wand                                2
web                                 6
weechat                            18
weechat-button                      3
weechat-cmd                         2
weechat-color                       4
weechat-core                        1
weechat-corrector                   3
weechat-image                       4
weechat-relay                       7
weechat-spelling                    2
weechat-tracking                    2


### End


--- End results ---


#+begin_src perl

    #!/usr/bin/perl

    ###
    #
    # The following script assumes the following commands have been
    # run from a shell:
    #
    # $ git clone https://github.com/milkypostman/melpa
    # $ cd melpa
    # $ make all
    # $ cd packages
    # $ for i in *.tar; do tar xf $i; done
    #
    # The library being analysed is specified via
    # the $util_package_name and $util_package_prefix
    # variables.
    #
    # The value of $elpa_dir will probably need to be
    # modified to reflect the location of the
    # melpa/packages directory on your system.
    #
    ###


    use strict;
    use warnings;

    use English;
    use File::Find;


    # -- Initialisations --

    # Variables which can be set by the user.

    my $elpa_dir = $ENV{HOME} . '/src/github/melpa/packages/';
    my $util_package_name = 'dash';
    # We can't simply generate this from $util_package_name
    # because it would break on (at least) dash.el.
    my $util_package_prefix = '-';

    # Internal variables.

    my $all_function_occurences = 0;
    my $all_usage_occurences = 0;
    my $count;
    my $dh;
    my $fh;
    my $func;
    my $package_count = 0;
    my $package_element;
    my $percentage;
    my $usage_percentage = 0;

    my @funcs_by_frequency;
    my @funcs_by_name;
    my @package_elements_by_usage_frequency;
    my @package_elements_by_name;
    my @packages;

    my %files_using_util_package;
    my %usages;
    my %util_package_functions;


    # -- Helper functions. --

    sub extract_util_package_functions {

        if (/^${util_package_name}(-\d{8}\.\d+)?\.el$/) {

            my $f = $File::Find::name;
            open($fh, '<', $f) || die "Couldn't open $f: $!";
            while (<$fh>) {
                if (/\(defun (${util_package_prefix}-?[[:alnum:]]+)/
                    || /\(defmacro (${util_package_prefix}-?[[:alnum:]]+)/) {
                    $util_package_functions{$1} = 0;
                }
            }

        }
    }

    sub analyse_functions_usage {

        if (/^([-[:alnum:]]+)(?:-\d{8}\.\d+)?\.el$/) {

            my $package_element = $1;
            my $filename = $_;

            if ($package_element =~ /-pkg/) {
                return;
            }
            if ($filename =~ /^${util_package_name}-\d{8}\.\d+\.el$/) {
                return;
            }

            push @packages, $package_element;
            $package_count++;
            print "Analysing $package_element ....\n";

            open($fh, '<', $File::Find::name) || die "Couldn't open $File::Find::name: $!";
            while (<$fh>) {            
                for my $key (keys %util_package_functions) {
                    if (/\(${key}/) {
                        $util_package_functions{$key}++;
                        $usages{$package_element}++;
                    }
                }
            }
            close $fh || die "Couldn't close $File::Find::name: $!";

        }
    }


    # -- Processing --

    find(\&extract_util_package_functions, ($elpa_dir));
    finddepth(\&analyse_functions_usage, ($elpa_dir));


    # -- Calculations --

    $all_usage_occurences = scalar(keys %usages);
    $usage_percentage = $all_usage_occurences / $package_count * 100;

    for my $key (keys %util_package_functions) {
        $all_function_occurences += $util_package_functions{$key};
    }

    for $func (sort keys %util_package_functions) {
        $count = sprintf("%3u", $util_package_functions{$func});
        $percentage = sprintf('%2.2f', ($util_package_functions{$func} / $all_function_occurences * 100));
        push @funcs_by_frequency, $count . "\t" . $percentage . "\t" . $func;
        push @funcs_by_name, $func . "\t" . $count . "\t" . $percentage;
    }

    for $package_element (sort keys %usages) {
        $count = sprintf("%3u", $usages{$package_element});
        push @package_elements_by_usage_frequency, $count . "\t" . $package_element;
        push @package_elements_by_name, $package_element . "\t" . $count;
    }


    # -- Results --

    $FORMAT_LINES_PER_PAGE = 999;
    $OUTPUT_AUTOFLUSH = 1;

    print "\n";
    print "###\n";
    print "### Usage of '$util_package_name' by MELPA packages\n";
    print "###\n\n";
    print "'$util_package_name' is used by ${all_usage_occurences}/${package_count} files (" . sprintf("%2.2f", $usage_percentage) . "%).\n\n\n";

    print "# Function usage counts, sorted by decreasing frequency\n\n";

    format Frequency_top =
    Count       %       Function
    -----------------------------------------
    .

    format Frequency =
    @###     @##.##     @<<<<<<<<<<<<<<<<<<<<
    $count, $percentage, $func
    .

    $FORMAT_LINES_LEFT = 0;
    $FORMAT_TOP_NAME = 'Frequency_top';
    $FORMAT_NAME = 'Frequency';
    for my $elt (reverse sort @funcs_by_frequency) {
        ($count, $percentage, $func) = split('\t', $elt);
        write;
    }

    print "\n\n";
    print "# Function usage counts, sorted by function name\n\n";

    format Name_top =
    Function                       Count      %
    ---------------------------------------------
    .

    format Name =
    @<<<<<<<<<<<<<<<<<<<<<<<<     @###     @##.##
    $func, $count, $percentage
    .

    $FORMAT_LINES_LEFT = 0;
    $FORMAT_TOP_NAME = 'Name_top';
    $FORMAT_NAME = 'Name';
    for my $elt (sort @funcs_by_name) {
        ($func, $count, $percentage) = split('\t', $elt);
        write;
    }

    print "\n\n";
    print "# Files using '$util_package_name', sorted by usage count\n\n";

    format File_usages_count_top =
    Usage(s)  File                           
    -----------------------------------------
    .

    format File_usages_count =
    @###      @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    $count, $package_element
    .

    $FORMAT_LINES_LEFT = 0;
    $FORMAT_TOP_NAME = 'File_usages_count_top';
    $FORMAT_NAME = 'File_usages_count';
    for my $elt (reverse sort @package_elements_by_usage_frequency) {
        ($count, $package_element) = split('\t', $elt);
        write;
    }

    print "\n\n";
    print "# Files using '$util_package_name', sorted alphabetically\n\n";

    format File_usages_alphabetically_top =
    File                             Usage(s)
    -----------------------------------------
    .

    format File_usages_alphabetically =
    @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<   @##
    $package_element, $count
    .

    $FORMAT_LINES_LEFT = 0;
    $FORMAT_TOP_NAME = 'File_usages_alphabetically_top';
    $FORMAT_NAME = 'File_usages_alphabetically';
    for my $elt (sort @package_elements_by_name) {
        ($package_element, $count) = split('\t', $elt);
        write;
    }

    print "\n\n";
    print "### End\n\n";

#+end_src


Alexis.



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Use of `dash` and `s` functions by MELPA packages
  2015-01-27  9:13 Use of `dash` and `s` functions by MELPA packages Alexis
@ 2015-01-27 23:39 ` Phillip Lord
  2015-01-28  2:40   ` Alexis
  2015-01-28 10:27 ` Nicolas Richard
  1 sibling, 1 reply; 6+ messages in thread
From: Phillip Lord @ 2015-01-27 23:39 UTC (permalink / raw)
  To: Alexis; +Cc: emacs-devel


Fairly interesting. Suggests that the lambda forms are more used,
although the anaphoric forms are close behind. I would imagine different
people are using the two forms -- although the anaphoric forms are
naturally limited, so there is a reason why someone might use both.

5% using dash is pretty amasing, and 4% with s. My own interpretation is
that Emacs could do with more of these kind of libraries -- richer APIs
for interacting with a few datatypes. I've had a fairly nice experience
with f.el as well.


Alexis <flexibeast@gmail.com> writes:

> Hi all,
>
> Out of interest, i've written a simple Perl5 script to analyse the
> extent to which the various functions in the `dash` and `s` packages are
> used by packages on MELPA. i've included the script within the org-babel
> block at the end of this message; i imagine there are various issues
> with its methodology and/or implementation, but feel it's at least a
> starting point. Variables at the top of the script allow it to be
> modified to analyse the use of libraries other than `dash` and `s`.
>
> Comments in the script describe how i built all packages locally for the
> script to work on. The download and build process took around 4 hours,
> via a cable 'net connection and a Core i5 with 4G of RAM. Running the
> script takes less than 10 minutes to complete on my system.
>
>
> --- Results ---
>
> ###
> ### Usage of 'dash' by MELPA packages
> ###
>
> 'dash' is used by 259/4506 files (5.75%).
>
>
> # Function usage counts, sorted by decreasing frequency
>
> Count       %       Function
> -----------------------------------------
>  311      14.55     -when
>  299      13.99     -map
>  159       7.44     --map
>   97       4.54     -filter
>   91       4.26     --each
>   76       3.56     -each
>   76       3.56     --filter
>   74       3.46     -if
>   60       2.81     -contains
>   52       2.43     -flatten
>   48       2.25     --first
>   42       1.97     -first
>   36       1.68     -last
>   36       1.68     --remove
>   35       1.64     -remove
>   30       1.40     --when
>   29       1.36     -mapcat
>   26       1.22     -any
>   25       1.17     -difference
>   25       1.17     --reduce
>   24       1.12     -reduce
>   24       1.12     -concat
>   24       1.12     --any
>   22       1.03     -elem
>   22       1.03     -distinct
>   21       0.98     -union
>   17       0.80     -find
>   17       0.80     -all
>   16       0.75     -take
>   16       0.75     -sort
>   16       0.75     --if
>   15       0.70     -select
>   15       0.70     -drop
>   15       0.70     --mapcat
>   14       0.66     -partial
>   14       0.66     --sort
>   12       0.56     -let
>   11       0.51     -zip
>   11       0.51     -snoc
>   11       0.51     -slice
>   11       0.51     -partition
>   10       0.47     --keep
>    8       0.37     -repeat
>    8       0.37     -non
>    8       0.37     -min
>    8       0.37     --all
>    7       0.33     -intersection
>    7       0.33     -interpose
>    6       0.28     -keep
>    6       0.28     -insert
>    6       0.28     -dotimes
>    6       0.28     --group
>    6       0.28     --find
>    6       0.28     --dotimes
>    5       0.23     -tree
>    5       0.23     -list
>    5       0.23     --separate
>    4       0.19     -replace
>    4       0.19     -max
>    4       0.19     -lambda
>    4       0.19     --drop
>    3       0.14     -value
>    3       0.14     -iterate
>    3       0.14     -is
>    3       0.14     -group
>    3       0.14     --take
>    2       0.09     -separate
>    2       0.09     -interleave
>    2       0.09     -cons
>    2       0.09     -clone
>    2       0.09     --split
>    2       0.09     --last
>    1       0.05     -update
>    1       0.05     -table
>    1       0.05     -sum
>    1       0.05     -split
>    1       0.05     -only
>    1       0.05     -butlast
>    1       0.05     -annotate
>    1       0.05     --zip
>    1       0.05     --tree
>    1       0.05     --partition
>    1       0.05     --none
>    1       0.05     --max
>    0       0.00     -unfold
>    0       0.00     -splice
>    0       0.00     -same
>    0       0.00     -rotate
>    0       0.00     -product
>    0       0.00     -pad
>    0       0.00     -none
>    0       0.00     -grade
>    0       0.00     -fix
>    0       0.00     -cycle
>    0       0.00     -count
>    0       0.00     --update
>    0       0.00     --unfold
>    0       0.00     --splice
>    0       0.00     --only
>    0       0.00     --min
>    0       0.00     --iterate
>    0       0.00     --fix
>    0       0.00     --count
>    0       0.00     --annotate
>
>
> # Function usage counts, sorted by function name
>
> Function                       Count      %
> ---------------------------------------------
> --all                            8       0.37
> --annotate                       0       0.00
> --any                           24       1.12
> --count                          0       0.00
> --dotimes                        6       0.28
> --drop                           4       0.19
> --each                          91       4.26
> --filter                        76       3.56
> --find                           6       0.28
> --first                         48       2.25
> --fix                            0       0.00
> --group                          6       0.28
> --if                            16       0.75
> --iterate                        0       0.00
> --keep                          10       0.47
> --last                           2       0.09
> --map                          159       7.44
> --mapcat                        15       0.70
> --max                            1       0.05
> --min                            0       0.00
> --none                           1       0.05
> --only                           0       0.00
> --partition                      1       0.05
> --reduce                        25       1.17
> --remove                        36       1.68
> --separate                       5       0.23
> --sort                          14       0.66
> --splice                         0       0.00
> --split                          2       0.09
> --take                           3       0.14
> --tree                           1       0.05
> --unfold                         0       0.00
> --update                         0       0.00
> --when                          30       1.40
> --zip                            1       0.05
> -all                            17       0.80
> -annotate                        1       0.05
> -any                            26       1.22
> -butlast                         1       0.05
> -clone                           2       0.09
> -concat                         24       1.12
> -cons                            2       0.09
> -contains                       60       2.81
> -count                           0       0.00
> -cycle                           0       0.00
> -difference                     25       1.17
> -distinct                       22       1.03
> -dotimes                         6       0.28
> -drop                           15       0.70
> -each                           76       3.56
> -elem                           22       1.03
> -filter                         97       4.54
> -find                           17       0.80
> -first                          42       1.97
> -fix                             0       0.00
> -flatten                        52       2.43
> -grade                           0       0.00
> -group                           3       0.14
> -if                             74       3.46
> -insert                          6       0.28
> -interleave                      2       0.09
> -interpose                       7       0.33
> -intersection                    7       0.33
> -is                              3       0.14
> -iterate                         3       0.14
> -keep                            6       0.28
> -lambda                          4       0.19
> -last                           36       1.68
> -let                            12       0.56
> -list                            5       0.23
> -map                           299      13.99
> -mapcat                         29       1.36
> -max                             4       0.19
> -min                             8       0.37
> -non                             8       0.37
> -none                            0       0.00
> -only                            1       0.05
> -pad                             0       0.00
> -partial                        14       0.66
> -partition                      11       0.51
> -product                         0       0.00
> -reduce                         24       1.12
> -remove                         35       1.64
> -repeat                          8       0.37
> -replace                         4       0.19
> -rotate                          0       0.00
> -same                            0       0.00
> -select                         15       0.70
> -separate                        2       0.09
> -slice                          11       0.51
> -snoc                           11       0.51
> -sort                           16       0.75
> -splice                          0       0.00
> -split                           1       0.05
> -sum                             1       0.05
> -table                           1       0.05
> -take                           16       0.75
> -tree                            5       0.23
> -unfold                          0       0.00
> -union                          21       0.98
> -update                          1       0.05
> -value                           3       0.14
> -when                          311      14.55
> -zip                            11       0.51
>
>
> # Files using 'dash', sorted by usage count
>
> Usage(s)  File
> -----------------------------------------
>  162      smartparens
>  108      projectile
>   74      prodigy
>   74      emr-elisp
>   49      origami
>   40      skeletor
>   38      flycheck
>   38      bog
>   37      clj-refactor
>   36      magnatune
>   36      js2r-functions
>   34      cask
>   33      cake2
>   30      turnip
>   29      dired-subtree
>   28      dired-filter
>   25      m-buffer
>   24      f
>   24      cider-interaction
>   23      workgroups2
>   22      malinka
>   22      jumblr
>   21      virtualenvwrapper
>   21      helm-bibtex
>   21      ecukes-run
>   20      wacs-interactive
>   20      ecukes-reporter
>   18      wonderland
>   18      sclang-doc-mode
>   18      anaconda-mode
>   17      ox-pandoc
>   17      commander
>   15      projectile-rails
>   15      elmacro
>   15      color-identifiers-mode
>   15      bts
>   13      wacs-configuration
>   13      omnisharp
>   13      fsharp-mode-completion
>   13      bbdb-csv-import
>   12      sclang-ac-mode
>   12      rswitcher
>   12      org-drill-table
>   12      httprepl
>   12      dash-functional
>   11      sclang-extensions-utils
>   11      org-trello-controller
>   11      nrepl-client
>   11      litable
>   11      keyset
>   11      ert-modeline
>   11      ecukes-parse
>   10      undercover
>   10      sclang-extensions
>   10      packed
>   10      org-trello-data
>   10      org-trello-buffer
>   10      helm-projectile
>   10      emr-c
>   10      emr
>   10      ebib-utils
>   10      dired-ranger
>   10      cider-spy
>   10      cask-cli
>    9      org-trello-proxy
>    9      org-transform-tree-table
>    8      git
>    8      flycheck-mercury
>    8      edbi-django
>    8      company-tern
>    8      color-moccur
>    8      cider-test
>    7      wrap-region
>    7      smart-mode-line
>    7      req-package
>    7      psci
>    7      eyebrowse
>    7      ecukes-helpers
>    7      dired-hacks-utils
>    7      creds
>    7      cider-stacktrace
>    7      ansi
>    6      soundklaus
>    6      quickref
>    6      paradox
>    6      nvm
>    6      multifiles
>    6      markdown-toc
>    6      malabar-reflection
>    6      malabar-mode
>    6      evil-visual-mark-mode
>    6      edts-project
>    6      ebib
>    5      string-edit
>    5      smartparens-html
>    5      scala-outline-popup
>    5      pallet
>    5      orgit
>    5      org-trello-action
>    5      malabar-project
>    5      lxc
>    5      lentic-asciidoc
>    5      jvm-mode
>    5      interval-tree
>    5      imgix
>    5      helm-flycheck
>    5      grass-mode
>    5      ert-runner
>    5      ensime-config
>    5      dired-open
>    5      decl
>    5      cider
>    5      ag
>    4      with-editor
>    4      web
>    4      wacs-util
>    4      relative-buffers
>    4      org-trello-backend
>    4      op-export
>    4      navorski
>    4      minitest
>    4      malabar-import
>    4      js2r-helpers
>    4      espuds
>    4      esh-help
>    4      elwm
>    4      edts-xref
>    4      ecukes-load
>    4      ecukes-cli
>    4      ecukes
>    4      clocker
>    3      wand
>    3      thumb-frm
>    3      tco
>    3      simplezen
>    3      shadchen
>    3      servant
>    3      rake
>    3      org-trello-cbx
>    3      omnisharp-utils
>    3      omnisharp-server-actions
>    3      omnisharp-auto-complete-actions
>    3      noflet
>    3      mustache-render
>    3      magma-scan
>    3      lentic-block
>    3      flycheck-haskell
>    3      flycheck-ert
>    3      emamux-ruby-test
>    3      cdnjs
>    3      camcorder
>    3      bibslurp
>    3      auto-compile
>    3      ace-jump-buffer
>    2      ycmd
>    2      tree-buffer
>    2      travis-version
>    2      solarized
>    2      rubocop
>    2      recompile-on-save
>    2      py-test
>    2      prosjekt
>    2      pip-requirements
>    2      outshine
>    2      outline-magic
>    2      org-trello-hash
>    2      misc-cmds
>    2      marmalade-client
>    2      malabar-util
>    2      malabar-service
>    2      magma-smie
>    2      magit-find-file
>    2      js2r-vars
>    2      js2-refactor
>    2      ivs-edit
>    2      inf-fsharp-mode
>    2      helm-projectile-all
>    2      hamlet-mode
>    2      grunt
>    2      go-projectile
>    2      gnomenm
>    2      gitlab-version
>    2      gitlab-ui
>    2      flycheck-pos-tip
>    2      flycheck-d-unittest
>    2      ensime-company
>    2      ensime-client
>    2      enh-ruby-mode
>    2      edts-navigate
>    2      ecukes-steps
>    2      ecukes-core
>    2      doremi-frm
>    2      date-field
>    2      company-anaconda
>    2      cider-util
>    2      cider-grimoire
>    2      cider-eldoc
>    1      with-namespace
>    1      wacs-init
>    1      trident-mode
>    1      travis-utils
>    1      tern-django
>    1      tbx2org
>    1      tagedit
>    1      sonic-pi-console
>    1      smartparens-config
>    1      serverspec
>    1      sclang-post-mode
>    1      replace-from-region
>    1      projmake-elmm
>    1      overseer
>    1      orglink
>    1      org-trello-utils
>    1      org-trello-setup
>    1      org-trello-entity
>    1      org-trello-api
>    1      org-trello
>    1      org-projectile
>    1      marcopolo-version
>    1      malabar-semanticdb
>    1      malabar-ede-maven
>    1      maker-mode
>    1      lib-requires
>    1      lentic-org
>    1      lentic
>    1      highlight
>    1      helm-gitlab
>    1      helm-dirset
>    1      helm-aws
>    1      helm-ad
>    1      flycheck-tip
>    1      flycheck-rust
>    1      flycheck-ghcmod
>    1      flycheck-color-mode-line
>    1      flycheck-cask
>    1      fakir
>    1      evm
>    1      eval-in-repl
>    1      elnode-proxy
>    1      edts-debug
>    1      edts-code
>    1      ecukes-template
>    1      ecukes-reporter-magnars
>    1      ecukes-hooks
>    1      ecukes-byte-compile
>    1      ebib-keywords
>    1      dispass
>    1      dired-narrow
>    1      datomic-snippets
>    1      codesearch
>    1      clojure-quick-repls
>    1      cider-client
>    1      cider-classpath
>    1      cider-apropos
>    1      auto-package-update
>    1      angular-snippets
>    1      amd-mode
>    1      aggressive-fill-paragraph
>    1      ac-anaconda
>
>
> # Files using 'dash', sorted alphabetically
>
> File                             Usage(s)
> -----------------------------------------
> ac-anaconda                         1
> ace-jump-buffer                     3
> ag                                  5
> aggressive-fill-paragraph           1
> amd-mode                            1
> anaconda-mode                      18
> angular-snippets                    1
> ansi                                7
> auto-compile                        3
> auto-package-update                 1
> bbdb-csv-import                    13
> bibslurp                            3
> bog                                38
> bts                                15
> cake2                              33
> camcorder                           3
> cask                               34
> cask-cli                           10
> cdnjs                               3
> cider                               5
> cider-apropos                       1
> cider-classpath                     1
> cider-client                        1
> cider-eldoc                         2
> cider-grimoire                      2
> cider-interaction                  24
> cider-spy                          10
> cider-stacktrace                    7
> cider-test                          8
> cider-util                          2
> clj-refactor                       37
> clocker                             4
> clojure-quick-repls                 1
> codesearch                          1
> color-identifiers-mode             15
> color-moccur                        8
> commander                          17
> company-anaconda                    2
> company-tern                        8
> creds                               7
> dash-functional                    12
> date-field                          2
> datomic-snippets                    1
> decl                                5
> dired-filter                       28
> dired-hacks-utils                   7
> dired-narrow                        1
> dired-open                          5
> dired-ranger                       10
> dired-subtree                      29
> dispass                             1
> doremi-frm                          2
> ebib                                6
> ebib-keywords                       1
> ebib-utils                         10
> ecukes                              4
> ecukes-byte-compile                 1
> ecukes-cli                          4
> ecukes-core                         2
> ecukes-helpers                      7
> ecukes-hooks                        1
> ecukes-load                         4
> ecukes-parse                       11
> ecukes-reporter                    20
> ecukes-reporter-magnars             1
> ecukes-run                         21
> ecukes-steps                        2
> ecukes-template                     1
> edbi-django                         8
> edts-code                           1
> edts-debug                          1
> edts-navigate                       2
> edts-project                        6
> edts-xref                           4
> elmacro                            15
> elnode-proxy                        1
> elwm                                4
> emamux-ruby-test                    3
> emr                                10
> emr-c                              10
> emr-elisp                          74
> enh-ruby-mode                       2
> ensime-client                       2
> ensime-company                      2
> ensime-config                       5
> ert-modeline                       11
> ert-runner                          5
> esh-help                            4
> espuds                              4
> eval-in-repl                        1
> evil-visual-mark-mode               6
> evm                                 1
> eyebrowse                           7
> f                                  24
> fakir                               1
> flycheck                           38
> flycheck-cask                       1
> flycheck-color-mode-line            1
> flycheck-d-unittest                 2
> flycheck-ert                        3
> flycheck-ghcmod                     1
> flycheck-haskell                    3
> flycheck-mercury                    8
> flycheck-pos-tip                    2
> flycheck-rust                       1
> flycheck-tip                        1
> fsharp-mode-completion             13
> git                                 8
> gitlab-ui                           2
> gitlab-version                      2
> gnomenm                             2
> go-projectile                       2
> grass-mode                          5
> grunt                               2
> hamlet-mode                         2
> helm-ad                             1
> helm-aws                            1
> helm-bibtex                        21
> helm-dirset                         1
> helm-flycheck                       5
> helm-gitlab                         1
> helm-projectile                    10
> helm-projectile-all                 2
> highlight                           1
> httprepl                           12
> imgix                               5
> inf-fsharp-mode                     2
> interval-tree                       5
> ivs-edit                            2
> js2-refactor                        2
> js2r-functions                     36
> js2r-helpers                        4
> js2r-vars                           2
> jumblr                             22
> jvm-mode                            5
> keyset                             11
> lentic                              1
> lentic-asciidoc                     5
> lentic-block                        3
> lentic-org                          1
> lib-requires                        1
> litable                            11
> lxc                                 5
> m-buffer                           25
> magit-find-file                     2
> magma-scan                          3
> magma-smie                          2
> magnatune                          36
> maker-mode                          1
> malabar-ede-maven                   1
> malabar-import                      4
> malabar-mode                        6
> malabar-project                     5
> malabar-reflection                  6
> malabar-semanticdb                  1
> malabar-service                     2
> malabar-util                        2
> malinka                            22
> marcopolo-version                   1
> markdown-toc                        6
> marmalade-client                    2
> minitest                            4
> misc-cmds                           2
> multifiles                          6
> mustache-render                     3
> navorski                            4
> noflet                              3
> nrepl-client                       11
> nvm                                 6
> omnisharp                          13
> omnisharp-auto-complete-actions     3
> omnisharp-server-actions            3
> omnisharp-utils                     3
> op-export                           4
> org-drill-table                    12
> org-projectile                      1
> org-transform-tree-table            9
> org-trello                          1
> org-trello-action                   5
> org-trello-api                      1
> org-trello-backend                  4
> org-trello-buffer                  10
> org-trello-cbx                      3
> org-trello-controller              11
> org-trello-data                    10
> org-trello-entity                   1
> org-trello-hash                     2
> org-trello-proxy                    9
> org-trello-setup                    1
> org-trello-utils                    1
> orgit                               5
> orglink                             1
> origami                            49
> outline-magic                       2
> outshine                            2
> overseer                            1
> ox-pandoc                          17
> packed                             10
> pallet                              5
> paradox                             6
> pip-requirements                    2
> prodigy                            74
> projectile                        108
> projectile-rails                   15
> projmake-elmm                       1
> prosjekt                            2
> psci                                7
> py-test                             2
> quickref                            6
> rake                                3
> recompile-on-save                   2
> relative-buffers                    4
> replace-from-region                 1
> req-package                         7
> rswitcher                          12
> rubocop                             2
> scala-outline-popup                 5
> sclang-ac-mode                     12
> sclang-doc-mode                    18
> sclang-extensions                  10
> sclang-extensions-utils            11
> sclang-post-mode                    1
> servant                             3
> serverspec                          1
> shadchen                            3
> simplezen                           3
> skeletor                           40
> smart-mode-line                     7
> smartparens                       162
> smartparens-config                  1
> smartparens-html                    5
> solarized                           2
> sonic-pi-console                    1
> soundklaus                          6
> string-edit                         5
> tagedit                             1
> tbx2org                             1
> tco                                 3
> tern-django                         1
> thumb-frm                           3
> travis-utils                        1
> travis-version                      2
> tree-buffer                         2
> trident-mode                        1
> turnip                             30
> undercover                         10
> virtualenvwrapper                  21
> wacs-configuration                 13
> wacs-init                           1
> wacs-interactive                   20
> wacs-util                           4
> wand                                3
> web                                 4
> with-editor                         4
> with-namespace                      1
> wonderland                         18
> workgroups2                        23
> wrap-region                         7
> ycmd                                2
>
>
> ### End
>
>
> ###
> ### Usage of 's' by MELPA packages
> ###
>
> 's' is used by 161/4506 files (3.57%).
>
>
> # Function usage counts, sorted by decreasing frequency
>
> Count       %       Function
> -----------------------------------------
>  134      12.97     s-match
>  130      12.58     s-join
>  100       9.68     s-concat
>   84       8.13     s-split
>   77       7.45     s-matches
>   70       6.78     s-trim
>   67       6.49     s-starts
>   58       5.61     s-blank
>   55       5.32     s-chop
>   43       4.16     s-equals
>   36       3.48     s-replace
>   33       3.19     s-ends
>   23       2.23     s-contains
>   15       1.45     s-lines
>   13       1.26     s-format
>   11       1.06     s-prepend
>   11       1.06     s-append
>    9       0.87     s-repeat
>    9       0.87     s-lex
>    6       0.58     s-chomp
>    5       0.48     s-index
>    5       0.48     s-downcase
>    4       0.39     s-truncate
>    4       0.39     s-present
>    4       0.39     s-numeric
>    3       0.29     s-word
>    3       0.29     s-slice
>    3       0.29     s-shared
>    2       0.19     s-with
>    2       0.19     s-upcase
>    2       0.19     s-right
>    2       0.19     s-pad
>    2       0.19     s-lower
>    2       0.19     s-left
>    2       0.19     s-dashed
>    1       0.10     s-upper
>    1       0.10     s-snake
>    1       0.10     s-presence
>    1       0.10     s-capitalize
>    0       0.00     s-wrap
>    0       0.00     s-uppercase
>    0       0.00     s-titleized
>    0       0.00     s-titleize
>    0       0.00     s-reverse
>    0       0.00     s-mixedcase
>    0       0.00     s-lowercase
>    0       0.00     s-less
>    0       0.00     s-count
>    0       0.00     s-collapse
>    0       0.00     s-center
>    0       0.00     s-capitalized
>    0       0.00     s--truthy
>    0       0.00     s--mapcar
>    0       0.00     s--aget
>
>
> # Function usage counts, sorted by function name
>
> Function                       Count      %
> ---------------------------------------------
> s--aget                          0       0.00
> s--mapcar                        0       0.00
> s--truthy                        0       0.00
> s-append                        11       1.06
> s-blank                         58       5.61
> s-capitalize                     1       0.10
> s-capitalized                    0       0.00
> s-center                         0       0.00
> s-chomp                          6       0.58
> s-chop                          55       5.32
> s-collapse                       0       0.00
> s-concat                       100       9.68
> s-contains                      23       2.23
> s-count                          0       0.00
> s-dashed                         2       0.19
> s-downcase                       5       0.48
> s-ends                          33       3.19
> s-equals                        43       4.16
> s-format                        13       1.26
> s-index                          5       0.48
> s-join                         130      12.58
> s-left                           2       0.19
> s-less                           0       0.00
> s-lex                            9       0.87
> s-lines                         15       1.45
> s-lower                          2       0.19
> s-lowercase                      0       0.00
> s-match                        134      12.97
> s-matches                       77       7.45
> s-mixedcase                      0       0.00
> s-numeric                        4       0.39
> s-pad                            2       0.19
> s-prepend                       11       1.06
> s-presence                       1       0.10
> s-present                        4       0.39
> s-repeat                         9       0.87
> s-replace                       36       3.48
> s-reverse                        0       0.00
> s-right                          2       0.19
> s-shared                         3       0.29
> s-slice                          3       0.29
> s-snake                          1       0.10
> s-split                         84       8.13
> s-starts                        67       6.49
> s-titleize                       0       0.00
> s-titleized                      0       0.00
> s-trim                          70       6.78
> s-truncate                       4       0.39
> s-upcase                         2       0.19
> s-upper                          1       0.10
> s-uppercase                      0       0.00
> s-with                           2       0.19
> s-word                           3       0.29
> s-wrap                           0       0.00
>
>
> # Files using 's', sorted by usage count
>
> Usage(s)  File
> -----------------------------------------
>   70      clj-refactor
>   35      sclang-extensions-utils
>   35      projectile
>   32      malinka
>   32      ecukes-parse
>   31      emr-elisp
>   27      projectile-rails
>   27      commander
>   26      skeletor
>   26      list-packages-ext
>   24      helm-bibtex
>   22      turnip
>   20      cake2
>   18      weechat
>   18      sclang-ac-mode
>   18      melpa-upstream-visit
>   17      ecukes-reporter
>   16      fsharp-mode-completion
>   16      fountain-mode
>   15      virtualenvwrapper
>   14      prodigy
>   14      emr
>   13      sphinx-doc
>   13      mustache-lex
>   12      simplezen
>   10      soundklaus
>   10      org-trello-data
>   10      nvm
>   10      gotest
>    9      magnatune
>    9      magit-gh-pulls
>    9      httprepl
>    9      flycheck-mercury
>    9      espuds
>    9      ert-runner
>    9      emamux-ruby-test
>    8      sclang-post-mode
>    8      ecukes-run
>    7      weechat-relay
>    7      phpunit
>    7      org-trello-cbx
>    7      mustache-render
>    7      git
>    7      elmacro
>    7      cerbere-phpunit
>    6      web
>    6      org-drill-table
>    6      ecukes-cli
>    6      bibslurp
>    5      timesheet
>    5      marcopolo-utils
>    5      maker-mode
>    5      jumblr
>    5      ecukes
>    5      cask-cli
>    5      bts
>    5      ag
>    4      weechat-image
>    4      weechat-color
>    4      show-css
>    4      relative-buffers
>    4      mustache-parse
>    4      maven-test-mode
>    4      marcopolo-registry
>    4      imgix
>    4      helm-gitlab
>    4      helm-dirset
>    4      gradle-mode
>    4      f
>    4      emr-scheme
>    4      emr-c
>    4      cerbere-gotest
>    3      weechat-corrector
>    3      weechat-button
>    3      travis-utils
>    3      tagedit
>    3      sclang-doc-mode
>    3      psci
>    3      password-store
>    3      markdown-toc
>    3      marcopolo-mode
>    3      elmine
>    3      ecukes-steps
>    3      ecukes-load
>    3      crm-custom
>    3      company-ycmd
>    3      cake-inflector
>    3      buffer-combine
>    3      angular-snippets
>    2      weechat-tracking
>    2      weechat-spelling
>    2      weechat-cmd
>    2      wand
>    2      serverspec
>    2      s-buffer
>    2      org-trello-proxy
>    2      org-trello-buffer
>    2      navorski
>    2      marcopolo-hub
>    2      magma-interactive
>    2      helm-github-stars
>    2      hamlet-mode
>    2      goto-gem
>    2      gitlab-utils
>    2      gitlab-issues
>    2      gitlab-groups
>    2      fsharp-mode
>    2      ert-modeline
>    2      ensime-company
>    2      elnode-proxy
>    2      edbi-django
>    2      ecukes-reporter-landing
>    2      ecukes-core
>    2      company-tern
>    2      ansible
>    2      amd-mode
>    1      weechat-core
>    1      travis-repos
>    1      travis-mode
>    1      travis-builds
>    1      tbx2org
>    1      stock-ticker
>    1      signature-display
>    1      signature-backend
>    1      shelldoc
>    1      quickref
>    1      pallet
>    1      org-trello-utils
>    1      org-trello-setup
>    1      org-transform-tree-table
>    1      livid-mode
>    1      kurecolor
>    1      js2r-helpers
>    1      js2r-conditionals
>    1      http
>    1      hookify
>    1      helm-project-persist
>    1      helm-bm
>    1      helm-backup
>    1      gnomenm
>    1      gitlab-session
>    1      gitlab-projects
>    1      flycheck-tip
>    1      eyuml
>    1      evm
>    1      ensime-vars
>    1      ensime-mode
>    1      emr-prog
>    1      emr-lisp
>    1      elnode
>    1      ecukes-template
>    1      ecukes-reporter-progress
>    1      ecukes-new
>    1      ecukes-helpers
>    1      ecukes-def
>    1      eclim-completion
>    1      dollaro
>    1      dired-filter
>    1      creds
>    1      company-edbi
>    1      anaconda-mode
>
>
> # Files using 's', sorted alphabetically
>
> File                             Usage(s)
> -----------------------------------------
> ag                                  5
> amd-mode                            2
> anaconda-mode                       1
> angular-snippets                    3
> ansible                             2
> bibslurp                            6
> bts                                 5
> buffer-combine                      3
> cake-inflector                      3
> cake2                              20
> cask-cli                            5
> cerbere-gotest                      4
> cerbere-phpunit                     7
> clj-refactor                       70
> commander                          27
> company-edbi                        1
> company-tern                        2
> company-ycmd                        3
> creds                               1
> crm-custom                          3
> dired-filter                        1
> dollaro                             1
> eclim-completion                    1
> ecukes                              5
> ecukes-cli                          6
> ecukes-core                         2
> ecukes-def                          1
> ecukes-helpers                      1
> ecukes-load                         3
> ecukes-new                          1
> ecukes-parse                       32
> ecukes-reporter                    17
> ecukes-reporter-landing             2
> ecukes-reporter-progress            1
> ecukes-run                          8
> ecukes-steps                        3
> ecukes-template                     1
> edbi-django                         2
> elmacro                             7
> elmine                              3
> elnode                              1
> elnode-proxy                        2
> emamux-ruby-test                    9
> emr                                14
> emr-c                               4
> emr-elisp                          31
> emr-lisp                            1
> emr-prog                            1
> emr-scheme                          4
> ensime-company                      2
> ensime-mode                         1
> ensime-vars                         1
> ert-modeline                        2
> ert-runner                          9
> espuds                              9
> evm                                 1
> eyuml                               1
> f                                   4
> flycheck-mercury                    9
> flycheck-tip                        1
> fountain-mode                      16
> fsharp-mode                         2
> fsharp-mode-completion             16
> git                                 7
> gitlab-groups                       2
> gitlab-issues                       2
> gitlab-projects                     1
> gitlab-session                      1
> gitlab-utils                        2
> gnomenm                             1
> gotest                             10
> goto-gem                            2
> gradle-mode                         4
> hamlet-mode                         2
> helm-backup                         1
> helm-bibtex                        24
> helm-bm                             1
> helm-dirset                         4
> helm-github-stars                   2
> helm-gitlab                         4
> helm-project-persist                1
> hookify                             1
> http                                1
> httprepl                            9
> imgix                               4
> js2r-conditionals                   1
> js2r-helpers                        1
> jumblr                              5
> kurecolor                           1
> list-packages-ext                  26
> livid-mode                          1
> magit-gh-pulls                      9
> magma-interactive                   2
> magnatune                           9
> maker-mode                          5
> malinka                            32
> marcopolo-hub                       2
> marcopolo-mode                      3
> marcopolo-registry                  4
> marcopolo-utils                     5
> markdown-toc                        3
> maven-test-mode                     4
> melpa-upstream-visit               18
> mustache-lex                       13
> mustache-parse                      4
> mustache-render                     7
> navorski                            2
> nvm                                10
> org-drill-table                     6
> org-transform-tree-table            1
> org-trello-buffer                   2
> org-trello-cbx                      7
> org-trello-data                    10
> org-trello-proxy                    2
> org-trello-setup                    1
> org-trello-utils                    1
> pallet                              1
> password-store                      3
> phpunit                             7
> prodigy                            14
> projectile                         35
> projectile-rails                   27
> psci                                3
> quickref                            1
> relative-buffers                    4
> s-buffer                            2
> sclang-ac-mode                     18
> sclang-doc-mode                     3
> sclang-extensions-utils            35
> sclang-post-mode                    8
> serverspec                          2
> shelldoc                            1
> show-css                            4
> signature-backend                   1
> signature-display                   1
> simplezen                          12
> skeletor                           26
> soundklaus                         10
> sphinx-doc                         13
> stock-ticker                        1
> tagedit                             3
> tbx2org                             1
> timesheet                           5
> travis-builds                       1
> travis-mode                         1
> travis-repos                        1
> travis-utils                        3
> turnip                             22
> virtualenvwrapper                  15
> wand                                2
> web                                 6
> weechat                            18
> weechat-button                      3
> weechat-cmd                         2
> weechat-color                       4
> weechat-core                        1
> weechat-corrector                   3
> weechat-image                       4
> weechat-relay                       7
> weechat-spelling                    2
> weechat-tracking                    2
>
>
> ### End
>
>
> --- End results ---
>
>
>
> #+begin_src perl
>
>     #!/usr/bin/perl
>
>     ###
>     #
>     # The following script assumes the following commands have been
>     # run from a shell:
>     #
>     # $ git clone https://github.com/milkypostman/melpa
>     # $ cd melpa
>     # $ make all
>     # $ cd packages
>     # $ for i in *.tar; do tar xf $i; done
>     #
>     # The library being analysed is specified via
>     # the $util_package_name and $util_package_prefix
>     # variables.
>     #
>     # The value of $elpa_dir will probably need to be
>     # modified to reflect the location of the
>     # melpa/packages directory on your system.
>     #
>     ###
>
>
>     use strict;
>     use warnings;
>
>     use English;
>     use File::Find;
>
>
>     # -- Initialisations --
>
>     # Variables which can be set by the user.
>
>     my $elpa_dir = $ENV{HOME} . '/src/github/melpa/packages/';
>     my $util_package_name = 'dash';
>     # We can't simply generate this from $util_package_name
>     # because it would break on (at least) dash.el.
>     my $util_package_prefix = '-';
>
>     # Internal variables.
>
>     my $all_function_occurences = 0;
>     my $all_usage_occurences = 0;
>     my $count;
>     my $dh;
>     my $fh;
>     my $func;
>     my $package_count = 0;
>     my $package_element;
>     my $percentage;
>     my $usage_percentage = 0;
>
>     my @funcs_by_frequency;
>     my @funcs_by_name;
>     my @package_elements_by_usage_frequency;
>     my @package_elements_by_name;
>     my @packages;
>
>     my %files_using_util_package;
>     my %usages;
>     my %util_package_functions;
>
>
>     # -- Helper functions. --
>
>     sub extract_util_package_functions {
>
>         if (/^${util_package_name}(-\d{8}\.\d+)?\.el$/) {
>
>             my $f = $File::Find::name;
>             open($fh, '<', $f) || die "Couldn't open $f: $!";
>             while (<$fh>) {
>                 if (/\(defun (${util_package_prefix}-?[[:alnum:]]+)/
>                     || /\(defmacro (${util_package_prefix}-?[[:alnum:]]+)/) {
>                     $util_package_functions{$1} = 0;
>                 }
>             }
>
>         }
>     }
>
>     sub analyse_functions_usage {
>
>         if (/^([-[:alnum:]]+)(?:-\d{8}\.\d+)?\.el$/) {
>
>             my $package_element = $1;
>             my $filename = $_;
>
>             if ($package_element =~ /-pkg/) {
>                 return;
>             }
>             if ($filename =~ /^${util_package_name}-\d{8}\.\d+\.el$/) {
>                 return;
>             }
>
>             push @packages, $package_element;
>             $package_count++;
>             print "Analysing $package_element ....\n";
>
>             open($fh, '<', $File::Find::name) || die "Couldn't open $File::Find::name: $!";
>             while (<$fh>) {            
>                 for my $key (keys %util_package_functions) {
>                     if (/\(${key}/) {
>                         $util_package_functions{$key}++;
>                         $usages{$package_element}++;
>                     }
>                 }
>             }
>             close $fh || die "Couldn't close $File::Find::name: $!";
>
>         }
>     }
>
>
>     # -- Processing --
>
>     find(\&extract_util_package_functions, ($elpa_dir));
>     finddepth(\&analyse_functions_usage, ($elpa_dir));
>
>
>     # -- Calculations --
>
>     $all_usage_occurences = scalar(keys %usages);
>     $usage_percentage = $all_usage_occurences / $package_count * 100;
>
>     for my $key (keys %util_package_functions) {
>         $all_function_occurences += $util_package_functions{$key};
>     }
>
>     for $func (sort keys %util_package_functions) {
>         $count = sprintf("%3u", $util_package_functions{$func});
>         $percentage = sprintf('%2.2f', ($util_package_functions{$func} / $all_function_occurences * 100));
>         push @funcs_by_frequency, $count . "\t" . $percentage . "\t" . $func;
>         push @funcs_by_name, $func . "\t" . $count . "\t" . $percentage;
>     }
>
>     for $package_element (sort keys %usages) {
>         $count = sprintf("%3u", $usages{$package_element});
>         push @package_elements_by_usage_frequency, $count . "\t" . $package_element;
>         push @package_elements_by_name, $package_element . "\t" . $count;
>     }
>
>
>     # -- Results --
>
>     $FORMAT_LINES_PER_PAGE = 999;
>     $OUTPUT_AUTOFLUSH = 1;
>
>     print "\n";
>     print "###\n";
>     print "### Usage of '$util_package_name' by MELPA packages\n";
>     print "###\n\n";
>     print "'$util_package_name' is used by ${all_usage_occurences}/${package_count} files (" . sprintf("%2.2f", $usage_percentage) . "%).\n\n\n";
>
>     print "# Function usage counts, sorted by decreasing frequency\n\n";
>
>     format Frequency_top =
>     Count       %       Function
>     -----------------------------------------
>     .
>
>     format Frequency =
>     @###     @##.##     @<<<<<<<<<<<<<<<<<<<<
>     $count, $percentage, $func
>     .
>
>     $FORMAT_LINES_LEFT = 0;
>     $FORMAT_TOP_NAME = 'Frequency_top';
>     $FORMAT_NAME = 'Frequency';
>     for my $elt (reverse sort @funcs_by_frequency) {
>         ($count, $percentage, $func) = split('\t', $elt);
>         write;
>     }
>
>     print "\n\n";
>     print "# Function usage counts, sorted by function name\n\n";
>
>     format Name_top =
>     Function                       Count      %
>     ---------------------------------------------
>     .
>
>     format Name =
>     @<<<<<<<<<<<<<<<<<<<<<<<<     @###     @##.##
>     $func, $count, $percentage
>     .
>
>     $FORMAT_LINES_LEFT = 0;
>     $FORMAT_TOP_NAME = 'Name_top';
>     $FORMAT_NAME = 'Name';
>     for my $elt (sort @funcs_by_name) {
>         ($func, $count, $percentage) = split('\t', $elt);
>         write;
>     }
>
>     print "\n\n";
>     print "# Files using '$util_package_name', sorted by usage count\n\n";
>
>     format File_usages_count_top =
>     Usage(s)  File                           
>     -----------------------------------------
>     .
>
>     format File_usages_count =
>     @###      @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
>     $count, $package_element
>     .
>
>     $FORMAT_LINES_LEFT = 0;
>     $FORMAT_TOP_NAME = 'File_usages_count_top';
>     $FORMAT_NAME = 'File_usages_count';
>     for my $elt (reverse sort @package_elements_by_usage_frequency) {
>         ($count, $package_element) = split('\t', $elt);
>         write;
>     }
>
>     print "\n\n";
>     print "# Files using '$util_package_name', sorted alphabetically\n\n";
>
>     format File_usages_alphabetically_top =
>     File                             Usage(s)
>     -----------------------------------------
>     .
>
>     format File_usages_alphabetically =
>     @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<   @##
>     $package_element, $count
>     .
>
>     $FORMAT_LINES_LEFT = 0;
>     $FORMAT_TOP_NAME = 'File_usages_alphabetically_top';
>     $FORMAT_NAME = 'File_usages_alphabetically';
>     for my $elt (sort @package_elements_by_name) {
>         ($package_element, $count) = split('\t', $elt);
>         write;
>     }
>
>     print "\n\n";
>     print "### End\n\n";
>
> #+end_src
>
>
>
> Alexis.



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Use of `dash` and `s` functions by MELPA packages
  2015-01-27 23:39 ` Phillip Lord
@ 2015-01-28  2:40   ` Alexis
  0 siblings, 0 replies; 6+ messages in thread
From: Alexis @ 2015-01-28  2:40 UTC (permalink / raw)
  To: emacs-devel


Phillip Lord writes:

> 5% using dash is pretty amasing, and 4% with s. My own interpretation
> is that Emacs could do with more of these kind of libraries -- richer
> APIs for interacting with a few datatypes. I've had a fairly nice
> experience with f.el as well.

i just ran the script on `f`:

###
### Usage of 'f' by MELPA packages
###

'f' is used by 64/4506 files (1.42%).


# Function usage counts, sorted by decreasing frequency

Count       %       Function
-----------------------------------------
 184      31.45     f-join
 116      19.83     f-expand
  43       7.35     f-filename
  42       7.18     f-exists?
  29       4.96     f-dirname
  17       2.91     f-file?
  12       2.05     f-files
  11       1.88     f-read-text
  10       1.71     f-mkdir
  10       1.71     f-full
   9       1.54     f-relative
   8       1.37     f-write-text
   8       1.37     f-ext
   8       1.37     f-delete
   7       1.20     f-long
   7       1.20     f-directories
   7       1.20     f-canonical
   6       1.03     f-root?
   6       1.03     f-glob
   5       0.85     f-touch
   5       0.85     f-split
   5       0.85     f-same?
   4       0.68     f-descendant-of?
   4       0.68     f-base
   3       0.51     f-slash
   2       0.34     f-symlink?
   2       0.34     f-short
   2       0.34     f-relative?
   2       0.34     f-no-ext
   2       0.34     f-ext?
   2       0.34     f-entries
   2       0.34     f-directory?
   1       0.17     f-traverse-upwards
   1       0.17     f-symlink
   1       0.17     f-copy
   1       0.17     f-ancestor-of?
   1       0.17     f-absolute?
   0       0.00     f-write-bytes
   0       0.00     f-writable?
   0       0.00     f-with-sandbox
   0       0.00     f-up
   0       0.00     f-uniquify-alist
   0       0.00     f-uniquify
   0       0.00     f-unibyte-string-p
   0       0.00     f-this-file
   0       0.00     f-size
   0       0.00     f-root
   0       0.00     f-readable?
   0       0.00     f-read-bytes
   0       0.00     f-path-separator
   0       0.00     f-parent-of?
   0       0.00     f-move
   0       0.00     f-executable?
   0       0.00     f-common-parent
   0       0.00     f-child-of?
   0       0.00     f--up
   0       0.00     f--uniquify
   0       0.00     f--traverse-upwards
   0       0.00     f--files
   0       0.00     f--entries
   0       0.00     f--directories
   0       0.00     f--destructive
   0       0.00     f--collect-entries


# Function usage counts, sorted by function name

Function                       Count      %
---------------------------------------------
f--collect-entries               0       0.00
f--destructive                   0       0.00
f--directories                   0       0.00
f--entries                       0       0.00
f--files                         0       0.00
f--traverse-upwards              0       0.00
f--uniquify                      0       0.00
f--up                            0       0.00
f-absolute?                      1       0.17
f-ancestor-of?                   1       0.17
f-base                           4       0.68
f-canonical                      7       1.20
f-child-of?                      0       0.00
f-common-parent                  0       0.00
f-copy                           1       0.17
f-delete                         8       1.37
f-descendant-of?                 4       0.68
f-directories                    7       1.20
f-directory?                     2       0.34
f-dirname                       29       4.96
f-entries                        2       0.34
f-executable?                    0       0.00
f-exists?                       42       7.18
f-expand                       116      19.83
f-ext                            8       1.37
f-ext?                           2       0.34
f-file?                         17       2.91
f-filename                      43       7.35
f-files                         12       2.05
f-full                          10       1.71
f-glob                           6       1.03
f-join                         184      31.45
f-long                           7       1.20
f-mkdir                         10       1.71
f-move                           0       0.00
f-no-ext                         2       0.34
f-parent-of?                     0       0.00
f-path-separator                 0       0.00
f-read-bytes                     0       0.00
f-read-text                     11       1.88
f-readable?                      0       0.00
f-relative                       9       1.54
f-relative?                      2       0.34
f-root                           0       0.00
f-root?                          6       1.03
f-same?                          5       0.85
f-short                          2       0.34
f-size                           0       0.00
f-slash                          3       0.51
f-split                          5       0.85
f-symlink                        1       0.17
f-symlink?                       2       0.34
f-this-file                      0       0.00
f-touch                          5       0.85
f-traverse-upwards               1       0.17
f-unibyte-string-p               0       0.00
f-uniquify                       0       0.00
f-uniquify-alist                 0       0.00
f-up                             0       0.00
f-with-sandbox                   0       0.00
f-writable?                      0       0.00
f-write-bytes                    0       0.00
f-write-text                     8       1.37


# Files using 'f', sorted by usage count

Usage(s)  File
-----------------------------------------
 185      cake2
  49      cask
  42      malinka
  31      skeletor
  22      edts-project
  21      ert-runner
  14      relative-buffers
  12      helm-bibtex
  11      servant-cli
  11      nvm
  11      evm
  10      serverspec
   9      ecukes-new
   9      cdnjs
   9      ansible
   8      magma-scan
   7      password-store
   7      git
   7      edts-plugin
   7      edts-mode
   6      servant
   6      ecukes-template
   6      ecukes-project
   5      projectile
   5      ecukes-reporter
   5      ecukes-load
   5      cake-auto-switch
   4      helm-dirset
   4      edts-api
   3      kfg
   3      edts-man
   3      ecukes-cli
   3      commander
   3      cask-cli
   3      anaconda-mode
   2      ycmd
   2      prodigy
   2      pallet
   2      magma-interactive
   2      elm-util
   2      edts-dialyzer
   2      ecukes-run
   2      ecukes
   2      cerbere-gotest
   2      cerbere
   1      workgroups2
   1      tern-django
   1      signature-interface
   1      py-test
   1      projectile-rails
   1      phpunit
   1      overseer
   1      magma-vars
   1      magma-snippets
   1      magma-completion
   1      edts-debug-mode
   1      edts-code
   1      edbi-django
   1      ecukes-parse
   1      ecukes-def
   1      ecukes-core
   1      dired-filter
   1      cerbere-phpunit
   1      amd-mode


# Files using 'f', sorted alphabetically

File                             Usage(s)
-----------------------------------------
amd-mode                            1
anaconda-mode                       3
ansible                             9
cake-auto-switch                    5
cake2                             185
cask                               49
cask-cli                            3
cdnjs                               9
cerbere                             2
cerbere-gotest                      2
cerbere-phpunit                     1
commander                           3
dired-filter                        1
ecukes                              2
ecukes-cli                          3
ecukes-core                         1
ecukes-def                          1
ecukes-load                         5
ecukes-new                          9
ecukes-parse                        1
ecukes-project                      6
ecukes-reporter                     5
ecukes-run                          2
ecukes-template                     6
edbi-django                         1
edts-api                            4
edts-code                           1
edts-debug-mode                     1
edts-dialyzer                       2
edts-man                            3
edts-mode                           7
edts-plugin                         7
edts-project                       22
elm-util                            2
ert-runner                         21
evm                                11
git                                 7
helm-bibtex                        12
helm-dirset                         4
kfg                                 3
magma-completion                    1
magma-interactive                   2
magma-scan                          8
magma-snippets                      1
magma-vars                          1
malinka                            42
nvm                                11
overseer                            1
pallet                              2
password-store                      7
phpunit                             1
prodigy                             2
projectile                          5
projectile-rails                    1
py-test                             1
relative-buffers                   14
servant                             6
servant-cli                        11
serverspec                         10
signature-interface                 1
skeletor                           31
tern-django                         1
workgroups2                         1
ycmd                                2


### End


Alexis.



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Use of `dash` and `s` functions by MELPA packages
  2015-01-27  9:13 Use of `dash` and `s` functions by MELPA packages Alexis
  2015-01-27 23:39 ` Phillip Lord
@ 2015-01-28 10:27 ` Nicolas Richard
  2015-01-28 11:34   ` Nicolas Richard
  1 sibling, 1 reply; 6+ messages in thread
From: Nicolas Richard @ 2015-01-28 10:27 UTC (permalink / raw)
  To: Alexis; +Cc: emacs-devel

Hi,

Thanks for that work.

Alexis <flexibeast@gmail.com> writes:
> Count       %       Function
> -----------------------------------------
>  311      14.55     -when

That function doesn't exist, does it ? Perhaps it's simply cumulating
-when-let and -when-let* ?

FWIW there are a few others that don't exist, afaics.

-- 
Nicolas



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Use of `dash` and `s` functions by MELPA packages
  2015-01-28 10:27 ` Nicolas Richard
@ 2015-01-28 11:34   ` Nicolas Richard
  2015-01-29 11:57     ` Bozhidar Batsov
  0 siblings, 1 reply; 6+ messages in thread
From: Nicolas Richard @ 2015-01-28 11:34 UTC (permalink / raw)
  To: Nicolas Richard; +Cc: Alexis, emacs-devel

> FWIW there are a few others that don't exist, afaics.

I noticed, just after sending of course, the other thread where this is
fixed. Sorry for the noise.

-- 
Nicolas



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Use of `dash` and `s` functions by MELPA packages
  2015-01-28 11:34   ` Nicolas Richard
@ 2015-01-29 11:57     ` Bozhidar Batsov
  0 siblings, 0 replies; 6+ messages in thread
From: Bozhidar Batsov @ 2015-01-29 11:57 UTC (permalink / raw)
  To: Nicolas Richard; +Cc: Alexis, emacs-devel

[-- Attachment #1: Type: text/plain, Size: 552 bytes --]

Just a quick note - most of the important `s.el` functions are available in
Emacs 24.4 (in `subr-x.el`).
As for `dash.el` - Emacs 25 will bundle a new sequence library (`seq.el`),
which will decrease the need for
dash substantially. The new lib is already available in GNU ELPA.

On 28 January 2015 at 13:34, Nicolas Richard <theonewiththeevillook@yahoo.fr
> wrote:

> > FWIW there are a few others that don't exist, afaics.
>
> I noticed, just after sending of course, the other thread where this is
> fixed. Sorry for the noise.
>
> --
> Nicolas
>
>

[-- Attachment #2: Type: text/html, Size: 989 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2015-01-29 11:57 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-01-27  9:13 Use of `dash` and `s` functions by MELPA packages Alexis
2015-01-27 23:39 ` Phillip Lord
2015-01-28  2:40   ` Alexis
2015-01-28 10:27 ` Nicolas Richard
2015-01-28 11:34   ` Nicolas Richard
2015-01-29 11:57     ` Bozhidar Batsov

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.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).