emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/web-mode 71903d4837: tag lexing bug


From: ELPA Syncer
Subject: [nongnu] elpa/web-mode 71903d4837: tag lexing bug
Date: Sat, 26 Feb 2022 05:58:59 -0500 (EST)

branch: elpa/web-mode
commit 71903d4837c2ce8add6ec2d994186c68e1459497
Author: fxbois <fxbois@gmail.com>
Commit: fxbois <fxbois@gmail.com>

    tag lexing bug
    
    #1150
---
 issues/1150.html |  3 ++-
 web-mode.el      | 68 +++++++++++++++++++++++++++++---------------------------
 2 files changed, 37 insertions(+), 34 deletions(-)

diff --git a/issues/1150.html b/issues/1150.html
index 716abf13d5..ee0415f164 100644
--- a/issues/1150.html
+++ b/issues/1150.html
@@ -1 +1,2 @@
-<link rel="icon" sizes="16x16" href=path/ici.ico />
+<link rel=stylesheet href=markup.css/>
+<link href=markup.css>
diff --git a/web-mode.el b/web-mode.el
index 1443dbedea..ce3c32e3ff 100644
--- a/web-mode.el
+++ b/web-mode.el
@@ -1,9 +1,9 @@
 ;;; web-mode.el --- major mode for editing web templates
 ;;; -*- coding: utf-8; lexical-binding: t; -*-
 
-;; Copyright 2011-2021 François-Xavier Bois
+;; Copyright 2011-2022 François-Xavier Bois
 
-;; Version: 17.0.4
+;; Version: 17.1.0
 ;; Author: François-Xavier Bois <fxbois AT Google Mail Service>
 ;; Maintainer: François-Xavier Bois
 ;; Package-Requires: ((emacs "23.1"))
@@ -17,14 +17,14 @@
 ;;; Commentary:
 
 
;;==============================================================================
-;; WEB-MODE is sponsored by ** Kernix ** Best Digital Factory & Data Lab 
(Paris)
+;; WEB-MODE is sponsored by ** Kernix ** Best Digital Agency & Data Lab (Paris)
 
;;==============================================================================
 
 ;;; Code:
 
 ;;---- CONSTS 
------------------------------------------------------------------
 
-(defconst web-mode-version "17.0.4"
+(defconst web-mode-version "17.1.0"
   "Web Mode version.")
 
 ;;---- GROUPS 
------------------------------------------------------------------
@@ -5166,10 +5166,6 @@ Also return non-nil if it is the command 
`self-insert-command' is remapped to."
 
 ;;---- LEXER PARTS 
-------------------------------------------------------------
 
-;; FLAGS: tag
-;; (1)attrs (2)custom (4)slash-beg (8)slash-end (16)bracket-end
-;; (32)namespaced
-
 (defun web-mode-scan-elements (reg-beg reg-end)
   (save-excursion
     (let (part-beg part-end flags limit close-expr props tname tbeg tend 
element-content-type (regexp web-mode-dom-regexp) part-close-tag char)
@@ -5358,8 +5354,12 @@ Also return non-nil if it is the command 
`self-insert-command' is remapped to."
 
       )))
 
+;; FLAGS: tag
+;; (1)attrs (2)custom (4)slash-beg (8)slash-end (16)bracket-end (32)namespaced
+
 ;; FLAGS: attr
 ;; (1)custom-attr (2)engine-attr (4)spread-attr[jsx] (8)code-value
+;; SPECS: 
https://www.w3.org/TR/2012/WD-html-markup-20120329/syntax.html#attr-value-unquoted
 
 ;; STATES: attr
 ;; (0)nil (1)space (2)name (3)space-before (4)equal (5)space-after
@@ -5387,7 +5387,7 @@ Also return non-nil if it is the command 
`self-insert-command' is remapped to."
        ((>= pos limit)
         (setq continue nil)
         (setq go-back t)
-        (setq attrs (+ attrs (web-mode-attr-scan state char name-beg name-end 
val-beg attr-flags equal-offset)))
+        (setq attrs (+ attrs (web-mode-attr-scan pos state char name-beg 
name-end val-beg attr-flags equal-offset tag-flags)))
         )
 
        ((or (and (= state 8) (not (member char '(?\" ?\\))))
@@ -5408,7 +5408,7 @@ Also return non-nil if it is the command 
`self-insert-command' is remapped to."
 
        ((and (= state 2) is-jsx (eq char ?\}) (eq attr-flags 4))
         (setq name-end pos)
-        (setq attrs (+ attrs (web-mode-attr-scan state char name-beg name-end 
val-beg attr-flags equal-offset)))
+        (setq attrs (+ attrs (web-mode-attr-scan pos state char name-beg 
name-end val-beg attr-flags equal-offset tag-flags)))
         (setq state 0
               attr-flags 0
               equal-offset 0
@@ -5423,7 +5423,7 @@ Also return non-nil if it is the command 
`self-insert-command' is remapped to."
             )
 
         ;;(message "%S %S" (point) attr-flags)
-        (setq attrs (+ attrs (web-mode-attr-scan state char name-beg name-end 
val-beg attr-flags equal-offset)))
+        (setq attrs (+ attrs (web-mode-attr-scan pos state char name-beg 
name-end val-beg attr-flags equal-offset tag-flags)))
         (setq state 0
               attr-flags 0
               equal-offset 0
@@ -5459,7 +5459,7 @@ Also return non-nil if it is the command 
`self-insert-command' is remapped to."
        ((and (eq char ?\<) (not (member state '(7 8 9))))
         (setq continue nil)
         (setq go-back t)
-        (setq attrs (+ attrs (web-mode-attr-scan state char name-beg name-end 
val-beg attr-flags equal-offset)))
+        (setq attrs (+ attrs (web-mode-attr-scan pos state char name-beg 
name-end val-beg attr-flags equal-offset tag-flags)))
         )
 
        ((and (eq char ?\>) (not (member state '(7 8 9))))
@@ -5469,7 +5469,7 @@ Also return non-nil if it is the command 
`self-insert-command' is remapped to."
           )
         (setq continue nil)
         (when name-beg
-          (setq attrs (+ attrs (web-mode-attr-scan state char name-beg 
name-end val-beg attr-flags equal-offset))))
+          (setq attrs (+ attrs (web-mode-attr-scan pos state char name-beg 
name-end val-beg attr-flags equal-offset tag-flags))))
         )
 
        ((and spaced (member state '(1 3 5)))
@@ -5480,7 +5480,7 @@ Also return non-nil if it is the command 
`self-insert-command' is remapped to."
         )
 
        ((and (eq char ?\/) (member state '(4 5)))
-        (setq attrs (+ attrs (web-mode-attr-scan state char name-beg name-end 
val-beg attr-flags equal-offset)))
+        (setq attrs (+ attrs (web-mode-attr-scan pos state char name-beg 
name-end val-beg attr-flags equal-offset tag-flags)))
         (setq state 1
               attr-flags 0
               equal-offset 0
@@ -5500,7 +5500,7 @@ Also return non-nil if it is the command 
`self-insert-command' is remapped to."
              (or (and (>= char 97) (<= char 122)) ;a - z
                  (and (>= char 65) (<= char 90)) ;A - Z
                  (eq char ?\-)))
-        (setq attrs (+ attrs (web-mode-attr-scan state char name-beg name-end 
val-beg attr-flags equal-offset)))
+        (setq attrs (+ attrs (web-mode-attr-scan pos state char name-beg 
name-end val-beg attr-flags equal-offset tag-flags)))
         (setq state 2
               attr-flags 0
               equal-offset 0
@@ -5510,7 +5510,7 @@ Also return non-nil if it is the command 
`self-insert-command' is remapped to."
         )
 
        ((and (eq char ?\n) (not (member state '(7 8 9))))
-        (setq attrs (+ attrs (web-mode-attr-scan state char name-beg name-end 
val-beg attr-flags equal-offset)))
+        (setq attrs (+ attrs (web-mode-attr-scan pos state char name-beg 
name-end val-beg attr-flags equal-offset tag-flags)))
         (setq state 1
               attr-flags 0
               equal-offset 0
@@ -5520,7 +5520,7 @@ Also return non-nil if it is the command 
`self-insert-command' is remapped to."
         )
 
        ((and (= state 6) (member char '(?\s ?\n))) ;#1150
-        (setq attrs (+ attrs (web-mode-attr-scan state char name-beg name-end 
val-beg attr-flags equal-offset)))
+        (setq attrs (+ attrs (web-mode-attr-scan pos state char name-beg 
name-end val-beg attr-flags equal-offset tag-flags)))
         (setq state 1
               attr-flags 0
               equal-offset 0
@@ -5534,7 +5534,7 @@ Also return non-nil if it is the command 
`self-insert-command' is remapped to."
           (setq tag-flags (logior tag-flags 16))
           (setq continue nil))
         (setq state 6)
-        (setq attrs (+ attrs (web-mode-attr-scan state char name-beg name-end 
val-beg attr-flags equal-offset)))
+        (setq attrs (+ attrs (web-mode-attr-scan pos state char name-beg 
name-end val-beg attr-flags equal-offset tag-flags)))
         (setq state 1
               attr-flags 0
               equal-offset 0
@@ -5582,7 +5582,7 @@ Also return non-nil if it is the command 
`self-insert-command' is remapped to."
 
        ) ;cond
 
-      ;;(message "point(%S) end(%S) state(%S) c(%S) name-beg(%S) name-end(%S) 
val-beg(%S) attr-flags(%S) equal-offset(%S)" pos end state char name-beg 
name-end val-beg attr-flags equal-offset)
+      ;;(message "point(%S) end(%S) state(%S) c(%S) name-beg(%S) name-end(%S) 
val-beg(%S) attr-flags(%S) equal-offset(%S)" pos end state char name-beg 
name-end val-beg attr-flags equal-offset tag-flags)
 
       (when (and quoted (>= quoted 2))
         (setq quoted nil))
@@ -5597,20 +5597,20 @@ Also return non-nil if it is the command 
`self-insert-command' is remapped to."
 
     tag-flags))
 
-(defun web-mode-attr-scan (state char name-beg name-end val-beg flags 
equal-offset)
-  ;;(message "point(%S) state(%S) c(%c) name-beg(%S) name-end(%S) val-beg(%S) 
flags(%S) equal-offset(%S)"
-  ;;         (point) state char name-beg name-end val-beg flags equal-offset)
-  (when (null flags) (setq flags 0))
+(defun web-mode-attr-scan (pos state char name-beg name-end val-beg attr-flags 
equal-offset tag-flags)
+  ;;(message "point(%S) state(%S) c(%c) name-beg(%S) name-end(%S) val-beg(%S) 
attr-flags(%S) equal-offset(%S) tag-flags(%S)"
+  ;;         pos state char name-beg name-end val-beg attr-flags equal-offset 
tag-flags)
+  (when (null attr-flags) (setq attr-flags 0))
   (when (and name-beg name-end web-mode-engine-attr-regexp)
     (let (name)
       (setq name (buffer-substring-no-properties name-beg (1+ name-end)))
       ;;(message "%S" name)
       (cond
        ((string-match-p "^data[-]" name)
-        (setq flags (logior flags 1))
+        (setq attr-flags (logior attr-flags 1))
         )
        ((string-match-p web-mode-engine-attr-regexp name)
-        (setq flags (logior flags 2))
+        (setq attr-flags (logior attr-flags 2))
         )
        )
       ) ;name
@@ -5618,16 +5618,15 @@ Also return non-nil if it is the command 
`self-insert-command' is remapped to."
   ;;(message "%S" name)
   (cond
    ((null name-beg)
-    ;;    (message "name-beg is null (%S)" (point))
     0)
    ((or (and (= state 8) (not (eq ?\" char)))
         (and (= state 7) (not (eq ?\' char))))
-    (put-text-property name-beg (1+ name-beg) 'tag-attr-beg flags)
+    (put-text-property name-beg (1+ name-beg) 'tag-attr-beg attr-flags)
     (put-text-property name-beg val-beg 'tag-attr t)
     (put-text-property (1- val-beg) val-beg 'tag-attr-end equal-offset)
     1)
    ((and (member state '(4 5)) (null val-beg))
-    (put-text-property name-beg (1+ name-beg) 'tag-attr-beg flags)
+    (put-text-property name-beg (1+ name-beg) 'tag-attr-beg attr-flags)
     (put-text-property name-beg (+ name-beg equal-offset 1) 'tag-attr t)
     (put-text-property (+ name-beg equal-offset) (+ name-beg equal-offset 1) 
'tag-attr-end equal-offset)
     1)
@@ -5635,20 +5634,23 @@ Also return non-nil if it is the command 
`self-insert-command' is remapped to."
     (let (val-end)
       (if (null val-beg)
           (setq val-end name-end)
-        (setq val-end (point))
+        (setq val-end pos)
         (cond
          ((null char)
           (setq val-end (1- val-end)))
          ((member char '(?\s ?\n ?\/))
           (setq val-end (1- val-end)))
          ((eq char ?\>)
-          (if (logior flags 8)
-              (setq val-end (- val-end 2))
+          (if (= (logand tag-flags 8) 8)
+              (progn
+                ;;(message "tag-flags=%S %S" tag-flags (logand tag-flags 8))
+                (setq val-end (- val-end 2)))
             (setq val-end (- val-end 1)))
+          ;; (message "val-end=%S" val-end)
           )
          )
-        ) ;if
-      (put-text-property name-beg (1+ name-beg) 'tag-attr-beg flags)
+        ) ;if null val-beg
+      (put-text-property name-beg (1+ name-beg) 'tag-attr-beg attr-flags)
       (put-text-property name-beg (1+ val-end) 'tag-attr t)
       (put-text-property val-end (1+ val-end) 'tag-attr-end equal-offset)
       ) ;let



reply via email to

[Prev in Thread] Current Thread [Next in Thread]