Matthew Leach | 30 Jan 11:40 2015
Picon

NS build broken

Hi all,

I'm trying to build current master (c9d238316c6a4bb1) on OSX 10.10.1.
It's failing when trying to compile macfont.m:

--8<---------------cut here---------------start------------->8---
  CC       macfont.o
macfont.m:226:53: warning: implicit conversion from enumeration type 'CharacterCollection' (aka
'enum CTCharacterCollection') to different enumeration type 'NSCharacterCollection'
      (aka 'enum NSCharacterCollection') [-Wenum-conversion]
                                         collection:collection
                                                    ^~~~~~~~~~
macfont.m:1483:44: error: use of undeclared identifier 'mac_uvs_table_adobe_japan1_bytes'; did you
mean 'mac_uvs_table_adobe_japan1'?
                                           mac_uvs_table_adobe_japan1_bytes,
                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                           mac_uvs_table_adobe_japan1
macfont.m:1478:28: note: 'mac_uvs_table_adobe_japan1' declared here
          static CFDataRef mac_uvs_table_adobe_japan1 = NULL;
                           ^
macfont.m:1484:52: error: use of undeclared identifier 'mac_uvs_table_adobe_japan1_bytes'; did you
mean 'mac_uvs_table_adobe_japan1'?
                                           sizeof (mac_uvs_table_adobe_japan1_bytes),
                                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                                   mac_uvs_table_adobe_japan1
macfont.m:1478:28: note: 'mac_uvs_table_adobe_japan1' declared here
          static CFDataRef mac_uvs_table_adobe_japan1 = NULL;
                           ^
macfont.m:1483:44: warning: incompatible pointer types passing 'CFDataRef' (aka 'const struct
__CFData *') to parameter of type 'const UInt8 *' (aka 'const unsigned char *') [-Wincompatible-pointer-types]
(Continue reading)

Hans Wennborg | 29 Jan 20:24 2015
Picon

[PATCH] emacs.c (decode_env_path): Add parentheses around ternary operator

Please take a look at the attached patch.

This is my first time sending a patch for emacs. Let me know if I got
something wrong.

Thanks,
Hans
Nicolas Petton | 29 Jan 17:54 2015
Picon

Would seq-range and seq-mapcat be useful?

Hi guys,

While using seq.el, I often miss functions like seq-mapcat and
seq-range. Do you think adding such functions would be a good addition
to seq.el?

Cheers,
Nico
--

-- 
Nicolas Petton
http://nicolas-petton.fr

Daniel Boerner | 29 Jan 09:07 2015

Collecting chunks of text. Just an idea

Problem: Given a text file and want to pick up regions of text (words, 
half or whole sentences,
paragraphs, URL's, etc...).

I think that the most practical way would be selecting the region with 
the mouse and done.

One of this inspiring days a came up with a solution for GNU Emacs 
24.4.1: apply the following patch to mouse.el,
reload mouse.el, find the text file, split the window and change one 
window into another buffer (e.g. *scratch*).

Now drag the mouse holding down Mouse-1 (left button) over the desired 
text, release Mouse-1 and ditto.
A copy of the selected region appears in the other buffer. Keep 
collecting chunks of text in this way.
Try also double-click on a text unit.

--- emacs-24.4/lisp/mouse.el    2014-09-12 06:50:30.000000000 +0200
+++ mouse-new-A.el    2015-01-29 08:35:28.035302072 +0100
 <at>  <at>  -853,7 +853,12  <at>  <at> 
            (and mouse-drag-copy-region
             do-mouse-drag-region-post-process
             (let (deactivate-mark)
-             (copy-region-as-kill (mark) (point)))))
+             (copy-region-as-kill (mark) (point))))
+          (copy-region-as-kill (mark) (point))
+          (select-window (next-window))
+          (yank)
+          (newline)
(Continue reading)

Michal Nazarewicz | 29 Jan 15:06 2015
Picon

[PATCH] files.el: avoid asking whether to kill Emacs multiple times

From: Michal Nazarewicz <mina86 <at> mina86.com>

* lisp/files.el (save-buffers-kill-emacs): If `confirm-kill-emacs' is
set, but user has just been asked whether they really want to kill Emacs
(for example with a ‘Modified buffers exist; exit anyway?’ prompt) , do
not ask them for another confirmation.  However, apply this exception
only if `confirm-kill-emacs' is 'yes-or-no-p or 'y-or-n-p, otherwise this
change might errenously prevent some user defined function from being
run (adding such a function to `kill-emacs-query-functions' is probably
better option, but we don’t want to break any usage even if it’s
incorrect).
---
 lisp/files.el | 64 ++++++++++++++++++++++++++++++++---------------------------
 1 file changed, 35 insertions(+), 29 deletions(-)

diff --git a/lisp/files.el b/lisp/files.el
index e9632ed..7d94bc1 100644
--- a/lisp/files.el
+++ b/lisp/files.el
 <at>  <at>  -6590,35 +6590,41  <at>  <at>  (defun save-buffers-kill-emacs (&optional arg)
 if any returns nil.  If `confirm-kill-emacs' is non-nil, calls it."
   (interactive "P")
   (save-some-buffers arg t)
-  (and (or (not (memq t (mapcar (function
-				  (lambda (buf) (and (buffer-file-name buf)
-						     (buffer-modified-p buf))))
-				(buffer-list))))
-	   (yes-or-no-p "Modified buffers exist; exit anyway? "))
-       (or (not (fboundp 'process-list))
-	   ;; process-list is not defined on MSDOS.
(Continue reading)

Kelvin White | 29 Jan 07:21 2015
Picon

Slime repl (sbcl) history and/or cache problems

This may seem a little crazy, and a lot odd. I'm not even sure this is an emacs issue at all but I need to start the investigation somewhere. My development environment at work is using SBCL and quicklisp with slime within emacs (24.4.50.1). I've noticed that sometimes it seems like my code stays cached somehow even if I rm ~/.cache/*, restart the repl, and recompile the code. But if I kill emacs daemon, restart it and repeat the steps above, the problem seems to go away. Also, the repl history is gone from around the time I noticed the problem. I haven't noticed the issue prior to running this version of emacs. That doesn't mean it didn't exist, or even convince me that this is indeed a problem with emacs. It very well be some stupid behavior on my part. I am curious if any of you have experienced anything similar, or if this means I'm just going crazy? 

Is this scenario even possible and If not.. does any of you know any good psychiatrists?

Apologies in advance
David Kastrup | 28 Jan 14:31 2015
Picon
Picon

[PATCH] Let input queue deal gracefully with up-events

* keyboard.c (apply_modifiers_uncached, parse_solitary_modifier)
(parse_modifiers_uncached): React gracefully to "up-" modifiers:
those may easily be injected by user-level Lisp code.
(read_key_sequence): Discard unbound up-events like unbound
down-events: they are even more likely only relevant for special
purposes.

While Emacs will not produce up-events on its own currently (those are
converted to drag or click events before being converted to
Lisp-readable structures), the input queue can be made to contain them
by synthesizing events to `unread-command-events'.  This patch makes
Emacs deal consistently with such events.
---
 src/ChangeLog  |  9 +++++++++
 src/keyboard.c | 31 ++++++++++++++++++++++---------
 2 files changed, 31 insertions(+), 9 deletions(-)

diff --git a/src/ChangeLog b/src/ChangeLog
index 1df4f6a..f9f53c4 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
 <at>  <at>  -1,3 +1,12  <at>  <at> 
+2015-01-28  David Kastrup  <dak <at> gnu.org>
+
+	* keyboard.c (apply_modifiers_uncached, parse_solitary_modifier)
+	(parse_modifiers_uncached): React gracefully to "up-" modifiers:
+	those may easily be injected by user-level Lisp code.
+	(read_key_sequence): Discard unbound up-events like unbound
+	down-events: they are even more likely only relevant for special
+	purposes.
+
 2015-01-27  Eli Zaretskii  <eliz <at> gnu.org>

 	* dired.c (directory_files_internal) [WINDOWSNT]: If readdir
diff --git a/src/keyboard.c b/src/keyboard.c
index 383c109..4b6dc86 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
 <at>  <at>  -6202,6 +6202,10  <at>  <at>  parse_modifiers_uncached (Lisp_Object symbol, ptrdiff_t *modifier_end)
 	case 't':
 	  MULTI_LETTER_MOD (triple_modifier, "triple", 6);
 	  break;
+
+	case 'u':
+	  MULTI_LETTER_MOD (up_modifier, "up", 2);
+	  break;
 #undef MULTI_LETTER_MOD

 	}
 <at>  <at>  -6249,16 +6253,18  <at>  <at>  apply_modifiers_uncached (int modifiers, char *base, int base_len, int base_len_
   /* Since BASE could contain nulls, we can't use intern here; we have
      to use Fintern, which expects a genuine Lisp_String, and keeps a
      reference to it.  */
-  char new_mods[sizeof "A-C-H-M-S-s-down-drag-double-triple-"];
+  char new_mods[sizeof "A-C-H-M-S-s-up-down-drag-double-triple-"];
   int mod_len;

   {
     char *p = new_mods;

-    /* Only the event queue may use the `up' modifier; it should always
-       be turned into a click or drag event before presented to lisp code.  */
-    if (modifiers & up_modifier)
-      emacs_abort ();
+    /* Mouse events should not exhibit the `up' modifier; it should
+       always be turned into a click or drag event before presented to
+       lisp code.  And there should not be more than one of
+       up/down/click/drag anyway.  But since Lisp events can be
+       synthesized, we don't take exception to unexpected
+       combinations */

     if (modifiers & alt_modifier)   { *p++ = 'A'; *p++ = '-'; }
     if (modifiers & ctrl_modifier)  { *p++ = 'C'; *p++ = '-'; }
 <at>  <at>  -6268,6 +6274,7  <at>  <at>  apply_modifiers_uncached (int modifiers, char *base, int base_len, int base_len_
     if (modifiers & super_modifier) { *p++ = 's'; *p++ = '-'; }
     if (modifiers & double_modifier) p = stpcpy (p, "double-");
     if (modifiers & triple_modifier) p = stpcpy (p, "triple-");
+    if (modifiers & up_modifier) p = stpcpy (p, "up-");
     if (modifiers & down_modifier) p = stpcpy (p, "down-");
     if (modifiers & drag_modifier) p = stpcpy (p, "drag-");
     /* The click modifier is denoted by the absence of other modifiers.  */
 <at>  <at>  -6734,6 +6741,10  <at>  <at>  parse_solitary_modifier (Lisp_Object symbol)
       MULTI_LETTER_MOD (triple_modifier, "triple", 6);
       break;

+    case 'u':
+      MULTI_LETTER_MOD (up_modifier, "up", 2);
+      break;
+
 #undef SINGLE_LETTER_MOD
 #undef MULTI_LETTER_MOD
     }
 <at>  <at>  -9441,14 +9452,16  <at>  <at>  read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt,
 		   Drags reduce to clicks.
 		   Double-clicks reduce to clicks.
 		   Triple-clicks reduce to double-clicks, then to clicks.
-		   Down-clicks are eliminated.
+		   Up/Down-clicks are eliminated.
 		   Double-downs reduce to downs, then are eliminated.
 		   Triple-downs reduce to double-downs, then to downs,
 		     then are eliminated.  */
-	      if (modifiers & (down_modifier | drag_modifier
+	      if (modifiers & (up_modifier | down_modifier
+			       | drag_modifier
 			       | double_modifier | triple_modifier))
 		{
-		  while (modifiers & (down_modifier | drag_modifier
+		  while (modifiers & (up_modifier | down_modifier
+				      | drag_modifier
 				      | double_modifier | triple_modifier))
 		    {
 		      Lisp_Object new_head, new_click;
 <at>  <at>  -9460,7 +9473,7  <at>  <at>  read_key_sequence (Lisp_Object *keybuf, int bufsize, Lisp_Object prompt,
 			modifiers &= ~drag_modifier;
 		      else
 			{
-			  /* Dispose of this `down' event by simply jumping
+			  /* Dispose of this `up/down' event by simply jumping
 			     back to replay_key, to get another event.

 			     Note that if this event came from mock input,
--

-- 
2.1.0

Kelly Dean | 28 Jan 10:15 2015

[PATCH] Run hook when variable is set

Emacs lets you hook a mode, so you can run some function(s) whenever the mode is turned on or off.

The patch attached below lets you hook a symbol too, so you can run some function(s) whenever the global or
buffer-local variable by that name is set, or a dynamic variable by that name is bound, set, or unbound.

It works for the entire family of Elisp «set» functions (and makunbound), in both Elisp and C. It also
works for dynamic-let bindings. It is not implemented for lexical-let bindings.

The purpose of this new feature is to enable a proper fix for bug #19068, and to enable a solution to Stefan's
requirement that dynamic-cursor-mode be enabled by default as a condition for adding the latter to Emacs.

Use it like this:
(defun tattle (sym env)
  (message "Symbol %S modified in env %S. New value: %S"
	   sym env (if (boundp sym) (symbol-value sym) 'none)))
(add-hook 'foo-varhook #'tattle)
(put 'foo 'varhook 'foo-varhook) ; The varhook property is the trigger

(setq foo 'bar) → ⌜Symbol foo modified in env global. New value: bar⌝

(setq lexical-binding nil)
(let ((foo 'bar1)) (setq foo 'bar2)) →
⌜Symbol foo modified in env dyn-bind. New value: bar1
Symbol foo modified in env dyn-local. New value: bar2
Symbol foo modified in env dyn-unbind. New value: bar⌝

(makunbound 'foo) → ⌜Symbol foo modified in env global. New value: none⌝
(setq-local foo 'bar) → ⌜Symbol foo modified in env buffer-local. New value: bar⌝
(makunbound 'foo) → ⌜Symbol foo modified in env buffer-local. New value: none⌝

The varhook property must be a hook. To turn off the varhook, set the property to nil.

The indirection through a hook, rather than putting the list of functions directly in the varhook
property, lets you turn the varhook on/off without having to add/remove all your functions on the hook.

After you turn it off, if there are no other properties on the symbol, use
(setf (symbol-plist 'foo) nil)
to get rid of the superfluous property list that just records nil for varhook. If you leave the list there, it
causes a minor slowdown (the time required to check whether the property is nil) when setting the symbol.
The varhook feature is optimized to immediately skip a symbol if the property list is nil.

Each function on the hook must take two arguments:
0. The symbol S that was set (or bound or unbound), which is passed so you can have one function deal with
multiple symbols rather than needing a separate function for each symbol.
1. The environment or event in which S was set/bound/unbound. This is one of the following symbols:
global: S was set in the global env.
buffer-local: S was set in the env of the current buffer.
dyn-local: S was set in the innermost dynamic env in which S is bound.
dyn-bind: S was bound in a new dynamic env (created by dynamic «let»).
dyn-unbind: The innermost dynamic env in which S was bound was destroyed.

For lexical bindings, varhook isn't triggered.

The names ⌜dyn-⌝ are used instead of ⌜let-⌝ for clarity, since ⌜let⌝ is also used for lexical
bindings in Lisp.

If your function receives dyn-unbind and tries to read S, it will get the value bound to in an outer env, i.e.
in the innermost dynamic env in which S is still bound, or in the buffer-local or global env.

If you're only interested in global settings, just wrap your hook function's body in
(when (eq env 'global) ...)

You get recursion if your function sets the symbol in any env (except lexical). Make sure you have a
terminating condition.

The varhook is run not only when the symbol is set, but also when it's made unbound, either globally or
buffer-locally. Make sure your function checks for this before trying to read the variable.

Patch applies to trunk.

Attachment (varhook.patch): text/x-diff, 10 KiB
Eli Zaretskii | 27 Jan 20:40 2015
Picon

Strange error message from debbugs-gnu

"M-x debbugs-gnu" worked for me yesterday.  But today, on 2 different
machines, I get an error message:

  Soap-wsdl-get(apachens:Map): cannot find namespace alias apachens

What does this mean, and how can I solve this?

TIA

Alexis | 27 Jan 14:10 2015
Picon

Correction re.: Use of `dash` and `s` functions by MELPA packages


Hi again all,

Oleh Krehel has noted a flaw in the results, in which functions such as
`-when-let` and `-when-let-*` get squashed into (perhaps-nonexistent)
single-word functions (e.g. `-when`). This was caused by some incorrect
REs in my Perl5 script. Sorry!

Lines 75-76 should be:

#+begin_src perl

    if (/\(defun (${util_package_prefix}-?[*?[:alnum:]]+(?:-[*?[:alnum:]]+)*)/
        || /\(defmacro (${util_package_prefix}-?[*?[:alnum:]]+(?:-[*?[:alnum:]]+)*)/) {

#+end_src

and line 105 should be:

#+begin_src perl

    if (/\(\Q${key}\E /) {

#+end_src

With those changes, the analysis results are:

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

'dash' is used by 226/4506 files (5.02%).

# Function usage counts, sorted by decreasing frequency

Count       %       Function
-----------------------------------------
 266      14.91     -when-let
 215      12.05     -map
 124       6.95     --map
  87       4.88     --each
  80       4.48     -filter
  69       3.87     --filter
  67       3.76     -if-let
  58       3.25     -contains?
  54       3.03     -each
  47       2.63     --first
  41       2.30     -when-let*
  35       1.96     -flatten
  34       1.91     --remove
  32       1.79     -remove
  32       1.79     -last-item
  30       1.68     --when-let
  27       1.51     -mapcat
  23       1.29     -difference
  21       1.18     -any?
  20       1.12     -concat
  20       1.12     --any?
  19       1.07     -union
  18       1.01     -first
  16       0.90     -sort
  16       0.90     --reduce-from
  16       0.90     --if-let
  15       0.84     -all?
  14       0.78     -partial
  13       0.73     -take
  13       0.73     --sort
  12       0.67     -elem-index
  12       0.67     -distinct
  12       0.67     --mapcat
  11       0.62     -snoc
  11       0.62     -slice
   9       0.50     -reduce-from
   9       0.50     --keep
   8       0.45     -repeat
   8       0.45     --all?
   7       0.39     -interpose
   6       0.34     -let*
   6       0.34     -let
   6       0.34     -keep
   6       0.34     -intersection
   6       0.34     -insert-at
   6       0.34     -if-let*
   6       0.34     --group-by
   6       0.34     --dotimes
   5       0.28     -zip-with
   5       0.28     -zip
   5       0.28     -partition
   5       0.28     -list
   5       0.28     --separate
   4       0.22     -reduce
   4       0.22     -map-indexed
   4       0.22     -lambda
   4       0.22     --each-while
   4       0.22     --drop-while
   3       0.17     -non-nil
   3       0.17     -iterate
   3       0.17     -group-by
   3       0.17     --take-while
   3       0.17     --find-index
   2       0.11     -take-while
   2       0.11     -separate
   2       0.11     -replace-at
   2       0.11     -reduce-r-from
   2       0.11     -reduce-r
   2       0.11     -partition-in-steps
   2       0.11     -partition-all
   2       0.11     -min-by
   2       0.11     -interleave
   2       0.11     -drop-while
   2       0.11     -cons*
   2       0.11     -clone
   2       0.11     --split-with
   2       0.11     --reduce
   2       0.11     --map-indexed
   2       0.11     --last
   2       0.11     --find-last-index
   1       0.06     -update-at
   1       0.06     -table
   1       0.06     -sum
   1       0.06     -split-at
   1       0.06     -select-by-indices
   1       0.06     -replace
   1       0.06     -partition-all-in-ste
   1       0.06     -min
   1       0.06     -max-by
   1       0.06     -max
   1       0.06     -map-when
   1       0.06     -last
   1       0.06     -flatten-n
   1       0.06     -find-indices
   1       0.06     -dotimes
   1       0.06     -butlast
   1       0.06     -annotate
   1       0.06     --partition-by
   1       0.06     --none?
   1       0.06     --max-by
   1       0.06     --map-when
   0       0.00     -zip-fill
   0       0.00     -value-to-list
   0       0.00     -unfold
   0       0.00     -tree-seq
   0       0.00     -tree-reduce-from
   0       0.00     -tree-reduce
   0       0.00     -tree-mapreduce-from
   0       0.00     -tree-mapreduce
   0       0.00     -tree-map-nodes
   0       0.00     -tree-map
   0       0.00     -table-flat
   0       0.00     -split-with
   0       0.00     -split-when
   0       0.00     -split-on
   0       0.00     -splice-list
   0       0.00     -splice
   0       0.00     -same-items?
   0       0.00     -rotate
   0       0.00     -remove-at-indices
   0       0.00     -remove-at
   0       0.00     -product
   0       0.00     -partition-by-header
   0       0.00     -partition-by
   0       0.00     -pad
   0       0.00     -only-some?
   0       0.00     -none?
   0       0.00     -is-suffix?
   0       0.00     -is-prefix?
   0       0.00     -is-infix?
   0       0.00     -grade-up
   0       0.00     -grade-down
   0       0.00     -fix
   0       0.00     -find-last-index
   0       0.00     -find-index
   0       0.00     -elem-indices
   0       0.00     -each-while
   0       0.00     -cycle
   0       0.00     -count
   0       0.00     -cons-to-list
   0       0.00     -cons-pair?
   0       0.00     --zip-with
   0       0.00     --update-at
   0       0.00     --unfold
   0       0.00     --tree-seq
   0       0.00     --tree-reduce-from
   0       0.00     --tree-reduce
   0       0.00     --tree-mapreduce-from
   0       0.00     --tree-mapreduce
   0       0.00     --tree-map-nodes
   0       0.00     --tree-map
   0       0.00     --split-when
   0       0.00     --splice-list
   0       0.00     --splice
   0       0.00     --reduce-r-from
   0       0.00     --reduce-r
   0       0.00     --partition-by-header
   0       0.00     --only-some?
   0       0.00     --min-by
   0       0.00     --iterate
   0       0.00     --fix
   0       0.00     --find-indices
   0       0.00     --count
   0       0.00     --annotate

# Function usage counts, sorted by function name

Function                       Count      %
---------------------------------------------
--all?                           8       0.45
--annotate                       0       0.00
--any?                          20       1.12
--count                          0       0.00
--dotimes                        6       0.34
--drop-while                     4       0.22
--each                          87       4.88
--each-while                     4       0.22
--filter                        69       3.87
--find-index                     3       0.17
--find-indices                   0       0.00
--find-last-index                2       0.11
--first                         47       2.63
--fix                            0       0.00
--group-by                       6       0.34
--if-let                        16       0.90
--iterate                        0       0.00
--keep                           9       0.50
--last                           2       0.11
--map                          124       6.95
--map-indexed                    2       0.11
--map-when                       1       0.06
--mapcat                        12       0.67
--max-by                         1       0.06
--min-by                         0       0.00
--none?                          1       0.06
--only-some?                     0       0.00
--partition-by                   1       0.06
--partition-by-header            0       0.00
--reduce                         2       0.11
--reduce-from                   16       0.90
--reduce-r                       0       0.00
--reduce-r-from                  0       0.00
--remove                        34       1.91
--separate                       5       0.28
--sort                          13       0.73
--splice                         0       0.00
--splice-list                    0       0.00
--split-when                     0       0.00
--split-with                     2       0.11
--take-while                     3       0.17
--tree-map                       0       0.00
--tree-map-nodes                 0       0.00
--tree-mapreduce                 0       0.00
--tree-mapreduce-from            0       0.00
--tree-reduce                    0       0.00
--tree-reduce-from               0       0.00
--tree-seq                       0       0.00
--unfold                         0       0.00
--update-at                      0       0.00
--when-let                      30       1.68
--zip-with                       0       0.00
-all?                           15       0.84
-annotate                        1       0.06
-any?                           21       1.18
-butlast                         1       0.06
-clone                           2       0.11
-concat                         20       1.12
-cons*                           2       0.11
-cons-pair?                      0       0.00
-cons-to-list                    0       0.00
-contains?                      58       3.25
-count                           0       0.00
-cycle                           0       0.00
-difference                     23       1.29
-distinct                       12       0.67
-dotimes                         1       0.06
-drop-while                      2       0.11
-each                           54       3.03
-each-while                      0       0.00
-elem-index                     12       0.67
-elem-indices                    0       0.00
-filter                         80       4.48
-find-index                      0       0.00
-find-indices                    1       0.06
-find-last-index                 0       0.00
-first                          18       1.01
-fix                             0       0.00
-flatten                        35       1.96
-flatten-n                       1       0.06
-grade-down                      0       0.00
-grade-up                        0       0.00
-group-by                        3       0.17
-if-let                         67       3.76
-if-let*                         6       0.34
-insert-at                       6       0.34
-interleave                      2       0.11
-interpose                       7       0.39
-intersection                    6       0.34
-is-infix?                       0       0.00
-is-prefix?                      0       0.00
-is-suffix?                      0       0.00
-iterate                         3       0.17
-keep                            6       0.34
-lambda                          4       0.22
-last                            1       0.06
-last-item                      32       1.79
-let                             6       0.34
-let*                            6       0.34
-list                            5       0.28
-map                           215      12.05
-map-indexed                     4       0.22
-map-when                        1       0.06
-mapcat                         27       1.51
-max                             1       0.06
-max-by                          1       0.06
-min                             1       0.06
-min-by                          2       0.11
-non-nil                         3       0.17
-none?                           0       0.00
-only-some?                      0       0.00
-pad                             0       0.00
-partial                        14       0.78
-partition                       5       0.28
-partition-all                   2       0.11
-partition-all-in-steps          1       0.06
-partition-by                    0       0.00
-partition-by-header             0       0.00
-partition-in-steps              2       0.11
-product                         0       0.00
-reduce                          4       0.22
-reduce-from                     9       0.50
-reduce-r                        2       0.11
-reduce-r-from                   2       0.11
-remove                         32       1.79
-remove-at                       0       0.00
-remove-at-indices               0       0.00
-repeat                          8       0.45
-replace                         1       0.06
-replace-at                      2       0.11
-rotate                          0       0.00
-same-items?                     0       0.00
-select-by-indices               1       0.06
-separate                        2       0.11
-slice                          11       0.62
-snoc                           11       0.62
-sort                           16       0.90
-splice                          0       0.00
-splice-list                     0       0.00
-split-at                        1       0.06
-split-on                        0       0.00
-split-when                      0       0.00
-split-with                      0       0.00
-sum                             1       0.06
-table                           1       0.06
-table-flat                      0       0.00
-take                           13       0.73
-take-while                      2       0.11
-tree-map                        0       0.00
-tree-map-nodes                  0       0.00
-tree-mapreduce                  0       0.00
-tree-mapreduce-from             0       0.00
-tree-reduce                     0       0.00
-tree-reduce-from                0       0.00
-tree-seq                        0       0.00
-unfold                          0       0.00
-union                          19       1.07
-update-at                       1       0.06
-value-to-list                   0       0.00
-when-let                      266      14.91
-when-let*                      41       2.30
-zip                             5       0.28
-zip-fill                        0       0.00
-zip-with                        5       0.28

# Files using 'dash', sorted by usage count

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

### End

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

's' is used by 158/4506 files (3.51%).

# Function usage counts, sorted by decreasing frequency

Count       %       Function
-----------------------------------------
 126      14.00     s-join
  91      10.11     s-concat
  79       8.78     s-split
  74       8.22     s-matches?
  58       6.44     s-blank?
  55       6.11     s-trim
  52       5.78     s-starts-with?
  52       5.78     s-match
  42       4.67     s-equals?
  34       3.78     s-chop-prefix
  30       3.33     s-replace
  30       3.33     s-ends-with?
  21       2.33     s-contains?
  18       2.00     s-chop-suffix
  13       1.44     s-format
  12       1.33     s-lines
  11       1.22     s-prepend
  11       1.22     s-append
   9       1.00     s-repeat
   9       1.00     s-lex-format
   6       0.67     s-replace-all
   6       0.67     s-chomp
   5       0.56     s-index-of
   5       0.56     s-downcase
   4       0.44     s-truncate
   4       0.44     s-present?
   4       0.44     s-numeric?
   3       0.33     s-word-wrap
   3       0.33     s-trim-right
   3       0.33     s-trim-left
   3       0.33     s-slice-at
   3       0.33     s-shared-start
   3       0.33     s-chop-prefixes
   2       0.22     s-with
   2       0.22     s-upcase
   2       0.22     s-split-words
   2       0.22     s-right
   2       0.22     s-pad-right
   2       0.22     s-left
   2       0.22     s-dashed-words
   1       0.11     s-upper-camel-case
   1       0.11     s-split-up-to
   1       0.11     s-snake-case
   1       0.11     s-presence
   1       0.11     s-match-strings-all
   1       0.11     s-lower-camel-case
   1       0.11     s-capitalize
   0       0.00     s-wrap
   0       0.00     s-word-initials
   0       0.00     s-uppercase?
   0       0.00     s-titleized-words
   0       0.00     s-titleize
   0       0.00     s-shared-end
   0       0.00     s-reverse
   0       0.00     s-pad-left
   0       0.00     s-mixedcase?
   0       0.00     s-lowercase?
   0       0.00     s-lex-fmt
   0       0.00     s-less?
   0       0.00     s-count-matches
   0       0.00     s-collapse-whitespace
   0       0.00     s-chop-suffixes
   0       0.00     s-center
   0       0.00     s-capitalized?
   0       0.00     s-capitalized-words
   0       0.00     s--truthy?
   0       0.00     s--mapcar-head
   0       0.00     s--aget

# Function usage counts, sorted by function name

Function                       Count      %
---------------------------------------------
s--aget                          0       0.00
s--mapcar-head                   0       0.00
s--truthy?                       0       0.00
s-append                        11       1.22
s-blank?                        58       6.44
s-capitalize                     1       0.11
s-capitalized-words              0       0.00
s-capitalized?                   0       0.00
s-center                         0       0.00
s-chomp                          6       0.67
s-chop-prefix                   34       3.78
s-chop-prefixes                  3       0.33
s-chop-suffix                   18       2.00
s-chop-suffixes                  0       0.00
s-collapse-whitespace            0       0.00
s-concat                        91      10.11
s-contains?                     21       2.33
s-count-matches                  0       0.00
s-dashed-words                   2       0.22
s-downcase                       5       0.56
s-ends-with?                    30       3.33
s-equals?                       42       4.67
s-format                        13       1.44
s-index-of                       5       0.56
s-join                         126      14.00
s-left                           2       0.22
s-less?                          0       0.00
s-lex-fmt                        0       0.00
s-lex-format                     9       1.00
s-lines                         12       1.33
s-lower-camel-case               1       0.11
s-lowercase?                     0       0.00
s-match                         52       5.78
s-match-strings-all              1       0.11
s-matches?                      74       8.22
s-mixedcase?                     0       0.00
s-numeric?                       4       0.44
s-pad-left                       0       0.00
s-pad-right                      2       0.22
s-prepend                       11       1.22
s-presence                       1       0.11
s-present?                       4       0.44
s-repeat                         9       1.00
s-replace                       30       3.33
s-replace-all                    6       0.67
s-reverse                        0       0.00
s-right                          2       0.22
s-shared-end                     0       0.00
s-shared-start                   3       0.33
s-slice-at                       3       0.33
s-snake-case                     1       0.11
s-split                         79       8.78
s-split-up-to                    1       0.11
s-split-words                    2       0.22
s-starts-with?                  52       5.78
s-titleize                       0       0.00
s-titleized-words                0       0.00
s-trim                          55       6.11
s-trim-left                      3       0.33
s-trim-right                     3       0.33
s-truncate                       4       0.44
s-upcase                         2       0.22
s-upper-camel-case               1       0.11
s-uppercase?                     0       0.00
s-with                           2       0.22
s-word-initials                  0       0.00
s-word-wrap                      3       0.33
s-wrap                           0       0.00

# Files using 's', sorted by usage count

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

# Files using 's', sorted alphabetically

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

### End

Alexis.

Alexis | 27 Jan 10:13 2015
Picon

Use of `dash` and `s` functions by MELPA packages


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  <at> funcs_by_frequency;
    my  <at> funcs_by_name;
    my  <at> package_elements_by_usage_frequency;
    my  <at> package_elements_by_name;
    my  <at> 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  <at> 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  <at> funcs_by_frequency, $count . "\t" . $percentage . "\t" . $func;
        push  <at> funcs_by_name, $func . "\t" . $count . "\t" . $percentage;
    }

    for $package_element (sort keys %usages) {
        $count = sprintf("%3u", $usages{$package_element});
        push  <at> package_elements_by_usage_frequency, $count . "\t" . $package_element;
        push  <at> 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 =
     <at> ###      <at> ##.##      <at> <<<<<<<<<<<<<<<<<<<<
    $count, $percentage, $func
    .

    $FORMAT_LINES_LEFT = 0;
    $FORMAT_TOP_NAME = 'Frequency_top';
    $FORMAT_NAME = 'Frequency';
    for my $elt (reverse sort  <at> 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 =
     <at> <<<<<<<<<<<<<<<<<<<<<<<<      <at> ###      <at> ##.##
    $func, $count, $percentage
    .

    $FORMAT_LINES_LEFT = 0;
    $FORMAT_TOP_NAME = 'Name_top';
    $FORMAT_NAME = 'Name';
    for my $elt (sort  <at> 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 =
     <at> ###       <at> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    $count, $package_element
    .

    $FORMAT_LINES_LEFT = 0;
    $FORMAT_TOP_NAME = 'File_usages_count_top';
    $FORMAT_NAME = 'File_usages_count';
    for my $elt (reverse sort  <at> 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 =
     <at> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<    <at> ##
    $package_element, $count
    .

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

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

#+end_src

Alexis.


Gmane