chiark / gitweb /
mdw.conf: Central configuration file for common differences.
[profile] / dot-emacs.el
index 4f55e91714ee3499f711b88ba3b5a6892dbbf244..0ff6020570e308bac3b031b013d8a9369c36dce6 100644 (file)
@@ -36,6 +36,27 @@ (defmacro trap (&rest forms)
        ,(if (cdr forms) (cons 'progn forms) (car forms))
      (error (message "Error (trapped): %s" (error-message-string err)))))
 
+;; --- Configuration reading ---
+
+(defvar mdw-config nil)
+(defun mdw-config (sym)
+  "Read the configuration variable named SYM."
+  (unless mdw-config
+    (setq mdw-config (with-temp-buffer
+                      (insert-file-contents "~/.mdw.conf")
+                      (replace-regexp "^[ \t]*\\(#.*\\|\\)\n" ""
+                                      nil (point-min) (point-max))
+                      (replace-regexp (concat "^[ \t]*"
+                                              "\\([-a-zA-Z0-9_.]*\\)"
+                                              "[ \t]*=[ \t]*"
+                                              "\\(.*[^ \t\n]\\|\\)"
+                                              "[ \t]**\\(\n\\|$\\)")
+                                      "(\\1 . \"\\2\") "
+                                      nil (point-min) (point-max))
+                      (car (read-from-string
+                            (concat "(" (buffer-string) ")"))))))
+  (cdr (assq sym mdw-config)))
+
 ;; --- Splitting windows ---
 
 (defconst mdw-scrollbar-width (if window-system 6 1)