[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [nongnu] elpa/web-mode 71903d4837: tag lexing bug,
ELPA Syncer <=