]> git.donarmstrong.com Git - lilypond.git/blobdiff - guile18/lang/elisp/internals/set.scm
Import guile-1.8 as multiple upstream tarball component
[lilypond.git] / guile18 / lang / elisp / internals / set.scm
diff --git a/guile18/lang/elisp/internals/set.scm b/guile18/lang/elisp/internals/set.scm
new file mode 100644 (file)
index 0000000..5e5b004
--- /dev/null
@@ -0,0 +1,20 @@
+(define-module (lang elisp internals set)
+  #:use-module (lang elisp internals evaluation)
+  #:use-module (lang elisp internals signal)
+  #:export (set value))
+
+;; Set SYM's variable value to VAL, and return VAL.
+(define (set sym val)
+  (if (module-defined? the-elisp-module sym)
+      (module-set! the-elisp-module sym val)
+      (module-define! the-elisp-module sym val))
+  val)
+
+;; Return SYM's variable value.  If it has none, signal an error if
+;; MUST-EXIST is true, just return #nil otherwise.
+(define (value sym must-exist)
+  (if (module-defined? the-elisp-module sym)
+      (module-ref the-elisp-module sym)
+      (if must-exist
+         (error "Symbol's value as variable is void:" sym)
+         %nil)))