summaryrefslogtreecommitdiff
Commit message (Expand)AuthorAgeFilesLines
* Update version to 0.4v0.4Alex Kost2018-05-192-3/+5
* Update NEWSAlex Kost2018-05-191-0/+78
* elisp/guile: Fix finding the current definition•••Reported by Pierre Neidhardt: <https://github.com/alezost/guix.el/issues/24>. Well, it was not really the issue but it is better to define the definition from its start position, anyway. * elisp/guix-guile.el (guix-guile-current-definition): Define the current definition properly when the point is in the beginning of it. Alex Kost2018-05-191-1/+9
* Add 'guix-default-services' command•••* scheme/emacs-guix/utils.scm (read-eval): New procedure. * scheme/emacs-guix/services.scm (register/return-services): New procedure. (find-services): Add 'from-expression' search type. * elisp/guix-ui-service.el (guix-service-message): Add a message for it. (guix-default-services-variables): New variable. (guix-default-services): New command. * elisp/guix-help.el (guix-help-specifications): Add it. * doc/emacs-guix.texi (Services): Document it. Alex Kost2018-05-185-8/+71
* Display info about shepherd services in "Service Info"•••Inspired by <http://git.savannah.gnu.org/cgit/guix.git/commit/?id=6ac8b7359a1ac80e558f41dd37004ffa727dd3c6>. * scheme/emacs-guix/services.scm (%shepherd-service-param-alist): New variable. (shepherd-services, shepherd-service->sexp, shepherd-services->sexp): New procedures. (service-by-id-or-name): Add 'shepherd' parameter. * elisp/guix-ui-service.el (guix-shepherd-service): New 'info' interface. (guix-shepherd-service-info-delimiter): New variable. (guix-service-insert-shepherd-services): New procedure. (guix-service-info-format): Use it to display 'shepherd' parameter. Alex Kost2018-05-182-4/+65
* elisp: Inherit description faces from 'font-lock-doc-face'•••* elisp/guix-ui-package.el (guix-package-info-description): Inherit from 'font-lock-doc-face'. * elisp/guix-ui-service.el (guix-service-info-description): Likewise. Alex Kost2018-05-172-2/+2
* elisp/ui-service: Add more messages•••This is a followup for commits 08a10d6d9bcfdc97908bd2a85faa54bc4cdc664f and ff982b85647a8f715810b214d82eb1945329ce99. * elisp/guix-ui-service.el (guix-service-message): Add messages for 'regexp' and 'location' search types. Alex Kost2018-05-171-1/+13
* elisp: Add "Services" button to Service Info•••* elisp/guix-location.el (guix-location-file): New function. * elisp/guix-ui-package.el (guix-package-info-insert-location): Use it. * elisp/guix-ui-service.el (guix-service-info-insert-location): New procedure. (guix-service-info-format): Use it. Alex Kost2018-05-163-2/+20
* README: Update for the recent changes in commands•••* README (About): Mention interface for services and service locations. (Usage): Rearrange, rename, remove and add some commands. Alex Kost2018-05-151-19/+25
* elisp/help: Rearrange commands•••* elisp/guix-help.el (guix-help-insert-specification): Accept 'nil' to insert a new line. (guix-help-specifications): Combine commands for packages and their locations into one group, as well as profiles and their generations; move commands for services and their locations upper (before licenses). Alex Kost2018-05-151-22/+20
* Add 'guix-services-by-regexp' command•••* scheme/emacs-guix/services.scm (services-by-regexp) (service-param): New procedures. (find-services): Add 'regexp' search type. * elisp/guix-ui-service.el (guix-service-search-params) (guix-service-search-history): New variables. (guix-services-by-regexp): New command. * elisp/guix-help.el (guix-help-specifications): Add it. * doc/emacs-guix.texi (Services): Document it. Alex Kost2018-05-154-1/+53
* Add 'guix-find-service-definition' command•••* scheme/emacs-guix/services.scm (service-by-id-or-name) (service-location-string): New procedures. * scheme/emacs-guix.scm: Autoload 'service-location-string'. * elisp/guix-service.el (guix-service-location): New function. (guix-find-service-definition): New command. * elisp/guix-help.el (guix-help-specifications): Add it. * doc/emacs-guix.texi (Services): Document it. Alex Kost2018-05-155-0/+44
* Add 'guix-find-service-location-file' command•••* elisp/guix-service.el: New file. * elisp/local.mk (EL_FILES): Add it. * elisp/guix-help.el (guix-help-specifications): Add 'guix-find-service-location-file' command. * doc/emacs-guix.texi (Services): Document it. Alex Kost2018-05-144-0/+50
* Add 'guix-service-locations' command•••* elisp/guix-ui-service-location.el: New file. * elisp/local.mk (EL_FILES): Add it. * elisp/guix-help.el (guix-help-specifications): Add 'guix-service-locations' command. * doc/emacs-guix.texi (Services): Document it. Alex Kost2018-05-144-1/+120
* Add 'guix-find-license-location-file' command•••* elisp/guix-license.el (guix-find-license-location-file): New command. (guix-find-license-definition): Use it. * elisp/guix-help.el (guix-help-specifications): Add it. * doc/emacs-guix.texi (Package Licenses): Document it. Alex Kost2018-05-143-2/+15
* Add 'guix-services-by-location' command•••* scheme/emacs-guix/services.scm (find-services): Add 'location' search type. (%service-location-param-alist): New variable. (services-by-location-file, service-location-files) (service-location-sexps): New procedures. * scheme/emacs-guix.scm: Autoload them. * elisp/guix-read.el (guix-service-location-files) (guix-read-service-location-file): New functions. * elisp/guix-ui-service.el (guix-services-by-location): New command. * elisp/guix-help.el (guix-help-specifications): Add it. * doc/emacs-guix.texi (Services): Document it. Alex Kost2018-05-146-4/+76
* Rename 'location' to 'location-file' where needed•••This is a followup to commit d3881fec140de868265a28376311c9750efdd351. There is a distinction between these terms as 'location-file' is just a file, and 'location' is a file plus a position in that file. So (ideally) there should be the same distinction in the command names, however most commands already have long names, and using 'guix-packages-by-location-file' instead of 'guix-packages-by-location' will probably add nothing to the meaning of this command and 5 characters to its name. So this command is left unchanged, but such commands as 'guix-find-package-location' and 'guix-find-package-definition' may bring confusion. Hopefully, using 'guix-find-package-location-file' name will make it more clear. * elisp/guix-read.el (guix-read-package-location): Rename to... (guix-read-package-location-file): ... this. * elisp/guix-package.el (guix-find-package-location): Rename to... (guix-find-package-location-file): ... this. * elisp/guix-help.el (guix-help-specifications): Adjust accordingly. * elisp/guix-ui-package.el (guix-packages-by-location): Likewise. * doc/emacs-guix.texi (Package Locations): Likewise. Alex Kost2018-05-145-17/+15
* Rename 'location' to 'package-location'•••As that is what it really means: 'service-location' code is coming, so this rename is needed. Finishing the work continued at commit d3881fec140de868265a28376311c9750efdd351. * doc/emacs-guix.texi (Package Locations): Move from the top level to "Package Management" section. * elisp/guix-ui-location.el: Rename file to... * elisp/guix-ui-package-location.el: ... this. Rename 'guix-location' to 'guix-package-location' everywhere. * elisp/guix-help.el (guix-help-specifications): Adjust accordingly. * elisp/guix-read.el (guix-location-files): Rename to 'guix-package-location-files'. * elisp/local.mk (EL_FILES): Likewise. * scheme/emacs-guix/locations.scm: Remove file. Move its contents to... * scheme/emacs-guix/packages.scm: ... here. * scheme/emacs-guix.scm: Adjust accordingly. * scheme/Makefile.am (MODULES): Remove "locations.scm". Alex Kost2018-05-149-185/+154
* THANKS: Add Oleg and PierreAlex Kost2018-05-141-0/+2
* elisp/profiles: Handle the case when current profile has "~" in it•••Reported by George Clemmer. * elisp/guix-profiles.el (guix-current-profile?): Wrap 'current-profile' into 'guix-profile' to make sure "~" is expanded, otherwise "M-x guix-profiles" won't show this profile as current. Alex Kost2018-05-141-2/+2
* elisp/devel: Bind 'guix-devel-code-block-edit' to "C-c . '"•••As it conflicts with the default org key binding. Reported by Oleg Pykhalov: <https://github.com/alezost/guix.el/issues/22>. * elisp/guix-devel.el: Bind 'guix-devel-code-block-edit' to "C-c . '" instead of "C-c '". * doc/emacs-guix.texi: Adjust accordingly. Alex Kost2018-05-112-4/+3
* elisp: Move "package locations" code to "guix-package.el"•••Continuing the work started at commit 467525b7d72c5bed21d0a44940f1cd3a8fbb8a47. * elisp/guix-location.el (guix-find-location): Do not make it interactive. (guix-package-location, guix-find-package-definition, guix-edit): Move to... * elisp/guix-package.el: ... here. (guix-find-package-location): New command (instead of 'guix-find-location'). * doc/emacs-guix.texi (Package Locations): Adjust accordingly. * elisp/guix-help.el (guix-help-specifications): Likewise. * elisp/guix-command.el: Fix file name of the declared function. Alex Kost2018-05-115-42/+50
* elisp: Make 'guix-edit' an alias to 'guix-find-package-definition'•••* elisp/guix-location.el (guix-edit): Rename to... (guix-find-package-definition): ... this to make it analogous to 'guix-find-license-definition'. Make 'guix-edit' an alias to it. * elisp/guix-help.el (guix-help-specifications): Use 'guix-find-package-definition' instead of 'guix-edit'. * elisp/guix-command.el: Likewise. * elisp/guix-ui-package.el: Likewise. * elisp/guix-repl.el (guix-directory): Likewise. Alex Kost2018-05-116-11/+18
* elisp: Switch defun and defalias for package lint commands•••This should have been done in commit d33b9b3fe97d2a0d7afd4a5d84c4c06f13e54928. * elisp/guix-package.el (guix-package-lint): Make it 'defun'. (guix-lint): Make it 'defalias'. Alex Kost2018-05-111-3/+3
* doc: Move 'guix-number-of-packages' to another node•••* doc/emacs-guix.texi (Package Commands): Move documentation of 'guix-number-of-packages' to... (More Package Commands): ... here. Alex Kost2018-05-111-8/+8
* elisp: Add 'info' interface for services•••* elisp/guix-ui-service.el (guix-service-info): New interface. (guix-service-name): New button type. (guix-service-info-get-entries, guix-service-list-describe): New procedures. (guix-service-info-required-params): New variable. (guix-service-info-heading, guix-service-info-description) (guix-service-info-extension): New faces. Alex Kost2018-05-101-1/+60
* Add 'guix-services-by-name' command•••* scheme/emacs-guix/utils.scm (string->symbol*): New procedure. * scheme/emacs-guix/services.scm (service-names, service-names*) (services-by-name): New procedures. (find-services): Add 'name' search type. * scheme/emacs-guix.scm: Autoload 'service-names*'. * elisp/guix-read.el (guix-service-names, guix-read-service-name): New procedures. * elisp/guix-ui-service.el (guix-services-by-name): New command. (guix-service-message): Add message for 'name' search type. * elisp/guix-help.el (guix-help-specifications): Add it. * doc/emacs-guix.texi (Services): Document it. Alex Kost2018-05-107-7/+74
* scheme/packages: Remove unused bit of code•••* scheme/emacs-guix/packages.scm (packages-by-name+version): Remove unneeded local variable. Alex Kost2018-05-101-5/+3
* scheme/packages: Split 'package-names' into 2 procedures•••Distinguish procedures returning a value ('package-names') and transferring this value to emacs side ('package-names*'). * scheme/emacs-guix/packages.scm (package-names*): New procedure. * scheme/emacs-guix.scm: Autoload it instead of 'package-names'. * elisp/guix-read.el (guix-package-names): Use it. Alex Kost2018-05-103-6/+10
* Add 'guix-all-services' command•••* scheme/emacs-guix/services.scm: Register all service types in the hash table for 'service-by-id' and 'register-service' procedures. (find-services): Add 'all' search type. * elisp/guix-ui-service.el (guix-service): New command. (guix-service-message): Add message for 'all' search type. * elisp/guix-help.el (guix-help-specifications): Add it. * doc/emacs-guix.texi (Services): Document it. Alex Kost2018-05-104-10/+34
* Add new parameters for service interface and document it•••* scheme/emacs-guix/services.scm (%service-param-alist): Rename 'type-name' to 'name'. Add 'description', 'location' and 'extensions'. (service-type-name*, service-type*, texi-field->string): New procedures. (services-from-system-config-file): Use 'to-emacs-side'. * elisp/guix-ui-service.el (guix-service-list-hint): New procedure. (guix-service-list-edit): New command. (guix-service-list-format): Add new parameters. * elisp/guix-help.el (guix-help-specifications): Display 'info' button for 'guix-services-from-system-config-file'. * doc/emacs-guix.texi (Services): New node. Document 'guix-services-from-system-config-file' as it worth it now. Alex Kost2018-05-104-15/+81
* elisp: Generalize locations for both packages and services•••Remove package-specific bits from the "locations" code to make it usable by services as well. * elisp/guix-location.el (guix-location): New face, new button type. (guix-location-list-specification): New function. * elisp/guix-ui-location.el (guix-location-list-format): Use it. (guix-location-list-file-name-specification): Remove function. * elisp/guix-ui-package.el (guix-package-info-location): Remove face. (guix-package-location): Remove button type. (guix-package-info-insert-location): Use 'guix-location' instead. Alex Kost2018-05-103-28/+28
* Handle hidden packages•••* scheme/emacs-guix/packages.scm (%package-param-alist): Add 'hidden' parameter. (matching-packages): Add 'select?' key argument. (dependent-packages): Use it. (hidden-packages): New procedure. (%patterns-makers): Add 'hidden' search type. * elisp/guix-ui-package.el (guix-hidden-packages): New procedure. (guix-package-info-hidden, guix-package-list-hidden): New faces. (guix-package-info-insert-hidden-text): New procedure. (guix-package-info-insert-additional-text) (guix-package-list-get-entries): Adjust accordingly. Alex Kost2018-05-042-39/+89
* Remove "-available" part from all/newest package commands•••This "-available" part seemed redundant to me since the very beginning. Commit 71301c7b71d4c74dc06eef137d7f02b6e0393f4e was a poor attempt to do something about it. Now I decided to get rid of it completely. * scheme/emacs-guix/packages.scm (all-available-packages): Rename to... (all-packages): ... this. (newest-available-packages): Rename to... (newest-packages): ... this. (%patterns-makers): Rename 'all-available'/'newest-available' search types to 'all'/'newest' accordingly. * elisp/guix-ui-package.el (guix-all-available-packages) (guix-newest-available-packages): Make obsolete. * elisp/guix-help.el (guix-help-specifications): Adjust accordingly. * elisp/guix-ui-messages.el (guix-messages): Likewise. * elisp/guix-ui.el (guix-ui-get-entries): Adjust the docstring. * doc/emacs-guix.texi (Package Commands): Document 'guix-all-packages' and 'guix-newest-packages' commands. Alex Kost2018-05-046-34/+34
* Add 'guix-dependent-packages' command•••* scheme/emacs-guix/packages.scm (objects->packages) (dependent-packages): New procedures. (%patterns-makers): Add the new 'dependent' search type. * elisp/guix-ui-messages.el (guix-messages): Add messages for 'dependent' search type. * elisp/guix-ui-package.el (guix-dependent-packages): New command. * elisp/guix-help.el (guix-help-specifications): Add it. * doc/emacs-guix.texi (Package Commands): Document it. Alex Kost2018-05-036-3/+71
* elisp: Add guix-env-var-mode•••* elisp/guix-auto-mode.el: Add 'guix-env-var-mode' to 'auto-mode-alist'. * elisp/guix-env-var.el: New file. * elisp/local.mk (EL_FILES): Add it. * doc/emacs-guix.texi (Prettify Variables): Document the new features. Oleg Pykhalov2018-04-284-0/+147
* elisp/help: Highlight "M-x" in the header line•••* elisp/guix-help.el (guix-help-insert-content): Propertize the header line with 'guix-help-key' face to make it look fancier. Alex Kost2018-04-281-1/+3
* doc: Warn about mixing Guix and MELPA installations•••Suggested by Pierre Neidhardt: <https://github.com/alezost/guix.el/issues/21#issuecomment-383820308>. * README: Mention potential problems with .scm and .go files. * doc/emacs-guix.texi (Installation): Likewise. Alex Kost2018-04-252-2/+8
* elisp: Add aliases for commands to display all and newest packages•••* elisp/guix-ui-package.el (guix-all-packages): New alias for 'guix-all-available-packages'. (guix-newest-packages): New alias for 'guix-newest-available-packages'. Alex Kost2018-04-191-0/+6
* elisp/command: Disambiguate "gc" options•••* elisp/guix-command.el (guix-command-improve-gc-argument): Use "e" for "--derivers" ("d" is already used by "--delete" and "D" by "--list-dead"). Alex Kost2018-04-191-0/+1
* elisp: Add 'guix-number-of-packages' command•••* scheme/emacs-guix/packages.scm (number-of-packages): New function. * scheme/emacs-guix.scm (emacs-guix): Autoload it. * elisp/guix-ui-package.el (guix-number-of-packages): New command. * elisp/guix-help.el (guix-help-specifications): Add it. * doc/emacs-guix.texi (Package Commands): Document it. Alex Kost2018-04-155-0/+25
* Bypass Geiser on big lists to improve performance•••Geiser (or some underlying Emacs code) is slow when big chunks of data are passed through it (are returned from "the Guile side"). In particular, this makes "M-x guix-all-available-packages" *very* slow (it may even fail!). The workaround for this slowness in this commit is: "the Guile side" writes the output (list of packages, etc.) to a temporary file, then "the Emacs side" reads this data from it. It is much faster for big lists than using Geiser directly, which means "M-x guix-all-available-packages" is usable again, woohoo! * elisp/guix-repl.el (guix-repl-max-returned-list-size): New variable. (guix-repl-configure-guile-side): New procedure. (guix-repl-after-start-hook): Use it. (guix-eval-read): Adjust to read Guile output from file. * scheme/emacs-guix/emacs.scm: New file. (%max-returned-list-size, %temporary-directory): New variables. (to-emacs-side): New procedure. * scheme/emacs-guix.scm (emacs-guix): Autoload them. * scheme/emacs-guix/licenses.scm (license-sexps): Use 'to-emacs-side'. * scheme/emacs-guix/locations.scm (package-location-sexps): Likewise. * scheme/emacs-guix/packages.scm (package/output-sexps) (package-names): Likewise. * scheme/emacs-guix/generations.scm (generation-sexps): Likewise. * scheme/emacs-guix/system-generations.scm (system-generation-sexps): Likewise. * scheme/Makefile.am (MODULES): Add "emacs.scm". Alex Kost2018-04-149-16/+118
* elisp: Refactor "scheme -> elisp" code•••* elisp/guix-utils.el (guix-replace-match): New procedure. * elisp/guix-guile.el (guix-guile-read, guix-guile-read-from-file) (guix-guile-read-from-string): New procedures. * elisp/guix-geiser.el (guix-geiser-eval-read): Use 'guix-guile-read-from-string'. Alex Kost2018-04-133-20/+40
* README: Mention Evil Collection•••Evil key bindings for Emacs-Guix were added by Pierre Neidhardt: <https://github.com/alezost/guix.el/issues/17>. Alex Kost2018-04-081-0/+3
* elisp: Add 'guix-report-bug' command•••Suggested by Pierre Neidhardt: <https://github.com/alezost/guix.el/issues/18>. * elisp/guix-misc.el (guix-bug-address): New variable. (guix-report-bug): New command. * elisp/guix-help.el (guix-help-specifications): Add it. * doc/emacs-guix.texi (Miscellaneous Commands): Document it. Alex Kost2018-04-083-2/+21
* elisp: Add 'guix-package-names-use-duplicates' variable•••* scheme/emacs-guix/packages.scm (package-names): Do not use 'delete-duplicates'. Make it configurable instead. * elisp/guix-read.el (guix-package-names-use-duplicates): New variable (guix-package-names): Use it. Alex Kost2018-04-082-6/+36
* build: Add --with-editindirect-lispdir configure option•••* configure.ac: Add '--with-editindirect-lispdir'. (EDITINDIRECT_DIR): New conditional. * elisp/local.mk (AM_ELCFLAGS): Add edit-indirect directory if it was specified. Alex Kost2018-03-312-2/+15
* elisp/devel: Move 'guix-devel-ffap-patch' to the end of the file•••* elisp/guix-devel.el (guix-devel-ffap-patch-directories) (guix-devel-ffap-patch): Move after 'guix-devel-mode' to avoid compilation warning. Alex Kost2018-03-291-17/+17
* elisp/devel: Add 'guix-devel-ffap-patch'•••* elisp/guix-devel.el (guix-devel-ffap-patch-directories): New variable. (guix-devel-ffap-patch): New procedure. * doc/emacs-guix.texi (Development): Document how 'ffap' can be configured for guix patch files. Oleg Pykhalov2018-03-292-0/+25
* elisp/devel: Add 'guix-devel-code-block-edit'•••Co-authored-by: Alex Kost <alezost@gmail.com> * elisp/guix-devel.el: (guix-devel-code-block-regexp): New variable. (guix-devel-code-block-position): New procedure. (guix-devel-code-block-edit): New command. (guix-devel-mode-map): Add it. * doc/emacs-guix.texi (Development): Document it. (Requirements): Mention 'edit-indirect'. * elisp/guix.el: Add 'edit-indirect' to "Package-Requires" header. Oleg Pykhalov2018-03-243-4/+52