branch: externals/yaml commit 49f4ebd8ab75d1d02f6a4c6786f9b7d152099c2f Author: Zachary Romero <zacrom...@posteo.net> Commit: Zachary Romero <zacrom...@posteo.net>
Minor bug fixes --- yaml.el | 39 ++++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/yaml.el b/yaml.el index d397c15534..18e82000ee 100644 --- a/yaml.el +++ b/yaml.el @@ -86,7 +86,7 @@ This flag is intended for development purposes.") (yaml-state-create :doc (yaml-state-doc top-state) :tt (yaml-state-tt top-state) :m val - :name (yaml-state-m top-state) + :name (yaml-state-name top-state) :lvl (yaml-state-lvl top-state) :beg (yaml-state-beg top-state) :end (yaml-state-end top-state))))) @@ -97,7 +97,7 @@ This flag is intended for development purposes.") (yaml-state-create :doc (yaml-state-doc top-state) :tt val :m (yaml-state-m top-state) - :name (yaml-state-m top-state) + :name (yaml-state-name top-state) :lvl (yaml-state-lvl top-state) :beg (yaml-state-beg top-state) :end (yaml-state-end top-state))))) @@ -136,14 +136,15 @@ This flag is intended for development purposes.") (let ((popped-state (car yaml--states))) (setq yaml--states (cdr yaml--states)) (let ((top-state (car yaml--states))) - (setcar yaml--states - (yaml-state-create :doc (yaml-state-doc top-state) - :tt (yaml-state-tt top-state) - :m (yaml-state-m top-state) - :name (yaml-state-m top-state) - :lvl (yaml-state-lvl top-state) - :beg (yaml-state-beg popped-state) - :end yaml--parsing-position))))) + (when top-state + (setcar yaml--states + (yaml-state-create :doc (yaml-state-doc top-state) + :tt (yaml-state-tt top-state) + :m (yaml-state-m top-state) + :name (yaml-state-name top-state) + :lvl (yaml-state-lvl top-state) + :beg (yaml-state-beg popped-state) + :end yaml--parsing-position)))))) (defun yaml--initialize-state () "Initialize the yaml state for parsing." @@ -1179,7 +1180,7 @@ Rules for this function are defined by the yaml-spec JSON file." ((eq state 'c-directives-end) (let () (yaml--frame "c-directives-end" (yaml--all (yaml--chr ?\-) (yaml--chr ?\-) (yaml--chr ?\-))))) ((eq state 's-double-break) (let ((n (nth 0 args))) (yaml--frame "s-double-break" (yaml--any (yaml--parse-from-grammar 's-double-escaped n) (yaml--parse-from-grammar 's-flow-folded n))))) ((eq state 's-nb-spaced-text) (let ((n (nth 0 args))) (yaml--frame "s-nb-spaced-text" (yaml--all (yaml--parse-from-grammar 's-indent n) (yaml--parse-from-grammar 's-white) (yaml--rep2 0 nil (lambda () (yaml--parse-from-grammar 'nb-char))))))) - ((eq state 'l-folded-content) (let ((n (nth 0 args)) (t (nth 1 args))) (yaml--frame "l-folded-content" (yaml--all (yaml--rep 0 1 (lambda () (yaml--all (yaml--parse-from-grammar 'l-nb-diff-lines n) (yaml--parse-from-grammar 'b-chomped-last (yaml--state-t))))) (yaml--parse-from-grammar 'l-chomped-empty n (yaml--state-t)))))) + ((eq state 'l-folded-content) (let ((n (nth 0 args)) (t (nth 1 args))) (yaml--frame "l-folded-content" (yaml--all (yaml--rep 0 1 (lambda () (yaml--all (yaml--parse-from-grammar 'l-nb-diff-lines n) (yaml--parse-from-grammar 'b-chomped-last t)))) (yaml--parse-from-grammar 'l-chomped-empty n t))))) ;; TODO: don't use yaml--state-t here ((eq state 'nb-ns-plain-in-line) (let ((c (nth 0 args))) (yaml--frame "nb-ns-plain-in-line" (yaml--rep2 0 nil (lambda () (yaml--all (yaml--rep2 0 nil (lambda () (yaml--parse-from-grammar 's-white))) (yaml--parse-from-grammar 'ns-plain-char c))))))) ((eq state 'nb-single-multi-line) (let ((n (nth 0 args))) (yaml--frame "nb-single-multi-line" (yaml--all (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 'l-document-suffix) (let () (yaml--frame "l-document-suffix" (yaml--all (yaml--parse-from-grammar 'c-document-end) (yaml--parse-from-grammar 's-l-comments))))) @@ -1242,7 +1243,7 @@ Rules for this function are defined by the yaml-spec JSON file." ((eq state 'c-chomping-indicator) (let ((t (nth 0 args))) (yaml--frame "c-chomping-indicator" (yaml--any (yaml--set t (yaml--parse-from-grammar 'strip)) (yaml--set t (yaml--parse-from-grammar 'keep)) (yaml--set t (yaml--parse-from-grammar 'clip)))))) ((eq state 'ns-global-tag-prefix) (let () (yaml--frame "ns-global-tag-prefix" (yaml--all (yaml--parse-from-grammar 'ns-tag-char) (yaml--rep2 0 nil (lambda () (yaml--parse-from-grammar 'ns-uri-char))))))) ((eq state 'c-ns-flow-pair-json-key-entry) (let ((n (nth 0 args)) (c (nth 1 args))) (yaml--frame "c-ns-flow-pair-json-key-entry" (yaml--all (yaml--parse-from-grammar 'c-s-implicit-json-key (yaml--parse-from-grammar 'flow-key)) (yaml--parse-from-grammar 'c-ns-flow-map-adjacent-value n c))))) - ((eq state 'l-literal-content) (let ((n (nth 0 args)) (t (nth 1 args))) (yaml--frame "l-literal-content" (yaml--all (yaml--rep 0 1 (lambda () (yaml--all (yaml--parse-from-grammar 'l-nb-literal-text n) (yaml--rep2 0 nil (lambda () (yaml--parse-from-grammar 'b-nb-literal-next n))) (yaml--parse-from-grammar 'b-chomped-last (yaml--state-t))))) (yaml--parse-from-grammar 'l-chomped-empty n (yaml--state-t)))))) + ((eq state 'l-literal-content) (let ((n (nth 0 args)) (t (nth 1 args))) (yaml--frame "l-literal-content" (yaml--all (yaml--rep 0 1 (lambda () (yaml--all (yaml--parse-from-grammar 'l-nb-literal-text n) (yaml--rep2 0 nil (lambda () (yaml--parse-from-grammar 'b-nb-literal-next n))) (yaml--parse-from-grammar 'b-chomped-last t)))) (yaml--parse-from-grammar 'l-chomped-empty n t))))) ((eq state 'c-document-end) (let () (yaml--frame "c-document-end" (yaml--all (yaml--chr ?\.) (yaml--chr ?\.) (yaml--chr ?\.))))) ((eq state 'nb-double-text) (let ((n (nth 0 args)) (c (nth 1 args))) (yaml--frame "nb-double-text" (cond ((equal c "block-key") (yaml--parse-from-grammar 'nb-double-one-line)) ((equal c "flow-in") (yaml--parse-from-grammar 'nb-double-multi-line n)) ((equal c "flow-key") (yaml--parse-from-grammar 'nb-double-one-line)) ((equal c "flow-out") (yaml--parse-from-grammar 'nb-double-multi-line n)))))) ((eq state 's-b-comment) (let () (yaml--frame "s-b-comment" (yaml--all (yaml--rep 0 1 (lambda () (yaml--all (yaml--parse-from-grammar 's-separate-in-line) (yaml--rep 0 1 (lambda () (yaml--parse-from-grammar 'c-nb-comment-text)))))) (yaml--parse-from-grammar 'b-comment))))) @@ -1317,7 +1318,19 @@ Rules for this function are defined by the yaml-spec JSON file." ((eq state 's-l+flow-in-block) (let ((n (nth 0 args))) (yaml--frame "s-l+flow-in-block" (yaml--all (yaml--parse-from-grammar 's-separate (+ n 1) "flow-out") (yaml--parse-from-grammar 'ns-flow-node (+ n 1) "flow-out") (yaml--parse-from-grammar 's-l-comments))))) ((eq state 'c-flow-json-node) (let ((n (nth 0 args)) (c (nth 1 args))) (yaml--frame "c-flow-json-node" (yaml--all (yaml--rep 0 1 (lambda () (yaml--all (yaml--parse-from-grammar 'c-ns-properties n c) (yaml--parse-from-grammar 's-separate n c)))) (yaml--parse-from-grammar 'c-flow-json-content n c))))) - ((eq state 'c-b-block-header) (let ((m (nth 0 args)) (t (nth 1 args))) (yaml--frame "c-b-block-header" (yaml--all (yaml--any (yaml--all (yaml--parse-from-grammar 'c-indentation-indicator (yaml--state-m)) (yaml--parse-from-grammar 'c-chomping-indicator (yaml--state-t))) (yaml--all (yaml--parse-from-grammar 'c-chomping-indicator (yaml--state-t)) (yaml--parse-from-grammar 'c-indentation-indicator (yaml--state-m)))) (yaml--parse-from-grammar 's-b-comment))))) + ((eq state 'c-b-block-header) + (let ((m (nth 0 args)) + (tt (nth 1 args))) + (yaml--frame "c-b-block-header" + (yaml--all (yaml--any + (yaml--all + (yaml--parse-from-grammar 'c-indentation-indicator m) ;; TODO: fix generator to not call state getter function + (yaml--parse-from-grammar 'c-chomping-indicator tt)) + (yaml--all + (yaml--parse-from-grammar 'c-chomping-indicator tt) + (yaml--parse-from-grammar 'c-indentation-indicator m))) + (yaml--parse-from-grammar 's-b-comment))))) + ((eq state 'ns-esc-8-bit) (let () (yaml--frame "ns-esc-8-bit" (yaml--all (yaml--chr ?\x) (yaml--rep 2 2 (lambda () (yaml--parse-from-grammar 'ns-hex-digit))))))) ((eq state 'ns-anchor-name) (let () (yaml--frame "ns-anchor-name" (yaml--rep 1 nil (lambda () (yaml--parse-from-grammar 'ns-anchor-char)))))) ((eq state 'ns-esc-slash) (let () (yaml--frame "ns-esc-slash" (yaml--chr ?\/))))