From 05ffcafec1625d3e872e54573ee883680ebd1a66 Mon Sep 17 00:00:00 2001 From: Mark Tucker Date: Sun, 10 Oct 2010 14:50:53 -0500 Subject: [PATCH] "{", "}", and ";" now insert-and-indent. --- lisp-personal/scss-mode.el | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/lisp-personal/scss-mode.el b/lisp-personal/scss-mode.el index 106511c..51ce543 100644 --- a/lisp-personal/scss-mode.el +++ b/lisp-personal/scss-mode.el @@ -70,6 +70,25 @@ HYPERLINK HIGHLIGHT)" (buffer-name) " " (first (split-string (buffer-name) ".scss")) ".css"))) +(defun scss-insert-and-indent (key) + "Run the command bound to KEY, and indent if necessary. +Indentation does not take place if point is in a string or +comment. Adapted from js-insert-and-indent." + (interactive (list (this-command-keys))) + (call-interactively (lookup-key (current-global-map) key)) + (let ((syntax (save-restriction (widen) (syntax-ppss)))) + (when (and (not (nth 8 syntax)) + (not (nth 4 syntax))) + (indent-according-to-mode)))) + +(defvar scss-mode-map + (let ((keymap (make-sparse-keymap))) + (define-key keymap (kbd "C-c C-c") #'scss-compile) + (mapc (lambda (key) + (define-key keymap key #'scss-insert-and-indent)) + '("{" "}" ";")) + keymap)) + ;;;###autoload (define-derived-mode scss-mode css-mode "Scss" "Major mode for editing Scss files, http://sass-lang.com/ @@ -79,8 +98,6 @@ Special commands: (add-to-list 'compilation-error-regexp-alist scss-compile-error-regex) (add-hook 'after-save-hook 'scss-compile-maybe nil t)) -(define-key scss-mode-map "\C-c\C-c" 'scss-compile) - ;;;###autoload (add-to-list 'auto-mode-alist '("\\.scss\\'" . scss-mode))