diff options
author | Federico Beffa <beffa@fbengineering.ch> | 2015-12-26 11:02:01 +0100 |
---|---|---|
committer | Federico Beffa <beffa@fbengineering.ch> | 2016-02-03 10:48:36 +0100 |
commit | e5045f303a0214c2e436c128ce3d6c59cf276f2a (patch) | |
tree | 92a15969e303fe8d8b6eaf6ebe9fb9c09e04ce9e /gnu/packages/patches/emacs-constants-lisp-like.patch | |
parent | 58a7dc1340986f11ff54a970f613a03e8ebd741c (diff) | |
download | guix-e5045f303a0214c2e436c128ce3d6c59cf276f2a.tar guix-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/emacs-constants-lisp-like.patch')
-rw-r--r-- | gnu/packages/patches/emacs-constants-lisp-like.patch | 81 |
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. |