about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--content/post/cedit-and-paredit.md4
-rw-r--r--content/post/emacs-package-archive-statistics.md40
2 files changed, 22 insertions, 22 deletions
diff --git a/content/post/cedit-and-paredit.md b/content/post/cedit-and-paredit.md index 09ed176..a8b65a1 100644 --- a/content/post/cedit-and-paredit.md +++ b/content/post/cedit-and-paredit.md
@@ -28,12 +28,12 @@ paredit. Turns out it provides
28that control whether a space should be inserted. So, solving the 28that control whether a space should be inserted. So, solving the
29formatting issue turned out to be pretty simple: 29formatting issue turned out to be pretty simple:
30 30
31{{% highlight cl %}} 31{{< highlight cl >}}
32(defun ap/cedit-space-delimiter-p (endp delimiter) 32(defun ap/cedit-space-delimiter-p (endp delimiter)
33"Don't insert a space before delimiters in c-style modes" 33"Don't insert a space before delimiters in c-style modes"
34(not cedit-mode)) 34(not cedit-mode))
35(add-to-list 'paredit-space-for-delimiter-predicates #'ap/cedit-space-delimiter-p) 35(add-to-list 'paredit-space-for-delimiter-predicates #'ap/cedit-space-delimiter-p)
36{{% /highlight %}} 36{{< /highlight >}}
37 37
38Hopefully that saves someone some time if they try to use the two 38Hopefully that saves someone some time if they try to use the two
39together. 39together.
diff --git a/content/post/emacs-package-archive-statistics.md b/content/post/emacs-package-archive-statistics.md index 4bfa91e..5f74f18 100644 --- a/content/post/emacs-package-archive-statistics.md +++ b/content/post/emacs-package-archive-statistics.md
@@ -10,13 +10,13 @@ I use [cask][] for managing the dependencies of my Emacs
10configuration. Whenever I opened my `Cask` file, I wondered if I 10configuration. Whenever I opened my `Cask` file, I wondered if I
11really was using all the sources I had defined: 11really was using all the sources I had defined:
12 12
13{{% highlight cl %}} 13{{< highlight cl >}}
14(source gnu) 14(source gnu)
15(source marmalade) 15(source marmalade)
16(source melpa) 16(source melpa)
17(source melpa-stable) 17(source melpa-stable)
18(source org) 18(source org)
19{{% /highlight %}} 19{{< /highlight >}}
20 20
21It seemed quite strange that we have so many package repositories in 21It seemed quite strange that we have so many package repositories in
22the Emacs world and I'm not even using all of them. I find this state 22the Emacs world and I'm not even using all of them. I find this state
@@ -44,29 +44,29 @@ decided to try to figure out how to generate some usage statistics.
44I found [how to get a list of installed packages][], but that just gives 44I found [how to get a list of installed packages][], but that just gives
45a list: 45a list:
46 46
47{{% highlight cl %}} 47{{< highlight cl >}}
48(ace-jump-mode ag auto-compile auto-indent-mode autopair ...) 48(ace-jump-mode ag auto-compile auto-indent-mode autopair ...)
49{{% /highlight %}} 49{{< /highlight >}}
50 50
51I needed to get more information about those packages. I looked at 51I needed to get more information about those packages. I looked at
52where `list-packages` gets that information from. It seems that 52where `list-packages` gets that information from. It seems that
53`package-archive-contents` is a list of cons cells: 53`package-archive-contents` is a list of cons cells:
54 54
55{{% highlight cl %}} 55{{< highlight cl >}}
56(org-plus-contrib . 56(org-plus-contrib .
57 [(20140714) 57 [(20140714)
58 nil "Outline-based notes management and organizer" tar "org"]) 58 nil "Outline-based notes management and organizer" tar "org"])
59{{% /highlight %}} 59{{< /highlight >}}
60 60
61Then created a function to loop over the contents of 61Then created a function to loop over the contents of
62`package-activated-list`, retrieving the corresponding contents of 62`package-activated-list`, retrieving the corresponding contents of
63`package-archive-contents`: 63`package-archive-contents`:
64 64
65{{% highlight cl %}} 65{{< highlight cl >}}
66(defun package-list-installed () 66(defun package-list-installed ()
67 (loop for pkg in package-activated-list 67 (loop for pkg in package-activated-list
68 collect (assq pkg package-archive-contents))) 68 collect (assq pkg package-archive-contents)))
69{{% /highlight %}} 69{{< /highlight >}}
70 70
71This generates a list of arrays from `package-archive-contents`. 71This generates a list of arrays from `package-archive-contents`.
72There are some helper functions in package.el such as 72There are some helper functions in package.el such as
@@ -74,11 +74,11 @@ There are some helper functions in package.el such as
74needed. I happened to be using a pretest version of Emacs at the time 74needed. I happened to be using a pretest version of Emacs at the time
75and didn't know that it's not in 24.3, so I just made sure it was defined: 75and didn't know that it's not in 24.3, so I just made sure it was defined:
76 76
77{{% highlight cl %}} 77{{< highlight cl >}}
78(if (not (fboundp #'package-desc-archive)) 78(if (not (fboundp #'package-desc-archive))
79 (defsubst package-desc-archive (desc) 79 (defsubst package-desc-archive (desc)
80 (aref desc (1- (length desc))))) 80 (aref desc (1- (length desc)))))
81{{% /highlight %}} 81{{< /highlight >}}
82 82
83Weirdly, some of the arrays (seemingly the ones from the 83Weirdly, some of the arrays (seemingly the ones from the
84[org archive][]) had a different length, but the repository/archive was 84[org archive][]) had a different length, but the repository/archive was
@@ -89,7 +89,7 @@ To generate a list of statistics, I just needed to loop over the
89installed packages from `package-list-installed` and update a count 89installed packages from `package-list-installed` and update a count
90for each archive: 90for each archive:
91 91
92{{% highlight cl %}} 92{{< highlight cl >}}
93(defun package-archive-stats () 93(defun package-archive-stats ()
94 (let ((archives (makehash)) 94 (let ((archives (makehash))
95 (assoc '())) 95 (assoc '()))
@@ -101,32 +101,32 @@ for each archive:
101 (let ((pkg-arc (package-desc-archive (cdr pkg)))) 101 (let ((pkg-arc (package-desc-archive (cdr pkg))))
102 (incf (gethash pkg-arc archives))))) 102 (incf (gethash pkg-arc archives)))))
103 assoc)) 103 assoc))
104{{% /highlight %}} 104{{< /highlight >}}
105 105
106Running this gives a list of cons cells: 106Running this gives a list of cons cells:
107 107
108{{% highlight cl %}} 108{{< highlight cl >}}
109(("gnu" . 0) 109(("gnu" . 0)
110 ("org" . 1) 110 ("org" . 1)
111 ("melpa-stable" . 2) 111 ("melpa-stable" . 2)
112 ("melpa" . 106) 112 ("melpa" . 106)
113 ("marmalade" . 1)) 113 ("marmalade" . 1))
114{{% /highlight %}} 114{{< /highlight >}}
115 115
116I wrapped it in an interactive function so that I could check the 116I wrapped it in an interactive function so that I could check the
117numbers quickly: 117numbers quickly:
118 118
119{{% highlight cl %}} 119{{< highlight cl >}}
120(defun package-show-archive-stats () 120(defun package-show-archive-stats ()
121 (interactive) 121 (interactive)
122 (message "%s" (package-archive-stats))) 122 (message "%s" (package-archive-stats)))
123{{% /highlight %}} 123{{< /highlight >}}
124 124
125With that, I removed `(source gnu)` from my `Cask` file. Now I had 125With that, I removed `(source gnu)` from my `Cask` file. Now I had
126another question. What package was installed from [marmalade][]? In 126another question. What package was installed from [marmalade][]? In
127the lisp fashion, I created yet another function: 127the lisp fashion, I created yet another function:
128 128
129{{% highlight cl %}} 129{{< highlight cl >}}
130(defun package-show-installed-from-archive (archive) 130(defun package-show-installed-from-archive (archive)
131 (interactive (list (helm-comp-read "Archive: " (mapcar #'car package-archives) 131 (interactive (list (helm-comp-read "Archive: " (mapcar #'car package-archives)
132 :must-match t))) 132 :must-match t)))
@@ -136,15 +136,15 @@ the lisp fashion, I created yet another function:
136 (if (called-interactively-p) 136 (if (called-interactively-p)
137 (message "%s" from-arc) 137 (message "%s" from-arc)
138 from-arc))) 138 from-arc)))
139{{% /highlight %}} 139{{< /highlight >}}
140(Non-helm users can replace `helm-comp-read` with 140(Non-helm users can replace `helm-comp-read` with
141`ido-completing-read` or similar) 141`ido-completing-read` or similar)
142 142
143Running this with the argument `"marmalade"` gives: 143Running this with the argument `"marmalade"` gives:
144 144
145{{% highlight cl %}} 145{{< highlight cl >}}
146(php-extras) 146(php-extras)
147{{% /highlight %}} 147{{< /highlight >}}
148 148
149I checked on [MELPA Stable][] and [MELPA][], but it's not available 149I checked on [MELPA Stable][] and [MELPA][], but it's not available
150there. Given that I use [php-extras][] quite a bit at work, I can't remove 150there. Given that I use [php-extras][] quite a bit at work, I can't remove