Function: web-mode-block-match

web-mode-block-match is a natively compiled function defined in web-mode.el.

Signature

(web-mode-block-match &optional 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-block-match (&optional pos)
  (unless pos (setq pos (point)))
  (let (pos-ori controls control (counter 1) type (continue t) pair)
    (setq pos-ori pos)
    (goto-char pos)
    (setq controls (web-mode-block-controls-get pos))
    ;;(message "controls=%S" controls)
    (cond
      (controls
       (setq pair (car controls))
       (setq control (cdr pair))
       (setq type (car pair))
       (when (eq type 'inside) (setq type 'close))
       (while continue
         (cond
           ((and (> pos-ori 1) (bobp))
            (setq continue nil))
           ((or (and (eq type 'open) (not (web-mode-block-next)))
                (and (eq type 'close) (not (web-mode-block-previous))))
            (setq continue nil)
            )
           ((null (setq controls (web-mode-block-controls-get (point))))
            )
           (t
            ;;TODO : est il nécessaire de faire un reverse sur controls si on doit matcher backward
            (dolist (pair controls)
              (cond
                ((not (string= (cdr pair) control))
                 )
                ((eq (car pair) 'inside)
                 )
                ((eq (car pair) type)
                 (setq counter (1+ counter)))
                (t
                 (setq counter (1- counter)))
                )
              ) ;dolist
            (when (= counter 0)
              (setq continue nil))
            ) ;t
           ) ;cond
         ) ;while
       (if (= counter 0) (point) nil)
       ) ;controls
      (t
       (goto-char pos-ori)
       nil
       ) ;controls = nul
      ) ;conf
    ))