summaryrefslogtreecommitdiff
path: root/elisp
diff options
context:
space:
mode:
Diffstat (limited to 'elisp')
-rw-r--r--elisp/geiser-custom.el26
-rw-r--r--elisp/geiser.el2
2 files changed, 19 insertions, 9 deletions
diff --git a/elisp/geiser-custom.el b/elisp/geiser-custom.el
index 4b42d91..f9b05a7 100644
--- a/elisp/geiser-custom.el
+++ b/elisp/geiser-custom.el
@@ -1,6 +1,6 @@
;;; geiser-custom.el -- customization utilities -*- lexical-binding: t; -*-
-;; Copyright (C) 2009, 2010, 2012 Jose Antonio Ortega Ruiz
+;; Copyright (C) 2009, 2010, 2012, 2024 Jose Antonio Ortega Ruiz
;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the Modified BSD License. You should
@@ -31,6 +31,10 @@
:group 'faces)
(defmacro geiser-custom--defface (face def group doc)
+ "Utility macro to define geiser.
+This is a very simple macro ensuring all geiser faces follow a common
+naming pattern and are added to a common group besides the one provided
+in the macro arguments."
(declare (doc-string 4) (indent 1))
(let ((face (intern (format "geiser-font-lock-%s" face))))
`(defface ,face (face-default-spec ,def)
@@ -43,18 +47,24 @@
(defvar geiser-custom--memoized-vars nil)
(defun geiser-custom--memoize (name)
- ;; FIXME: Why not build this list with mapatoms, filtering on a "\\`'geiser-"
+ ;; Why not build this list with mapatoms, filtering on a "\\`'geiser-"
;; prefix and checking that it's a `defcustom', so we don't need
- ;; `geiser-custom--defcustom'?
+ ;; `geiser-custom--defcustom'? Because implementation-specific modules using
+ ;; geiser may use similarly named custom variables that are, for some reason
+ ;; or another, not meant to partake in the geiser-reload mechanism, and we
+ ;; don't know their names.
(add-to-list 'geiser-custom--memoized-vars name))
(defmacro geiser-custom--defcustom (name &rest body)
"Like `defcustom' but also put NAME on an internal list.
-That list is used by `geiser-reload' to preserve the values
-of the listed variables. It is not used for anything else."
- ;; FIXME Remembering the value like this is not actually
- ;; necessary. Evaluating `defcustom' always preserves the
- ;; existing value, if any.
+That list is used by `geiser-reload' to preserve the values of the
+listed variables. It is not used for anything else.
+
+Note that, even though defcustom preserves the existing value of a
+variable if it's already defined, geiser-reload unloads all geiser
+features and therefore undefines all defined variables: we keep this
+list of values around to be able to restore them after loading
+a (presumably) new version of geiser after that unloading."
(declare (doc-string 3) (debug (name body)) (indent 2))
`(progn
(geiser-custom--memoize ',name)
diff --git a/elisp/geiser.el b/elisp/geiser.el
index 8f85662..b89148a 100644
--- a/elisp/geiser.el
+++ b/elisp/geiser.el
@@ -13,7 +13,7 @@
;; Homepage: https://gitlab.com/emacs-geiser/
;; Package-Requires: ((emacs "27.1") (project "0.8.1"))
;; SPDX-License-Identifier: BSD-3-Clause
-;; Version: 0.30
+;; Version: 0.31
;;; Commentary: