78 lines
2.8 KiB
EmacsLisp
78 lines
2.8 KiB
EmacsLisp
;;; lang/web/autoload/css.el -*- lexical-binding: t; -*-
|
|
|
|
;;;###autoload
|
|
;; TODO (defun +css/scss-build ())
|
|
|
|
;;;###autoload
|
|
;; TODO (defun +css/sass-build ())
|
|
|
|
(defun +css--toggle-inline-or-block (beg end)
|
|
(skip-chars-forward " \t")
|
|
(let ((orig (point-marker)))
|
|
(with-no-warnings
|
|
(quiet!
|
|
(if (= (line-number-at-pos beg) (line-number-at-pos end))
|
|
(progn
|
|
(goto-char (1+ beg)) (insert "\n")
|
|
(replace-regexp ";\\s-+" ";\n" nil beg end)
|
|
(indent-region beg end))
|
|
(replace-regexp "\n" " " nil beg end)
|
|
(replace-regexp " +" " " nil beg end))))
|
|
(if orig (goto-char orig))))
|
|
|
|
;;;###autoload
|
|
(defun +css/toggle-inline-or-block ()
|
|
"Toggles between a bracketed block and inline block."
|
|
(interactive)
|
|
(let ((inhibit-modification-hooks t))
|
|
(cl-destructuring-bind (&key beg end op cl &allow-other-keys)
|
|
(save-excursion
|
|
(when (and (eq (char-after) ?{)
|
|
(not (eq (char-before) ?{)))
|
|
(forward-char))
|
|
(sp-get-sexp))
|
|
(when (or (not (and beg end op cl))
|
|
(string-empty-p op) (string-empty-p cl))
|
|
(user-error "No block found %s" (list beg end op cl)))
|
|
(unless (string= op "{")
|
|
(user-error "Incorrect block found"))
|
|
(if (featurep 'evil)
|
|
(evil-with-single-undo (+css--toggle-inline-or-block beg end))
|
|
(+css--toggle-inline-or-block beg end)))))
|
|
|
|
;;;###autoload
|
|
(defun +css/comment-indent-new-line ()
|
|
"Continues the comment in an indented new line in css-mode and scss-mode.
|
|
Meant for `comment-line-break-function'."
|
|
(interactive)
|
|
(when (sp-point-in-comment)
|
|
(let ((at-end (looking-at-p ".+\\*/"))
|
|
type pre-indent post-indent)
|
|
(save-excursion
|
|
(let ((bol (line-beginning-position))
|
|
(eol (line-end-position)))
|
|
(if (not comment-use-syntax)
|
|
(progn
|
|
(goto-char bol)
|
|
(when (re-search-forward comment-start-skip eol t)
|
|
(goto-char (or (match-end 1) (match-beginning 0)))))
|
|
(goto-char (comment-beginning))))
|
|
(save-match-data
|
|
(looking-at "\\(//\\|/?\\*\\)")
|
|
(setq type (match-string 0)
|
|
pre-indent (- (match-beginning 0) (line-beginning-position))
|
|
post-indent
|
|
(progn
|
|
(goto-char (match-end 0))
|
|
(max 1 (skip-chars-forward " " (line-end-position)))))
|
|
(if (eolp) (setq post-indent 1))))
|
|
(insert "\n"
|
|
(make-string pre-indent 32)
|
|
(if (string= "/*" type)
|
|
" *"
|
|
type)
|
|
(make-string post-indent 32))
|
|
(when at-end
|
|
(save-excursion
|
|
(insert "\n" (make-string pre-indent 32))
|
|
(delete-char -1))))))
|