branch: externals/yaml
commit 8a3303b59ed8d5aeb732e8f0961cc8d249ddd2a3
Author: Zachary Romero <[email protected]>
Commit: Zachary Romero <[email protected]>
Fix indentation bug
---
yaml.el | 36 +++++++++++++++++++++++++++++-------
1 file changed, 29 insertions(+), 7 deletions(-)
diff --git a/yaml.el b/yaml.el
index 9e7f17a4b3..5c5c1a16ba 100644
--- a/yaml.el
+++ b/yaml.el
@@ -582,7 +582,7 @@ This flag is intended for development purposes.")
(let ((beg yaml--parsing-position)
(,res-symbol ,rule))
(when (and yaml--parse-debug ,res-symbol (not (member ,name
yaml--tracing-ignore)))
- (message "<%s|%s %40s \"%s\" = %s"
+ (message "<%s|%s %40s \"%s\""
(make-string (length yaml--states) ?-)
(make-string (- 40 (length yaml--states)) ?\s)
,name
@@ -591,8 +591,7 @@ This flag is intended for development purposes.")
"\\n"
(substring yaml--parsing-input beg yaml--parsing-position)
nil
- 'literal)
- ,res-symbol))
+ 'literal)))
(yaml--pop-state)
(if (not ,res-symbol)
nil
@@ -1270,7 +1269,11 @@ Rules for this function are defined by the yaml-spec
JSON file."
((eq state 'l-trail-comments) (let ((n (nth 0 args))) (yaml--frame
"l-trail-comments" (yaml--all (yaml--parse-from-grammar 's-indent-lt n)
(yaml--parse-from-grammar 'c-nb-comment-text) (yaml--parse-from-grammar
'b-comment) (yaml--rep2 0 nil (lambda () (yaml--parse-from-grammar
'l-comment)))))))
((eq state 'ns-flow-map-yaml-key-entry) (let ((n (nth 0 args)) (c (nth 1
args))) (yaml--frame "ns-flow-map-yaml-key-entry" (yaml--all
(yaml--parse-from-grammar 'ns-flow-yaml-node n c) (yaml--any (yaml--all
(yaml--rep 0 1 (lambda () (yaml--parse-from-grammar 's-separate n c)))
(yaml--parse-from-grammar 'c-ns-flow-map-separate-value n c))
(yaml--parse-from-grammar 'e-node))))))
- ((eq state 's-indent) (let ((n (nth 0 args))) (yaml--frame "s-indent"
(yaml--rep n n (lambda () (yaml--parse-from-grammar 's-space))))))
+ ((eq state 's-indent)
+ (let ((n (nth 0 args)))
+ (message "debug: s-indent: %d %s" n (yaml--slice yaml--parsing-position))
+ (yaml--frame "s-indent"
+ (yaml--rep n n (lambda () (yaml--parse-from-grammar 's-space))))))
((eq state 'ns-esc-line-separator) (let () (yaml--frame
"ns-esc-line-separator" (yaml--chr ?\L))))
((eq state 'ns-flow-yaml-node)
(let ((n (nth 0 args)) (c (nth 1 args)))
@@ -1322,11 +1325,18 @@ Rules for this function are defined by the yaml-spec
JSON file."
(yaml--parse-from-grammar 'l+block-mapping
n))))))
((eq state 'c-quoted-quote) (let () (yaml--frame "c-quoted-quote"
(yaml--all (yaml--chr ?\') (yaml--chr ?\')))))
+
((eq state 'l+block-sequence)
(let ((n (nth 0 args)))
(yaml--frame "l+block-sequence"
- (yaml--all (yaml--set m (yaml--auto-detect-indent n))
- (yaml--rep 1 nil (lambda () (yaml--all
(yaml--parse-from-grammar 's-indent (+ n (yaml--state-m)))
(yaml--parse-from-grammar 'c-l-block-seq-entry (+ n (yaml--state-m))))))))))
+ (progn
+ (message "DEBUG: l+block-mapping: %d %d \"%s\""
(yaml--auto-detect-indent n) n (yaml--slice yaml--parsing-position))
+ (yaml--all (yaml--set m (yaml--auto-detect-indent n))
+ (yaml--rep 1 nil
+ (lambda ()
+ (yaml--all
+ (yaml--parse-from-grammar 's-indent (+ n
(yaml--state-m)))
+ (yaml--parse-from-grammar
'c-l-block-seq-entry (+ n (yaml--state-m)))))))))))
((eq state 'c-double-quote) (let () (yaml--frame "c-double-quote"
(yaml--chr ?\"))))
((eq state 'ns-esc-backspace) (let () (yaml--frame "ns-esc-backspace"
(yaml--chr ?\b))))
@@ -1541,7 +1551,19 @@ Rules for this function are defined by the yaml-spec
JSON file."
((eq state 'c-tag) (let () (yaml--frame "c-tag" (yaml--chr ?\!))))
((eq state 'c-escape) (let () (yaml--frame "c-escape" (yaml--chr ?\\))))
((eq state 'c-sequence-end) (let () (yaml--frame "c-sequence-end"
(yaml--chr ?\]))))
- ((eq state 'l+block-mapping) (let ((n (nth 0 args))) (yaml--frame
"l+block-mapping" (yaml--all (yaml--set m (yaml--auto-detect-indent n))
(yaml--rep 1 nil (lambda () (yaml--all (yaml--parse-from-grammar 's-indent (+ n
(yaml--state-m))) (yaml--parse-from-grammar 'ns-l-block-map-entry (+ n
(yaml--state-m))))))))))
+
+ ((eq state 'l+block-mapping)
+ (let ((n (nth 0 args)))
+ (yaml--frame "l+block-mapping"
+ (progn
+ (let ((new-m (yaml--auto-detect-indent n)))
+ (yaml--all (yaml--set m new-m)
+ (yaml--rep 1 nil
+ (lambda ()
+ (yaml--all
+ (yaml--parse-from-grammar 's-indent (+ n
(prog1 new-m (message "BEEP: %s" new-m))))
+ (yaml--parse-from-grammar
'ns-l-block-map-entry (+ n (prog1 new-m (message "BEEP: %s" new-m)))))))))))))
+
((eq state 'c-ns-flow-map-adjacent-value) (let ((n (nth 0 args)) (c (nth 1
args))) (yaml--frame "c-ns-flow-map-adjacent-value" (yaml--all (yaml--chr ?\:)
(yaml--any (yaml--all (yaml--rep 0 1 (lambda () (yaml--parse-from-grammar
's-separate n c))) (yaml--parse-from-grammar 'ns-flow-node n c))
(yaml--parse-from-grammar 'e-node))))))
((eq state 's-single-next-line) (let ((n (nth 0 args))) (yaml--frame
"s-single-next-line" (yaml--all (yaml--parse-from-grammar 's-flow-folded n)
(yaml--rep 0 1 (lambda () (yaml--all (yaml--parse-from-grammar 'ns-single-char)
(yaml--parse-from-grammar 'nb-ns-single-in-line) (yaml--any
(yaml--parse-from-grammar 's-single-next-line n) (yaml--rep2 0 nil (lambda ()
(yaml--parse-from-grammar 's-white)))))))))))
((eq state 's-separate-in-line) (let () (yaml--frame "s-separate-in-line"
(yaml--any (yaml--rep 1 nil (lambda () (yaml--parse-from-grammar 's-white)))
(yaml--start-of-line)))))