source: dotfiles/guix/.guix-packages/emacs.scm@ c53d99e

Last change on this file since c53d99e was c53d99e, checked in by Mikhail Kirillov <w96k@…>, on Jul 3, 2022 at 8:18:15 PM

Update dotfiles

  • Property mode set to 100644
File size: 24.8 KB
Line 
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
260based on an Emacs Lisp interpreter with extensions for text editing. Emacs
261has been extended in essentially all areas of computing, giving rise to a
262vast array of packages supporting, e.g., email, IRC and XMPP messaging,
263spreadsheets, remote server editing, and much more. Emacs includes extensive
264documentation on all aspects of the system, from basic editing to writing
265large Lisp programs. It has full Unicode support for nearly all human
266languages.")
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
521Python.")
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
549Engelhart 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
573with external debuggers. It integrates various debuggers such as gdb, pdb,
574ipdb, jdb, lldb, bashdb, zshdb, etc. and allows visually steping through code in the
575sources. Unlike GUD, it also supports running multiple debug sessions in
576parallel.")
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)))
Note: See TracBrowser for help on using the repository browser.