Function: web-mode-mark
web-mode-mark is a natively compiled function defined in web-mode.el.
Signature
(web-mode-mark POS)
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-mark (pos)
(let ((beg pos) (end pos) boundaries)
(if mark-active
(setq web-mode-expand-initial-pos (point)
web-mode-expand-initial-scroll (window-start))
)
;; (message "regs=%S %S %S %S" (region-beginning) (region-end) (point-min) (point-max))
;; (message "before=%S" web-mode-expand-previous-state)
(cond
((and mark-active
(= (region-beginning) (point-min))
(or (= (region-end) (point-max))
(= (1+ (region-end)) (point-max))))
(deactivate-mark)
(goto-char (or web-mode-expand-initial-pos (point-min)))
(setq web-mode-expand-previous-state nil)
(when web-mode-expand-initial-scroll
(set-window-start (selected-window) web-mode-expand-initial-scroll))
)
((string= web-mode-expand-previous-state "elt-content")
(web-mode-element-parent)
;;(message "pos=%S" (point))
(web-mode-element-select)
(setq web-mode-expand-previous-state "html-parent"))
((and (member (get-text-property pos 'block-token) '(comment string))
(not (member web-mode-expand-previous-state '("block-token" "block-body" "block-side"))))
(when (eq (get-text-property pos 'block-token) (get-text-property (1- pos) 'block-token))
(setq beg (or (previous-single-property-change pos 'block-token) (point-min))))
(when (eq (get-text-property pos 'block-token) (get-text-property (1+ pos) 'block-token))
(setq end (next-single-property-change pos 'block-token)))
(set-mark beg)
(goto-char end)
(exchange-point-and-mark)
(setq web-mode-expand-previous-state "block-token"))
((and (get-text-property pos 'block-side)
(not (member web-mode-expand-previous-state '("block-body" "block-side")))
(not (member web-mode-engine '(django go)))
(setq boundaries (web-mode-in-code-block "{" "}" 'block-side)))
(set-mark (car boundaries))
(goto-char (cdr boundaries))
(exchange-point-and-mark)
(setq web-mode-expand-previous-state "block-body"))
((and (get-text-property pos 'block-side)
(not (member web-mode-expand-previous-state '("block-side"))))
(set-mark (web-mode-block-beginning-position pos))
(goto-char (1+ (web-mode-block-end-position pos)))
(exchange-point-and-mark)
(setq web-mode-expand-previous-state "block-side"))
((and (get-text-property pos 'part-token)
(not (string= web-mode-expand-previous-state "part-token")))
(when (eq (get-text-property pos 'part-token) (get-text-property (1- pos) 'part-token))
(setq beg (previous-single-property-change pos 'part-token)))
(when (eq (get-text-property pos 'part-token) (get-text-property (1+ pos) 'part-token))
(setq end (next-single-property-change pos 'part-token)))
(set-mark beg)
(goto-char end)
(exchange-point-and-mark)
(setq web-mode-expand-previous-state "part-token"))
((and (get-text-property pos 'part-side)
(not (string= web-mode-expand-previous-state "client-part"))
(setq boundaries (web-mode-in-code-block "{" "}" 'part-side)))
(set-mark (car boundaries))
(goto-char (cdr boundaries))
(exchange-point-and-mark)
(setq web-mode-expand-previous-state "client-part"))
((and (get-text-property pos 'part-side)
(not (string= web-mode-expand-previous-state "part-side")))
(when (eq (get-text-property pos 'part-side) (get-text-property (1- pos) 'part-side))
(setq beg (previous-single-property-change pos 'part-side)))
(when (eq (get-text-property pos 'part-side) (get-text-property (1+ pos) 'part-side))
(setq end (next-single-property-change pos 'part-side)))
(when (eq (char-after beg) ?\n)
(setq beg (1+ beg)))
(set-mark beg)
(goto-char end)
(when (looking-back "^[ \t]+" (point-min))
(beginning-of-line))
(exchange-point-and-mark)
(setq web-mode-expand-previous-state "part-side"))
((and (get-text-property pos 'tag-attr)
(not (member web-mode-expand-previous-state '("html-attr" "html-tag"))))
(web-mode-attribute-select pos)
(setq web-mode-expand-previous-state "html-attr"))
((and (eq (get-text-property pos 'tag-type) 'comment)
(not (member web-mode-expand-previous-state '("html-tag" "html-comment" "html-elt" "html-parent"))))
(web-mode-tag-select)
(setq web-mode-expand-previous-state "html-comment"))
((and (get-text-property pos 'tag-name)
(not (member web-mode-expand-previous-state '("html-tag" "html-elt" "html-parent"))))
(web-mode-tag-select)
(setq web-mode-expand-previous-state "html-tag"))
((and (get-text-property pos 'tag-beg)
(string= web-mode-expand-previous-state "html-tag"))
(web-mode-element-select)
(setq web-mode-expand-previous-state "html-elt"))
(t
(cond
((not (web-mode-element-parent))
(push-mark (point))
(push-mark (point-max) nil t)
(goto-char (point-min))
(setq web-mode-expand-previous-state "mark-whole"))
((not (= (web-mode-tag-end-position (point)) (1- beg)))
(web-mode-element-content-select)
(setq web-mode-expand-previous-state "elt-content"))
(t
(web-mode-element-select)
(setq web-mode-expand-previous-state "html-parent"))
)
) ;t
) ;cond
;;(message "w=%S" (window-end))
;;(message "after=%S" web-mode-expand-previous-state)
))