diff --git a/modules/lib/defuns-scss.el b/modules/lib/defuns-scss.el new file mode 100644 index 000000000..6a73815c7 --- /dev/null +++ b/modules/lib/defuns-scss.el @@ -0,0 +1,21 @@ +;;; defuns-scss.el + +;;;###autoload +(defun narf/scss-toggle-inline-or-block () + "Toggles between a SCSS multiline block and one-line block." + (interactive) + (save-excursion + (let* ((bounds (ignore-errors (evil-a-curly))) + (beg (car bounds)) + (end (cadr bounds))) + (goto-char beg) + (unless bounds + (user-error "No block found")) + (if (= (line-number-at-pos beg) (line-number-at-pos end)) + (progn (replace-regexp ";[\s\t]*" ";\n" nil beg end) + (save-excursion (goto-char (1+ beg)) (insert "\n") + (evil-indent beg (+ 2 end)))) + (evil-join beg end))))) + +(provide 'defuns-scss) +;;; defuns-scss.el ends here diff --git a/modules/module-sass.el b/modules/module-sass.el index 176204dfc..0674cf521 100644 --- a/modules/module-sass.el +++ b/modules/module-sass.el @@ -17,6 +17,12 @@ (add-hook! scss-mode (setenv "jsbeautify_indent_size" "2")) (bind! :map scss-mode-map :m "gQ" 'web-beautify-css)) + (after! emr + (emr-declare-command 'narf/scss-toggle-inline-or-block + :title "toggle inline/block" + :modes 'scss-mode + :predicate (lambda () (not (use-region-p))))) + (after! company (add-company-backend! scss-mode (css)))) (use-package rainbow-mode