summary refs log tree commit diff
path: root/gnu/packages/patches
diff options
context:
space:
mode:
authorFederico Beffa <beffa@fbengineering.ch>2015-12-26 11:02:01 +0100
committerFederico Beffa <beffa@fbengineering.ch>2016-02-03 10:48:36 +0100
commite5045f303a0214c2e436c128ce3d6c59cf276f2a (patch)
tree92a15969e303fe8d8b6eaf6ebe9fb9c09e04ce9e /gnu/packages/patches
parent58a7dc1340986f11ff54a970f613a03e8ebd741c (diff)
downloadguix-e5045f303a0214c2e436c128ce3d6c59cf276f2a.tar.gz
gnu: Add emacs-constants.
* gnu/packages/emacs.scm (emacs-constants): New variable.
* gnu/packages/patches/emacs-constants-lisp-like.patch: New patch.
* gnu-system.am (dist_patch_DATA): Add it.
Diffstat (limited to 'gnu/packages/patches')
-rw-r--r--gnu/packages/patches/emacs-constants-lisp-like.patch81
1 files changed, 81 insertions, 0 deletions
diff --git a/gnu/packages/patches/emacs-constants-lisp-like.patch b/gnu/packages/patches/emacs-constants-lisp-like.patch
new file mode 100644
index 0000000000..5ec37f3adf
--- /dev/null
+++ b/gnu/packages/patches/emacs-constants-lisp-like.patch
@@ -0,0 +1,81 @@
+Add Scheme support
+
+--- constants/constants.el.orig	2015-12-26 17:44:31.734520833 +0100
++++ constants/constants.el	2015-12-30 17:41:28.402871263 +0100
+@@ -684,6 +684,33 @@
+ 
+ (eval-when-compile (defvar ctable))
+ 
++(defun constants-is-lisp-like (mode)
++  (save-match-data
++    (string-match "\\(lisp\\|scheme\\)" (symbol-name mode))))
++
++(defun constants-is-set-like ()
++  (save-excursion
++    (condition-case nil
++        (save-match-data
++          (progn (up-list -1)
++                 (or (looking-at "(set[qf!]?\\>") (looking-at "(define\\>"))))
++      (error nil))))     ; return value nil means use default
++
++;;;###autoload
++(defun constants-lisp-like-function ()
++  "Check context for constants insertion."
++  (if (constants-is-set-like)
++      '(emacs-lisp-mode "%n %v%t; %d %u" "e" "(* %p %v)")
++    '(emacs-lisp-mode "(%n %v)%t; %d %u" "e" "(* %p %v)")))
++
++;;;###autoload
++(mapc (lambda (mode-hook)
++        (add-hook mode-hook
++                  (lambda ()
++                    (setq constants-language-function
++                          'constants-lisp-like-function))))
++      '(scheme-mode-hook emacs-lisp-mode-hook lisp-mode-hook))
++
+ ;;;###autoload
+ (defun constants-insert (&optional unit-system names)
+   "Insert one or more natural constant definitions in source code.
+@@ -826,8 +853,9 @@
+             (funcall process-func ins))
+         ;; Here comes the insertion stuff for source code editing modes.
+         ;; First make sure we start a new line
+-        (if (string-match
+-             "\\S-" (buffer-substring (point-at-bol) (point-at-eol)))
++        (if (and (string-match
++                  "\\S-" (buffer-substring (point-at-bol) (point-at-eol)))
++                 (not (constants-is-lisp-like mode)))
+             ;; non-empty line, insert after this line
+             (progn 
+               (end-of-line 1) 
+@@ -841,13 +869,24 @@
+           (if (string-match "\\(.*\\)%t\\(.*\\)" line)
+               (let ((comment-column 42))
+                 (insert (match-string 1 line))
+-                (indent-to comment-column)
+-                (insert (match-string 2 line)))
++                (if (and (constants-is-lisp-like mode)
++                         (or (constants-is-set-like)
++                             (null clist)))
++                    (save-excursion
++                      (progn
++                        (move-to-column comment-column t)
++                        (insert (match-string 2 line))
++                        ;; insert a newline such that paredit's M-) can mode
++                        ;; the closing parentheses to the next line.
++                        (newline-and-indent)))
++                  (progn
++                    (indent-to comment-column)
++                    (insert (match-string 2 line)))))
+             (insert line)))
+-        (if constants-indent-code
+-            (newline-and-indent)
+-          (newline))))))
+-
++        (unless (and (constants-is-lisp-like mode) (null clist))
++          (if constants-indent-code
++              (newline-and-indent)
++            (newline)))))))
+ ;;;###autoload
+ (defun constants-get (&optional const message)
+   "Return the value of CONST as defined in the constants package.