On this page:
parameter/  emacs-package-archives
get-emacs-package-archives
refresh-emacs-package-archives
9.2

4 Enigma API: Emacs Package Archives🔗

 (require enigma/emacs/package/archives)
  package: enigma-app

parameter

(parameter/emacs-package-archives)

  (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.

Get the Emacs package archives as a list of (cons name url) pairs.

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)