9.2
4 Enigma API: Emacs Package Archives
| (require enigma/emacs/package/archives) | |
| package: enigma-app | |
parameter
→ (or/c #false (listof string?)) (parameter/emacs-package-archives archive-list) → void? archive-list : (or/c #false (listof string?))
A parameter that holds the list of Emacs package archive URLs.
When set to #false, the default archives list is used.
procedure
Uses the value of parameter/emacs-package-archives if set, otherwise uses the default archives.
procedure
(refresh-emacs-package-archives extra-emacs-flags)
→ exact-integer? extra-emacs-flags : (listof string?)
Refresh the Emacs package archives by running Emacs in batch mode.
Pass extra-emacs-flags as extra flags.
Returns an exit code, 0 on success.
The source code of this module:
#lang racket/base (require racket/contract/base) (require racket/match) (require threading) (require "../path/load-path.rkt") (require "../system/run-emacs.rkt") (provide (contract-out [parameter/emacs-package-archives (parameter/c (or/c #false (listof string?)))] [get-emacs-package-archives (-> list?)] [refresh-emacs-package-archives (-> (listof string?) exact-integer?)])) (define parameter/emacs-package-archives (make-parameter #false)) (define default-emacs-package-archives-list '("https://tromey.com/elpa/" "https://elpa.gnu.org/packages/" "https://melpa.org/packages/")) (define make-archive-name (lambda~> (regexp-replace #rx"^http(s)://" _ "") (regexp-replace #rx"/.*$" _ "") (regexp-replace* #rx"\\." _ "-"))) (define (make-emacs-package-archives archives-list) (for/list ([archive-url archives-list]) (define archive-name (make-archive-name archive-url)) (cons archive-name archive-url))) (define (get-emacs-package-archives) (match (parameter/emacs-package-archives) [#false (make-emacs-package-archives default-emacs-package-archives-list)] [emacs-package-archives (make-emacs-package-archives emacs-package-archives)])) (define (refresh-emacs-package-archives-expr) `(progn (require 'package) (setq package-archives (quote ,(get-emacs-package-archives))) (message " Package user dir: %s" package-user-dir) (message " Initializing package database...") (package-initialize) (message " Refreshing package archives...") (package-refresh-contents))) (define (refresh-emacs-package-archives extra-emacs-flags) (define cmdline-args (append (make-emacs-cmdline-args '() extra-emacs-flags) `("-batch" "--eval" ,(format "~s" (refresh-emacs-package-archives-expr))))) (eprintf " Refreshing Emacs packages\n") (define exit-code (run-emacs cmdline-args)) (when (= 0 exit-code) (eprintf " Refresh of Emacs packages succeeded\n")) exit-code)