Function: web-mode-css-rule-current

web-mode-css-rule-current is a natively compiled function defined in web-mode.el.

Signature

(web-mode-css-rule-current &optional POS PART-BEG PART-END)

Documentation

Current CSS rule boundaries.

Source Code

;; Defined in /nix/store/2qgnz1rp30nzfz6w0apx4kdm14if1bbs-emacs-packages-deps/share/emacs/site-lisp/elpa/web-mode-20260831.219/web-mode.el
(defun web-mode-css-rule-current (&optional pos part-beg part-end)
  "Current CSS rule boundaries."
  (unless pos (setq pos (point)))
  (unless part-beg (setq part-beg (web-mode-part-beginning-position pos)))
  (unless part-end (setq part-end (web-mode-part-end-position pos)))
  (save-excursion
    (let (beg end)
      (goto-char pos)
      (if (not (web-mode-part-sb "{" part-beg))
          (progn
            (setq beg part-beg)
            (if (web-mode-part-sf ";" part-end)
                (setq end (1+ (point)))
                (setq end part-end))
            ) ;progn
          (setq beg (point))
          (setq end (web-mode-closing-paren-position beg part-end))
          (if end
              (setq end (1+ end))
              (setq end (line-end-position)))
          ;;        (message "%S >>beg%S >>end%S" pos beg end)
          (if (> pos end)

              ;;selectors
              (progn
                (goto-char pos)
                (if (web-mode-part-rsb "[};]" part-beg)
                    (setq beg (1+ (point)))
                    (setq beg part-beg)
                    ) ;if
                (goto-char pos)
                (if (web-mode-part-rsf "[{;]" part-end)
                    (cond
                      ((eq (char-before) ?\;)
                       (setq end (point))
                       )
                      (t
                       (setq end (web-mode-closing-paren-position (1- (point)) part-end))
                       (if end
                           (setq end (1+ end))
                           (setq end part-end))
                       )
                      ) ;cond
                    (setq end part-end)
                    )
                ) ;progn selectors

              ;; declaration
              (goto-char beg)
              (if (web-mode-part-rsb "[}{;]" part-beg)
                  (setq beg (1+ (point)))
                  (setq beg part-beg)
                  ) ;if
              ) ;if > pos end
          )
      ;;      (message "beg(%S) end(%S)" beg end)
      (when (eq (char-after beg) ?\n)
        (setq beg (1+ beg)))
      (cons beg end)
      )))