1 | (define-module (emacs)
|
---|
2 | #:use-module ((guix licenses) #:prefix license:)
|
---|
3 | #:use-module (guix packages)
|
---|
4 | #:use-module (guix download)
|
---|
5 | #:use-module (guix build-system gnu)
|
---|
6 | #:use-module (guix git-download)
|
---|
7 | #:use-module (guix licenses)
|
---|
8 | #:use-module (guix utils)
|
---|
9 | #:use-module (guix memoization)
|
---|
10 | #:use-module (guix build-system emacs)
|
---|
11 | #:use-module (guix build-system glib-or-gtk)
|
---|
12 | #:use-module (gnu packages)
|
---|
13 | #:use-module (gnu packages imagemagick)
|
---|
14 | #:use-module (gnu packages xorg)
|
---|
15 | #:use-module (gnu packages base)
|
---|
16 | #:use-module (gnu packages code)
|
---|
17 | #:use-module (gnu packages gcc)
|
---|
18 | #:use-module (gnu packages php)
|
---|
19 | #:use-module (gnu packages web)
|
---|
20 | #:use-module (gnu packages autotools)
|
---|
21 | #:use-module (gnu packages compression)
|
---|
22 | #:use-module (gnu packages emacs)
|
---|
23 | #:use-module (gnu packages emacs-xyz)
|
---|
24 | #:use-module (guix utils)
|
---|
25 | #:use-module (srfi srfi-1)
|
---|
26 | #:use-module (ice-9 match))
|
---|
27 |
|
---|
28 | (define-public emacs
|
---|
29 | (package
|
---|
30 | (name "emacs")
|
---|
31 | (version "28.1")
|
---|
32 | (source (origin
|
---|
33 | (method url-fetch)
|
---|
34 | (uri (string-append "mirror://gnu/emacs/emacs-"
|
---|
35 | version ".tar.xz"))
|
---|
36 | (sha256
|
---|
37 | (base32
|
---|
38 | "1qbmmmhnjhn4lvzsnyk7l5ganbi6wzbm38jc1a7hhyh3k78b7c98"))
|
---|
39 | (patches (search-patches "emacs-exec-path.patch"
|
---|
40 | "emacs-fix-scheme-indent-function.patch"
|
---|
41 | "emacs-source-date-epoch.patch"))
|
---|
42 | (modules '((guix build utils)))
|
---|
43 | (snippet
|
---|
44 | '(with-directory-excursion "lisp"
|
---|
45 | ;; Delete the bundled byte-compiled elisp files and generated
|
---|
46 | ;; autoloads.
|
---|
47 | (for-each delete-file
|
---|
48 | (append (find-files "." "\\.elc$")
|
---|
49 | (find-files "." "loaddefs\\.el$")
|
---|
50 | (find-files "eshell" "^esh-groups\\.el$")))
|
---|
51 |
|
---|
52 | ;; Make sure Tramp looks for binaries in the right places on
|
---|
53 | ;; remote Guix System machines, where 'getconf PATH' returns
|
---|
54 | ;; something bogus.
|
---|
55 | (substitute* "net/tramp-sh.el"
|
---|
56 | ;; Patch the line after "(defcustom tramp-remote-path".
|
---|
57 | (("\\(tramp-default-remote-path")
|
---|
58 | (format #f "(tramp-default-remote-path ~s ~s ~s ~s "
|
---|
59 | "~/.guix-profile/bin" "~/.guix-profile/sbin"
|
---|
60 | "/run/current-system/profile/bin"
|
---|
61 | "/run/current-system/profile/sbin")))
|
---|
62 |
|
---|
63 | ;; Make sure Man looks for C header files in the right
|
---|
64 | ;; places.
|
---|
65 | (substitute* "man.el"
|
---|
66 | (("\"/usr/local/include\"" line)
|
---|
67 | (string-join
|
---|
68 | (list line
|
---|
69 | "\"~/.guix-profile/include\""
|
---|
70 | "\"/var/guix/profiles/system/profile/include\"")
|
---|
71 | " ")))
|
---|
72 | #t))))
|
---|
73 | (build-system glib-or-gtk-build-system)
|
---|
74 | (arguments
|
---|
75 | `(#:tests? #f ; no check target
|
---|
76 | #:configure-flags (list "--with-modules"
|
---|
77 | "--with-cairo"
|
---|
78 | "--disable-build-details")
|
---|
79 | #:phases
|
---|
80 | (modify-phases %standard-phases
|
---|
81 | (add-after 'unpack 'patch-program-file-names
|
---|
82 | (lambda* (#:key inputs #:allow-other-keys)
|
---|
83 | (substitute* '("src/callproc.c"
|
---|
84 | "lisp/term.el"
|
---|
85 | "lisp/htmlfontify.el"
|
---|
86 | "lisp/textmodes/artist.el"
|
---|
87 | "lisp/progmodes/sh-script.el")
|
---|
88 | (("\"/bin/sh\"")
|
---|
89 | (format #f "~s" (which "sh"))))
|
---|
90 | (substitute* "lisp/doc-view.el"
|
---|
91 | (("\"(gs|dvipdf|ps2pdf)\"" all what)
|
---|
92 | (let ((ghostscript (assoc-ref inputs "ghostscript")))
|
---|
93 | (if ghostscript
|
---|
94 | (string-append "\"" ghostscript "/bin/" what "\"")
|
---|
95 | all)))
|
---|
96 | (("\"(pdftotext)\"" all what)
|
---|
97 | (let ((poppler (assoc-ref inputs "poppler")))
|
---|
98 | (if poppler
|
---|
99 | (string-append "\"" poppler "/bin/" what "\"")
|
---|
100 | all))))
|
---|
101 | ;; match ".gvfs-fuse-daemon-real" and ".gvfsd-fuse-real"
|
---|
102 | ;; respectively when looking for GVFS processes.
|
---|
103 | (substitute* "lisp/net/tramp-gvfs.el"
|
---|
104 | (("\\(tramp-compat-process-running-p \"(.*)\"\\)" all process)
|
---|
105 | (format #f "(or ~a (tramp-compat-process-running-p ~s))"
|
---|
106 | all (string-append "." process "-real"))))
|
---|
107 | #t))
|
---|
108 | (add-before 'configure 'fix-/bin/pwd
|
---|
109 | (lambda _
|
---|
110 | ;; Use `pwd', not `/bin/pwd'.
|
---|
111 | (substitute* (find-files "." "^Makefile\\.in$")
|
---|
112 | (("/bin/pwd")
|
---|
113 | "pwd"))
|
---|
114 | #t))
|
---|
115 | (add-after 'install 'install-site-start
|
---|
116 | ;; Use 'guix-emacs' in "site-start.el", which is used autoload the
|
---|
117 | ;; Elisp packages found in EMACSLOADPATH.
|
---|
118 | (lambda* (#:key inputs outputs #:allow-other-keys)
|
---|
119 | (let* ((out (assoc-ref outputs "out"))
|
---|
120 | (lisp-dir (string-append out "/share/emacs/site-lisp"))
|
---|
121 | (emacs (string-append out "/bin/emacs")))
|
---|
122 |
|
---|
123 | ;; This is duplicated from emacs-utils to prevent coupling.
|
---|
124 | (define* (emacs-byte-compile-directory dir)
|
---|
125 | (let ((expr `(progn
|
---|
126 | (setq byte-compile-debug t)
|
---|
127 | (byte-recompile-directory
|
---|
128 | (file-name-as-directory ,dir) 0 1))))
|
---|
129 | (invoke emacs "--quick" "--batch"
|
---|
130 | (format #f "--eval=~s" expr))))
|
---|
131 |
|
---|
132 | (copy-file (assoc-ref inputs "guix-emacs.el")
|
---|
133 | (string-append lisp-dir "/guix-emacs.el"))
|
---|
134 | (with-output-to-file (string-append lisp-dir "/site-start.el")
|
---|
135 | (lambda ()
|
---|
136 | (display
|
---|
137 | (string-append
|
---|
138 | "(when (require 'guix-emacs nil t)\n"
|
---|
139 | " (guix-emacs-autoload-packages)\n"
|
---|
140 | " (advice-add 'package-load-all-descriptors"
|
---|
141 | " :after #'guix-emacs-load-package-descriptors))"))))
|
---|
142 | ;; Remove the extraneous subdirs.el file, as it causes Emacs to
|
---|
143 | ;; add recursively all the the sub-directories of a profile's
|
---|
144 | ;; share/emacs/site-lisp union when added to EMACSLOADPATH,
|
---|
145 | ;; which leads to conflicts.
|
---|
146 | (delete-file (string-append lisp-dir "/subdirs.el"))
|
---|
147 | ;; Byte compile the site-start files.
|
---|
148 | (emacs-byte-compile-directory lisp-dir))
|
---|
149 | #t))
|
---|
150 | (add-after 'glib-or-gtk-wrap 'restore-emacs-pdmp
|
---|
151 | ;; restore the dump file that Emacs installs somewhere in
|
---|
152 | ;; libexec/ to its original state
|
---|
153 | (lambda* (#:key outputs target #:allow-other-keys)
|
---|
154 | (let* ((libexec (string-append (assoc-ref outputs "out")
|
---|
155 | "/libexec"))
|
---|
156 | ;; each of these ought to only match a single file,
|
---|
157 | ;; but even if not (find-files) sorts by string<,
|
---|
158 | ;; so the Nth element in one maps to the Nth element of
|
---|
159 | ;; the other
|
---|
160 | (pdmp (find-files libexec "\\.pdmp$"))
|
---|
161 | (pdmp-real (find-files libexec "\\.pdmp-real$")))
|
---|
162 | (for-each rename-file pdmp-real pdmp))))
|
---|
163 | (add-after 'glib-or-gtk-wrap 'strip-double-wrap
|
---|
164 | (lambda* (#:key outputs #:allow-other-keys)
|
---|
165 | ;; Directly copy emacs-X.Y to emacs, so that it is not wrapped
|
---|
166 | ;; twice. This also fixes a minor issue, where WMs would not be
|
---|
167 | ;; able to track emacs back to emacs.desktop.
|
---|
168 | (with-directory-excursion (assoc-ref outputs "out")
|
---|
169 | (copy-file
|
---|
170 | (car (find-files "bin" "^emacs-([0-9]+\\.)+[0-9]+$"))
|
---|
171 | "bin/emacs")
|
---|
172 | #t)))
|
---|
173 | (add-after 'strip-double-wrap 'wrap-emacs-paths
|
---|
174 | (lambda* (#:key inputs outputs #:allow-other-keys)
|
---|
175 | (let* ((out (assoc-ref outputs "out"))
|
---|
176 | (lisp-dirs (find-files (string-append out "/share/emacs")
|
---|
177 | "^lisp$"
|
---|
178 | #:directories? #t)))
|
---|
179 | (for-each
|
---|
180 | (lambda (prog)
|
---|
181 | (wrap-program prog
|
---|
182 | ;; emacs-next and variants rely on uname being in PATH for
|
---|
183 | ;; Tramp. Tramp paths can't be hardcoded, because they
|
---|
184 | ;; need to be portable.
|
---|
185 | `("PATH" suffix
|
---|
186 | ,(map (lambda (in) (string-append in "/bin"))
|
---|
187 | (list (assoc-ref inputs "gzip")
|
---|
188 | (assoc-ref inputs "coreutils"))))
|
---|
189 | `("EMACSLOADPATH" suffix ,lisp-dirs)))
|
---|
190 | (find-files (string-append out "/bin")
|
---|
191 | ;; Matches versioned and unversioned emacs binaries.
|
---|
192 | ;; We don't patch emacsclient, because it takes its
|
---|
193 | ;; environment variables from emacs.
|
---|
194 | ;; Likewise, we don't need to patch helper binaries
|
---|
195 | ;; like etags, ctags or ebrowse.
|
---|
196 | "^emacs(-[0-9]+(\\.[0-9]+)*)?$"))))))))
|
---|
197 | (inputs
|
---|
198 | `(("gnutls" ,gnutls)
|
---|
199 | ("ncurses" ,ncurses)
|
---|
200 |
|
---|
201 | ;; Required for "core" functionality, such as dired and compression.
|
---|
202 | ("coreutils" ,coreutils)
|
---|
203 | ("gzip" ,gzip)
|
---|
204 |
|
---|
205 | ;; Avoid Emacs's limited movemail substitute that retrieves POP3 email
|
---|
206 | ;; only via insecure channels. This is not needed for (modern) IMAP.
|
---|
207 | ("mailutils" ,mailutils)
|
---|
208 |
|
---|
209 | ;; TODO: Add the optional dependencies.
|
---|
210 | ("gpm" ,gpm)
|
---|
211 | ("libx11" ,libx11)
|
---|
212 | ("gtk+" ,gtk+)
|
---|
213 | ("cairo" ,cairo)
|
---|
214 | ("pango" ,pango)
|
---|
215 | ("harfbuzz" ,harfbuzz)
|
---|
216 | ("libxft" ,libxft)
|
---|
217 | ("libtiff" ,libtiff)
|
---|
218 | ("giflib" ,giflib)
|
---|
219 | ("libjpeg" ,libjpeg-turbo)
|
---|
220 | ("acl" ,acl)
|
---|
221 | ("jansson" ,jansson)
|
---|
222 | ("gmp" ,gmp)
|
---|
223 | ("ghostscript" ,ghostscript)
|
---|
224 | ("poppler" ,poppler)
|
---|
225 |
|
---|
226 | ;; When looking for libpng `configure' links with `-lpng -lz', so we
|
---|
227 | ;; must also provide zlib as an input.
|
---|
228 | ("libpng" ,libpng)
|
---|
229 | ("zlib" ,zlib)
|
---|
230 | ("librsvg" ,@(if (target-x86-64?)
|
---|
231 | (list librsvg-bootstrap)
|
---|
232 | (list librsvg-2.40)))
|
---|
233 | ("libxpm" ,libxpm)
|
---|
234 | ("libxml2" ,libxml2)
|
---|
235 | ("libice" ,libice)
|
---|
236 | ("libsm" ,libsm)
|
---|
237 | ("alsa-lib" ,alsa-lib)
|
---|
238 | ("dbus" ,dbus)
|
---|
239 |
|
---|
240 | ;; multilingualization support
|
---|
241 | ("libotf" ,libotf)
|
---|
242 | ("m17n-lib" ,m17n-lib)))
|
---|
243 | (native-inputs
|
---|
244 | `(("guix-emacs.el" ,(search-auxiliary-file "emacs/guix-emacs.el"))
|
---|
245 | ("pkg-config" ,pkg-config)
|
---|
246 | ("texinfo" ,texinfo)))
|
---|
247 |
|
---|
248 | (native-search-paths
|
---|
249 | (list (search-path-specification
|
---|
250 | (variable "EMACSLOADPATH")
|
---|
251 | (files '("share/emacs/site-lisp")))
|
---|
252 | (search-path-specification
|
---|
253 | (variable "INFOPATH")
|
---|
254 | (files '("share/info")))))
|
---|
255 |
|
---|
256 | (home-page "https://www.gnu.org/software/emacs/")
|
---|
257 | (synopsis "The extensible, customizable, self-documenting text editor")
|
---|
258 | (description
|
---|
259 | "GNU Emacs is an extensible and highly customizable text editor. It is
|
---|
260 | based on an Emacs Lisp interpreter with extensions for text editing. Emacs
|
---|
261 | has been extended in essentially all areas of computing, giving rise to a
|
---|
262 | vast array of packages supporting, e.g., email, IRC and XMPP messaging,
|
---|
263 | spreadsheets, remote server editing, and much more. Emacs includes extensive
|
---|
264 | documentation on all aspects of the system, from basic editing to writing
|
---|
265 | large Lisp programs. It has full Unicode support for nearly all human
|
---|
266 | languages.")
|
---|
267 | (license license:gpl3+)))
|
---|
268 |
|
---|
269 | (define-public libgccjit-for-gcc
|
---|
270 | (mlambda (gcc)
|
---|
271 | (package
|
---|
272 | (inherit gcc)
|
---|
273 | (name "libgccjit")
|
---|
274 | (outputs (delete "lib" (package-outputs gcc)))
|
---|
275 | (properties (alist-delete 'hidden? (package-properties gcc)))
|
---|
276 | (arguments
|
---|
277 | (substitute-keyword-arguments `(#:modules ((guix build gnu-build-system)
|
---|
278 | (guix build utils)
|
---|
279 | (ice-9 regex)
|
---|
280 | (srfi srfi-1)
|
---|
281 | (srfi srfi-26))
|
---|
282 | ,@(package-arguments gcc))
|
---|
283 | ((#:configure-flags flags)
|
---|
284 | `(append '("--disable-bootstrap"
|
---|
285 | "--disable-libatomic"
|
---|
286 | "--disable-libgomp"
|
---|
287 | "--disable-libquadmath"
|
---|
288 | "--disable-libssp"
|
---|
289 | "--enable-host-shared"
|
---|
290 | "--enable-checking=release"
|
---|
291 | "--enable-languages=jit")
|
---|
292 | (remove (cut string-match "--enable-languages.*" <>)
|
---|
293 | ,flags)))
|
---|
294 | ((#:phases phases)
|
---|
295 | `(modify-phases ,phases
|
---|
296 | (add-after 'install 'remove-broken-or-conflicting-files
|
---|
297 | (lambda* (#:key outputs #:allow-other-keys)
|
---|
298 | (for-each delete-file
|
---|
299 | (find-files (string-append (assoc-ref outputs "out") "/bin")
|
---|
300 | ".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|gcc-.*)"))
|
---|
301 | #t))))))
|
---|
302 | (inputs
|
---|
303 | (alist-delete "libstdc++"
|
---|
304 | (package-inputs gcc)))
|
---|
305 | (native-inputs
|
---|
306 | `(("gcc" ,gcc)
|
---|
307 | ,@(package-native-inputs gcc))))))
|
---|
308 |
|
---|
309 | (define-public libgccjit-10
|
---|
310 | (libgccjit-for-gcc gcc-10))
|
---|
311 |
|
---|
312 | (define-public libgccjit-11
|
---|
313 | (libgccjit-for-gcc gcc-11))
|
---|
314 |
|
---|
315 | (define-public emacs
|
---|
316 | (package
|
---|
317 | (inherit emacs)
|
---|
318 | (name "emacs")
|
---|
319 | (version "28.1")
|
---|
320 | (source
|
---|
321 | (origin
|
---|
322 | (method url-fetch)
|
---|
323 | (uri (string-append "mirror://gnu/emacs/emacs-"
|
---|
324 | version ".tar.xz"))
|
---|
325 | (sha256
|
---|
326 | (base32
|
---|
327 | "1qbmmmhnjhn4lvzsnyk7l5ganbi6wzbm38jc1a7hhyh3k78b7c98"))))
|
---|
328 | (arguments
|
---|
329 | (substitute-keyword-arguments
|
---|
330 | (package-arguments emacs-next)
|
---|
331 | ((#:configure-flags flags ''())
|
---|
332 | `(list "--with-imagemagick"
|
---|
333 | "--disable-silent-rules"
|
---|
334 | "--with-x-toolkit=no"
|
---|
335 | "--enable-link-time-optimization"
|
---|
336 | "--with-json"
|
---|
337 | "--with-jpeg"
|
---|
338 | "--with-png"
|
---|
339 | "--with-rsvg"
|
---|
340 | "--without-xaw3d"
|
---|
341 | "--with-threads"
|
---|
342 | "--with-included-regex"
|
---|
343 | "--with-modules"
|
---|
344 | "--without-libotf"
|
---|
345 | "--without-libsystemd"
|
---|
346 | "--with-mailutils"
|
---|
347 | "--without-toolkit-scroll-bars"
|
---|
348 | "--without-selinux"
|
---|
349 | ;; "--without-harfbuzz"
|
---|
350 | ;; "--without-cairo"
|
---|
351 | ;; "--with-libxft"
|
---|
352 | ;; "--with-xdbe=no"
|
---|
353 | "CFLAGS=-O3 -g -fcommon -pipe"
|
---|
354 | ))))
|
---|
355 | (inputs
|
---|
356 | (modify-inputs (package-inputs emacs-next)
|
---|
357 | (prepend imagemagick libxaw)))
|
---|
358 | (properties '((tunable? . #true)))))
|
---|
359 |
|
---|
360 | (define-public emacs-with-native-compilation
|
---|
361 | (let ((libgccjit (libgccjit-for-gcc gcc-11)))
|
---|
362 | (package
|
---|
363 | (inherit emacs)
|
---|
364 | (name "emacs-with-native-compilation")
|
---|
365 | (version "28.1")
|
---|
366 | (source
|
---|
367 | (origin
|
---|
368 | (method url-fetch)
|
---|
369 | (uri (string-append "mirror://gnu/emacs/emacs-"
|
---|
370 | version ".tar.xz"))
|
---|
371 | (sha256
|
---|
372 | (base32
|
---|
373 | "1qbmmmhnjhn4lvzsnyk7l5ganbi6wzbm38jc1a7hhyh3k78b7c98"))))
|
---|
374 | (arguments
|
---|
375 | (substitute-keyword-arguments
|
---|
376 | (package-arguments emacs-28)
|
---|
377 | ((#:make-flags flags ''())
|
---|
378 | `(cons* "NATIVE_FULL_AOT=1" ,flags))
|
---|
379 | ((#:configure-flags flags ''())
|
---|
380 | `(cons* "--with-native-compilation"
|
---|
381 | "CFLAGS=-O3 -g -fcommon -fcommon -pipe"
|
---|
382 | ,flags))
|
---|
383 | ((#:phases phases ''())
|
---|
384 | `(modify-phases ,phases
|
---|
385 | ;; Required for configure to find libgccjit
|
---|
386 | (add-before 'configure 'set-library-path
|
---|
387 | (lambda* (#:key inputs #:allow-other-keys)
|
---|
388 | (let* ((libgccjit-version ,(package-version libgccjit))
|
---|
389 | (libgccjit-libdir
|
---|
390 | (string-append
|
---|
391 | (assoc-ref inputs "libgccjit") "/lib/gcc/"
|
---|
392 | %host-type "/" libgccjit-version "/")))
|
---|
393 | (setenv "LIBRARY_PATH"
|
---|
394 | (string-append libgccjit-libdir ":"
|
---|
395 | (getenv "LIBRARY_PATH"))))))
|
---|
396 | ;; Add runtime library paths for libgccjit.
|
---|
397 | (add-after 'unpack 'patch-driver-options
|
---|
398 | (lambda* (#:key inputs #:allow-other-keys)
|
---|
399 | (substitute* "lisp/emacs-lisp/comp.el"
|
---|
400 | (("\\(defcustom native-comp-driver-options nil")
|
---|
401 | (format
|
---|
402 | #f "(defcustom native-comp-driver-options '(~s ~s ~s ~s)"
|
---|
403 | (string-append
|
---|
404 | "-B" (assoc-ref inputs "binutils") "/bin/")
|
---|
405 | (string-append
|
---|
406 | "-B" (assoc-ref inputs "glibc") "/lib/")
|
---|
407 | (string-append
|
---|
408 | "-B" (assoc-ref inputs "libgccjit") "/lib/")
|
---|
409 | (string-append
|
---|
410 | "-B" (assoc-ref inputs "libgccjit") "/lib/gcc/"))))))))))
|
---|
411 | (inputs
|
---|
412 | (modify-inputs (package-inputs emacs-28)
|
---|
413 | (prepend libgccjit glibc bzip2)))
|
---|
414 | (propagated-inputs
|
---|
415 | (modify-inputs (package-inputs emacs-28)
|
---|
416 | (prepend)))
|
---|
417 | (properties '((tunable? . #true))))))
|
---|
418 |
|
---|
419 | (define-public wkmacs
|
---|
420 | (package
|
---|
421 | (inherit emacs)
|
---|
422 | (name "wkmacs")
|
---|
423 | (version "28.1")
|
---|
424 | (propagated-inputs
|
---|
425 | (list emacs-flycheck
|
---|
426 | emacs-pdf-tools
|
---|
427 | emacs-debbugs
|
---|
428 | emacs-vimrc-mode
|
---|
429 | emacs-docker-compose-mode
|
---|
430 | emacs-dockerfile-mode
|
---|
431 | emacs-docker
|
---|
432 | emacs-org-roam
|
---|
433 | emacs-web-mode
|
---|
434 | emacs-php-mode
|
---|
435 | emacs-robe
|
---|
436 | emacs-inf-ruby
|
---|
437 | emacs-sudo-edit
|
---|
438 | emacs-auto-complete
|
---|
439 | emacs-visual-fill-column
|
---|
440 | emacs-dumb-jump
|
---|
441 | emacs-goto-chg
|
---|
442 | emacs-gitpatch
|
---|
443 | emacs-magit
|
---|
444 | emacs-auctex
|
---|
445 | emacs-anaconda-mode
|
---|
446 | emacs-anzu
|
---|
447 | emacs-all-the-icons
|
---|
448 | emacs-telega
|
---|
449 | emacs-geiser
|
---|
450 | emacs-org-webring
|
---|
451 | emacs-all-the-icons-dired
|
---|
452 | emacs-avy
|
---|
453 | emacs-browse-kill-ring
|
---|
454 | emacs-haskell-mode
|
---|
455 | emacs-idris-mode
|
---|
456 | emacs-mwim
|
---|
457 | emacs-diminish
|
---|
458 | emacs-direnv
|
---|
459 | emacs-elpher
|
---|
460 | emacs-exec-path-from-shell
|
---|
461 | emacs-expand-region
|
---|
462 | emacs-geiser-guile
|
---|
463 | emacs-guix
|
---|
464 | emacs-org-ref
|
---|
465 | emacs-git-gutter
|
---|
466 | emacs-gnuplot
|
---|
467 | emacs-nix-mode
|
---|
468 | emacs-sml-mode
|
---|
469 | emacs-slime
|
---|
470 | emacs-simple-httpd
|
---|
471 | emacs-undo-tree
|
---|
472 | emacs-yasnippet
|
---|
473 | emacs-yasnippet-snippets
|
---|
474 | emacs-xref))
|
---|
475 | (properties '((tunable? . #true)))))
|
---|
476 |
|
---|
477 | (define-public emacs-pythonic
|
---|
478 | (package
|
---|
479 | (name "emacs-pythonic")
|
---|
480 | (version "0.2.0")
|
---|
481 | (source (origin
|
---|
482 | (method git-fetch)
|
---|
483 | (uri (git-reference
|
---|
484 | (url "https://github.com/pythonic-emacs/pythonic.git")
|
---|
485 | (commit (string-append "v" version))))
|
---|
486 | (file-name (git-file-name name version))
|
---|
487 | (sha256
|
---|
488 | (base32
|
---|
489 | "0hbvy8wdi5dgxn86j8z54y2fhcvm605xxm6xv054nl6fw2hh2h5h"))))
|
---|
490 | (build-system emacs-build-system)
|
---|
491 | (propagated-inputs
|
---|
492 | `(("s" ,emacs-s)
|
---|
493 | ("f" ,emacs-f)))
|
---|
494 | (home-page "https://github.com/pythonic-emacs/anaconda-mode")
|
---|
495 | (synopsis "Utility functions for writing pythonic emacs package.")
|
---|
496 | (description
|
---|
497 | "Utility functions for writing pythonic emacs package.")
|
---|
498 | (license license:gpl3+)))
|
---|
499 |
|
---|
500 | (define-public emacs-anaconda-mode
|
---|
501 | (package
|
---|
502 | (name "emacs-anaconda-mode")
|
---|
503 | (version "0.1.14")
|
---|
504 | (source (origin
|
---|
505 | (method git-fetch)
|
---|
506 | (uri (git-reference
|
---|
507 | (url "https://github.com/pythonic-emacs/anaconda-mode.git")
|
---|
508 | (commit (string-append "v" version))))
|
---|
509 | (file-name (git-file-name name version))
|
---|
510 | (sha256
|
---|
511 | (base32
|
---|
512 | "04f6kw4rd8k6waiyfbk7x8qdrqm411mdsdzjh2w9rvmv7y36ckh8"))))
|
---|
513 | (build-system emacs-build-system)
|
---|
514 | (propagated-inputs
|
---|
515 | `(("emacs-pythonic" ,emacs-pythonic)
|
---|
516 | ("dash" ,emacs-dash)
|
---|
517 | ("s" ,emacs-s)
|
---|
518 | ("f" ,emacs-f)))
|
---|
519 | (home-page "https://github.com/pythonic-emacs/anaconda-mode")
|
---|
520 | (synopsis "Code navigation, documentation lookup and completion for
|
---|
521 | Python.")
|
---|
522 | (description
|
---|
523 | "Code navigation, documentation lookup and completion for Python.")
|
---|
524 | (license license:gpl3)))
|
---|
525 |
|
---|
526 | (define-public emacs-kiwix
|
---|
527 | (package
|
---|
528 | (name "emacs-kiwix")
|
---|
529 | (version "1.0.3")
|
---|
530 | (source
|
---|
531 | (origin
|
---|
532 | (method url-fetch)
|
---|
533 | (uri (string-append
|
---|
534 | "https://elpa.gnu.org/packages/kiwix-"
|
---|
535 | version
|
---|
536 | ".tar"))
|
---|
537 | (sha256
|
---|
538 | (base32
|
---|
539 | "061b816xp8ykqd56z0nvc69aql9y4mba42p6x6vc0j6gr9n3c1j6"))))
|
---|
540 | (build-system emacs-build-system)
|
---|
541 | (propagated-inputs
|
---|
542 | `(("emacs-request" ,emacs-request)))
|
---|
543 | (home-page
|
---|
544 | "https://github.com/stardiviner/kiwix.el")
|
---|
545 | (synopsis
|
---|
546 | "Searching offline Wikipedia through Kiwix.")
|
---|
547 | (description
|
---|
548 | "Emacs client for a free offline web browser created by Emmanuel
|
---|
549 | Engelhart and Renaud Gaudin in 2007.")
|
---|
550 | (license license:gpl3+)))
|
---|
551 |
|
---|
552 | (define-public emacs-realgud-xdebug
|
---|
553 | (package
|
---|
554 | (name "emacs-realgud-xdebug")
|
---|
555 | (version "0.1.0")
|
---|
556 | (source
|
---|
557 | (origin
|
---|
558 | (uri (git-reference
|
---|
559 | (url "https://github.com/realgud/realgud-xdebug")
|
---|
560 | (commit version)))
|
---|
561 | (method git-fetch)
|
---|
562 | (sha256
|
---|
563 | (base32 "0iyxm4yfjwpc322md8iz38xs1y6whqjgsbbs7vdjw1k5029q8nc0"))
|
---|
564 | (file-name (git-file-name name version))))
|
---|
565 | (build-system emacs-build-system)
|
---|
566 | (inputs
|
---|
567 | (list emacs-realgud))
|
---|
568 | (home-page "https://github.com/realgud/realgud-xdebug/")
|
---|
569 | (synopsis
|
---|
570 | "Modular front-end for interacting with external debuggers")
|
---|
571 | (description
|
---|
572 | "RealGUD is a modular, extensible GNU Emacs front-end for interacting
|
---|
573 | with external debuggers. It integrates various debuggers such as gdb, pdb,
|
---|
574 | ipdb, jdb, lldb, bashdb, zshdb, etc. and allows visually steping through code in the
|
---|
575 | sources. Unlike GUD, it also supports running multiple debug sessions in
|
---|
576 | parallel.")
|
---|
577 | (license license:gpl3+)))
|
---|
578 |
|
---|
579 | (define-public emacs-xcscope
|
---|
580 | (package
|
---|
581 | (name "emacs-xcscope")
|
---|
582 | (version "1.5")
|
---|
583 | (source (origin
|
---|
584 | (method git-fetch)
|
---|
585 | (uri (git-reference
|
---|
586 | (url "https://github.com/dkogan/xcscope.el")
|
---|
587 | (commit (string-append "v" version))))
|
---|
588 | (file-name (git-file-name name version))
|
---|
589 | (sha256
|
---|
590 | (base32
|
---|
591 | "0w2bxrnidladpzrd82z3w3gvjhajs71k5vjk2y03r09i9fwn2ykc"))))
|
---|
592 | (build-system emacs-build-system)
|
---|
593 | (home-page "https://github.com/realgud/realgud-xdebug/")
|
---|
594 | (synopsis
|
---|
595 | "emacs auto-complete & company-mode for php ")
|
---|
596 | (description
|
---|
597 | "The PHP code completion and the jump to definition/declaration/inclusion-file provided by phpctags")
|
---|
598 | (license license:gpl3+)))
|
---|
599 |
|
---|
600 | (define-public emacs-ac-php
|
---|
601 | (package
|
---|
602 | (name "emacs-ac-php")
|
---|
603 | (version "2.4.2")
|
---|
604 | (source (origin
|
---|
605 | (method git-fetch)
|
---|
606 | (uri (git-reference
|
---|
607 | (url "https://github.com/xcwen/ac-php")
|
---|
608 | (commit version)))
|
---|
609 | (file-name (git-file-name name version))
|
---|
610 | (sha256
|
---|
611 | (base32
|
---|
612 | "08vfdp7q6x5fk2nn5dl884cyysxrl2gw8f16g7wqvf7v24jmx71d"))))
|
---|
613 | (build-system emacs-build-system)
|
---|
614 | (native-inputs
|
---|
615 | (list emacs-company emacs-helm))
|
---|
616 | (propagated-inputs
|
---|
617 | (list emacs-php-mode php emacs-s
|
---|
618 | emacs-f emacs-popup emacs-dash
|
---|
619 | emacs-xcscope cscope emacs-auto-complete
|
---|
620 | emacs-yasnippet))
|
---|
621 | (home-page "https://github.com/xcwen/ac-php")
|
---|
622 | (synopsis
|
---|
623 | "emacs auto-complete & company-mode for php ")
|
---|
624 | (description
|
---|
625 | "The PHP code completion and the jump to definition/declaration/inclusion-file provided by phpctags")
|
---|
626 | (license license:gpl3+)))
|
---|
627 |
|
---|
628 | (define-public emacs-php-quickhelp
|
---|
629 | (package
|
---|
630 | (name "emacs-php-quickhelp")
|
---|
631 | (version "0.5.5")
|
---|
632 | (source (origin
|
---|
633 | (method git-fetch)
|
---|
634 | (uri (git-reference
|
---|
635 | (url "https://github.com/vpxyz/php-quickhelp")
|
---|
636 | (commit (string-append "v" version))))
|
---|
637 | (file-name (git-file-name name version))
|
---|
638 | (sha256
|
---|
639 | (base32
|
---|
640 | "1d9rg699wl67qkb93r4qnjn0ng4xn9c2g6kc98zaiy2v0v2wcv8g"))))
|
---|
641 | (build-system emacs-build-system)
|
---|
642 | (propagated-inputs
|
---|
643 | (list jq))
|
---|
644 | (home-page "https://github.com/vpxyz/php-quickhelp")
|
---|
645 | (synopsis
|
---|
646 | "A php quickhelp and eldoc backed for emacs ")
|
---|
647 | (description
|
---|
648 | "Provide quick help (and a eldoc beckend) for company-php and company-phpactor. It require jq to extract a short help from php manual.")
|
---|
649 | (license license:gpl3+)))
|
---|
650 |
|
---|
651 | (define-public emacs-mastodon-updated
|
---|
652 | (package
|
---|
653 | (inherit emacs-mastodon)
|
---|
654 | (name "emacs-mastodon")
|
---|
655 | (version "1.0.0")
|
---|
656 | (source (origin
|
---|
657 | (method git-fetch)
|
---|
658 | (uri (git-reference
|
---|
659 | (url "https://codeberg.org/martianh/mastodon.el")
|
---|
660 | (commit version)))
|
---|
661 | (file-name (git-file-name name version))
|
---|
662 | (sha256
|
---|
663 | (base32
|
---|
664 | "13swcbvwhjl8ksrgzvmfafkgd3iz8znk49bs1n48w3g9qvh097w7"))))
|
---|
665 | (propagated-inputs
|
---|
666 | (list emacs-request))
|
---|
667 | (build-system emacs-build-system)))
|
---|