[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/yaml-mode 6555018 003/124: Merged branch(TEST-MARSHALL-PAT
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/yaml-mode 6555018 003/124: Merged branch(TEST-MARSHALL-PATCH@17) to trunk |
Date: |
Sun, 29 Aug 2021 11:36:02 -0400 (EDT) |
branch: elpa/yaml-mode
commit 65550183997c925fbc62419bc51e13f94a495a8b
Author: yoshiki <yoshiki@c9fe89ab-c918-0410-b9be-faebe9bd2962>
Commit: yoshiki <yoshiki@c9fe89ab-c918-0410-b9be-faebe9bd2962>
Merged branch(TEST-MARSHALL-PATCH@17) to trunk
git-svn-id: http://svn.clouder.jp/repos/public/yaml-mode/trunk@18
c9fe89ab-c918-0410-b9be-faebe9bd2962
---
Changes | 9 ++
README | 25 +++-
yaml-mode.el | 401 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------
3 files changed, 382 insertions(+), 53 deletions(-)
diff --git a/Changes b/Changes
new file mode 100644
index 0000000..56ce582
--- /dev/null
+++ b/Changes
@@ -0,0 +1,9 @@
+0.0.2 Fri Aug 25 18:04:01 2006 JST
+ - Patch from Marshall T. Vandegrift. Added lots of features.
+ * Added face used for YAML node anchors and aliases to
+ `font-lock-function-name-face'.
+ * Added face used for YAML tags to `font-lock-type-face'.
+ See http://www.yaml.org/refcard.html
+
+0.0.1 Fri Jan 21 03:18:00 2006 JST
+ - original version
diff --git a/README b/README
index cb426c7..2a8f969 100644
--- a/README
+++ b/README
@@ -1,11 +1,26 @@
NAME
yaml-mode - Simple major mode to edit YAML file for emacs
+VERSION
+ 1.2
+
SYNOPSIS
- # You must add path installed yaml-mode.el to load-path.
- (autoload 'yaml-mode "yaml-mode" "YAML" t)
- (setq auto-mode-alist
- (append '(("\\.yml$" . yaml-mode)) auto-mode-alist))
+ To install, just drop this file into a directory in your
+ `load-path' and (optionally) byte-compile it. To automatically
+ handle files ending in '.yml', add something like:
+
+ (require 'yaml-mode)
+ (add-to-list 'auto-mode-alist '("\\.yml$" . yaml-mode))
+
+ to your .emacs file.
+
+ Unlike python-mode, this mode follows the Emacs convention of not
+ binding the ENTER key to `newline-and-indent'. To get this
+ behavior, add the key definition to `yaml-mode-hook':
+
+ (add-hook 'yaml-mode-hook
+ '(lambda ()
+ (define-key yaml-mode-map "\C-m" 'newline-and-indent)))
DESCRIPTION
yaml-mode is major mode for emacs.
@@ -25,7 +40,7 @@ SETTING
see SYNOPSIS.
AUTHOR
- Yoshiki Kurihara <kurihara@cpan.org> Copyright (C) 2002 by Free Software
+ Yoshiki Kurihara <kurihara@cpan.org> Copyright (C) 2006 by Free Software
Foundation, Inc.
This file is free software; you can redistribute it and/or modify it
diff --git a/yaml-mode.el b/yaml-mode.el
index 1fa11a6..394dcf8 100644
--- a/yaml-mode.el
+++ b/yaml-mode.el
@@ -1,10 +1,13 @@
-;;; yaml-mode.el ---
-;; $Id$
+;;; yaml-mode.el --- Major mode for editing YAML files
-;; Copyright (C) 2006 Free Software Foundation, Inc.
+;; Copyright (C) 2006 Yoshiki Kurihara
;; Author: Yoshiki Kurihara <kurihara@cpan.org>
-;; Keywords:
+;; Marshall T. Vandegrift <llasram@gmail.com>
+;; Keywords: data yaml
+;; Version: 0.0.2
+
+;; This file is not part of Emacs
;; This file is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
@@ -23,63 +26,365 @@
;;; Commentary:
-;; To handle files included with do 'filename.yml';, add something like
-;; (setq auto-mode-alist (append (list (cons "\\.yml\\'" 'yaml-mode))
-;; auto-mode-alist))
-;; to your .emacs file; otherwise the .pl suffix defaults to prolog-mode.
+;; This is a major mode for editing files in the YAML data
+;; serialization format. It was initially developed by Yoshiki
+;; Kurihara and many features were added by Marshall Vandegrift. As
+;; YAML and Python share the fact that indentation determines
+;; structure, this mode provides indentation and indentation command
+;; behavior very similar to that of python-mode.
+
+;;; Installation:
+
+;; To install, just drop this file into a directory in your
+;; `load-path' and (optionally) byte-compile it. To automatically
+;; handle files ending in '.yml', add something like:
+;;
+;; (require 'yaml-mode)
+;; (add-to-list 'auto-mode-alist '("\\.yml$" . yaml-mode))
+;;
+;; to your .emacs file.
+;;
+;; Unlike python-mode, this mode follows the Emacs convention of not
+;; binding the ENTER key to `newline-and-indent'. To get this
+;; behavior, add the key definition to `yaml-mode-hook':
+;;
+;; (add-hook 'yaml-mode-hook
+;; '(lambda ()
+;; (define-key yaml-mode-map "\C-m" 'newline-and-indent)))
+
+;;; Known Bugs:
+
+;; YAML is easy to write but complex to parse, and this mode doesn't
+;; even really try. Indentation and highlighting will break on
+;; abnormally complicated structures.
;;; Code:
+
+;; User definable variables
+
+(defgroup yaml nil
+ "Support for the YAML serialization format"
+ :group 'languages
+ :prefix "yaml-")
+
+(defcustom yaml-mode-hook nil
+ "*Hook run by `yaml-mode'."
+ :type 'hook
+ :group 'yaml)
+
(defcustom yaml-indent-offset 2
- ""
+ "*Amount of offset per level of indentation."
:type 'integer
- :group 'yaml-mode)
+ :group 'yaml)
-(defun yaml-indent-line ()
- (interactive)
- (let ((pos (point)) ; position from the end of the buffer
- (cur (current-indentation)) ; indentation of current line
- (before (current-column))
- (indentation 0)
- new-column)
- (save-excursion
- (forward-line -1)
- (if (and (not (bobp))
- (looking-at "^[ \t]*\\(.+\\)[ \t]*:[ \r\n]"))
- (if (< cur (+ (current-indentation) yaml-indent-offset))
- (setq indentation (+ (current-indentation) yaml-indent-offset)))
- (if (< cur (current-indentation))
- (setq indentation (current-indentation))))
- (if (and (not (bobp))
- (looking-at "^[ \t]*\\(.+\\)[ \t]*: [^\r\n]+"))
- (if (< cur (+ (current-indentation) yaml-indent-offset))
- (setq indentation (current-indentation))))
- )
- (if (> indentation 0)
- (indent-line-to indentation))
- ))
+(defcustom yaml-backspace-function 'backward-delete-char-untabify
+ "*Function called by `yaml-electric-backspace' when deleting backwards."
+ :type 'function
+ :group 'yaml)
-(defvar yaml-font-lock-keywords
- (list
- '("^[ \t]*\\(.+\\)[ \t]*:[ \r\n]" 0 font-lock-variable-name-face)
- '("\\(%YAML\\|# \\(.*\\)\\|\\(---\\|\\.\\.\\.\\)\\(.*\\)\\)" 0
font-lock-comment-face)
- '("\\(\\*\\|\\&\\)\\(.*\\)" 0 (cons font-lock-variable-name-face
'(underline)))
- '("\\!\\!\\sw+[ \r\n]" 0 font-lock-function-name-face)
- ))
+(defcustom yaml-block-literal-search-lines 100
+ "*Maximum number of lines to search for start of block literals."
+ :type 'integer
+ :group 'yaml)
+
+(defcustom yaml-block-literal-electric-alist
+ '((?| . "") (?> . "-"))
+ "*Characters for which to provide electric behavior.
+The association list key should be a key code and the associated value
+should be a string containing additional characters to insert when
+that key is pressed to begin a block literal."
+ :type 'alist
+ :group 'yaml)
+
+(defface yaml-tab-face
+ '((((class color)) (:background "red" :foreground "red" :bold t))
+ (t (:reverse-video t)))
+ "Face to use for highlighting tabs in YAML files."
+ :group 'faces
+ :group 'yaml)
+
+
+;; Constants
+
+(defconst yaml-mode-version "0.0.2" "Version of `yaml-mode.'")
+
+(defconst yaml-blank-line-re "^ *$"
+ "Regexp matching a line containing only (valid) whitespace.")
+
+(defconst yaml-comment-re "\\(?:^\\|\\s-+\\)\\(#.*\\)"
+ "Regexp matching a line containing a YAML comment or delimiter.")
+
+(defconst yaml-directive-re "^\\(?:--- \\)? *%\\(\\w+\\)"
+ "Regexp matching a line contatining a YAML directive.")
+
+(defconst yaml-document-delimiter-re "^ *\\(?:---\\|[.][.][.]\\)"
+ "Rexexp matching a YAML document delimiter line.")
+
+(defconst yaml-node-anchor-alias-re "[&*]\\w+"
+ "Regexp matching a YAML node anchor or alias.")
+
+(defconst yaml-tag-re "!!?[^ \n]+"
+ "Rexexp matching a YAML tag.")
+
+(defconst yaml-bare-scalar-re
+ "\\(?:[^-:,#!\n ]\\|[^#!\n ]\\S-\\)[^\n]*?"
+ "Rexexp matching a YAML bare scalar.")
+
+(defconst yaml-hash-key-re
+ (concat "\\(?:^\\(?:--- \\)?\\|{\\|\\(?:[-,] +\\)+\\) *"
+ "\\(?:" yaml-tag-re " +\\)?"
+ "\\(" yaml-bare-scalar-re "\\) *:"
+ "\\(?: +\\|$\\)")
+ "Regexp matching a single YAML hash key.")
+
+(defconst yaml-scalar-context-re
+ (concat "\\(?:^\\(?:--- \\)?\\|{\\|\\(?:[-,] +\\)+\\) *"
+ "\\(?:" yaml-bare-scalar-re " *: \\)?")
+ "Regexp indicating the begininng of a scalar context.")
+
+(defconst yaml-nested-map-re
+ (concat ".*: *\\(?:&.*\\|{ *\\|" yaml-tag-re " *\\)?$")
+ "Regexp matching a line beginning a YAML nested structure.")
+
+(defconst yaml-block-literal-base-re " *[>|][-+0-9]* *\n"
+ "Regexp matching the substring start of a block literal.")
+
+(defconst yaml-block-literal-re
+ (concat yaml-scalar-context-re
+ "\\(?:" yaml-tag-re "\\)?"
+ yaml-block-literal-base-re)
+ "Regexp matching a line beginning a YAML block literal")
+
+(defconst yaml-nested-sequence-re
+ (concat "^\\(?: *- +\\)+"
+ "\\(?:" yaml-bare-scalar-re " *:\\(?: +.*\\)?\\)?$")
+ "Regexp matching a line containing one or more nested YAML sequences")
+
+(defconst yaml-constant-scalars-re
+ (concat "\\(?:^\\|\\(?::\\|-\\|,\\|{\\|\\[\\) +\\) *"
+ (regexp-opt
+ '("~" "null" "Null" "NULL"
+ ".nan" ".NaN" ".NAN"
+ ".inf" ".Inf" ".INF"
+ "-.inf" "-.Inf" "-.INF"
+ "y" "Y" "yes" "Yes" "YES" "n" "N" "no" "No" "NO"
+ "true" "True" "TRUE" "false" "False" "FALSE"
+ "on" "On" "ON" "off" "Off" "OFF") t)
+ " *$")
+ "Regexp matching certain scalar constants in scalar context")
+
+
+;; Mode setup
+
+(defvar yaml-mode-map ()
+ "Keymap used in `yaml-mode' buffers.")
+(if yaml-mode-map
+ nil
+ (setq yaml-mode-map (make-sparse-keymap))
+ (define-key yaml-mode-map "|" 'yaml-electric-bar-and-angle)
+ (define-key yaml-mode-map ">" 'yaml-electric-bar-and-angle)
+ (define-key yaml-mode-map "-" 'yaml-electric-dash-and-dot)
+ (define-key yaml-mode-map "." 'yaml-electric-dash-and-dot)
+ (define-key yaml-mode-map [backspace] 'yaml-electric-backspace)
+ (define-key yaml-mode-map "\C-j" 'newline-and-indent))
+
+(defvar yaml-mode-syntax-table nil
+ "Syntax table in use in yaml-mode buffers.")
+(if yaml-mode-syntax-table
+ nil
+ (setq yaml-mode-syntax-table (make-syntax-table))
+ (modify-syntax-entry ?\' "\"" yaml-mode-syntax-table)
+ (modify-syntax-entry ?\" "\"" yaml-mode-syntax-table)
+ (modify-syntax-entry ?# "." yaml-mode-syntax-table)
+ (modify-syntax-entry ?\\ "\\" yaml-mode-syntax-table)
+ (modify-syntax-entry ?- "." yaml-mode-syntax-table)
+ (modify-syntax-entry ?_ "_" yaml-mode-syntax-table)
+ (modify-syntax-entry ?\( "." yaml-mode-syntax-table)
+ (modify-syntax-entry ?\) "." yaml-mode-syntax-table)
+ (modify-syntax-entry ?\{ "(}" yaml-mode-syntax-table)
+ (modify-syntax-entry ?\} "){" yaml-mode-syntax-table)
+ (modify-syntax-entry ?\[ "(]" yaml-mode-syntax-table)
+ (modify-syntax-entry ?\] ")[" yaml-mode-syntax-table))
(define-derived-mode yaml-mode fundamental-mode "YAML"
- "Simple mode to edit yaml
+ "Simple mode to edit YAML.
\\{yaml-mode-map}"
+ (set (make-local-variable 'comment-start) "\\(?:^\\|\\s-+\\)#")
+ (set (make-local-variable 'comment-start-skip) "\\(^\\|\\s-+\\)#+ *")
+ (set (make-local-variable 'indent-line-function) 'yaml-indent-line)
+ (set (make-local-variable 'font-lock-defaults)
+ '(yaml-font-lock-keywords
+ nil nil nil nil
+ (font-lock-syntactic-keywords . yaml-font-lock-syntactic-keywords))))
+
+
+;; Font-lock support
+
+(defvar yaml-font-lock-keywords
+ (list
+ (cons yaml-comment-re '(1 font-lock-comment-face))
+ (cons yaml-constant-scalars-re '(1 font-lock-constant-face))
+ (cons yaml-tag-re '(0 font-lock-type-face))
+ (cons yaml-node-anchor-alias-re '(0 font-lock-function-name-face))
+ (cons yaml-hash-key-re '(1 font-lock-variable-name-face))
+ (cons yaml-document-delimiter-re '(0 font-lock-comment-face))
+ (cons yaml-directive-re '(1 font-lock-builtin-face))
+ '(yaml-font-lock-block-literals 0 font-lock-string-face t)
+ '("^[\t]+" 0 'yaml-tab-face t))
+ "Additional expressions to highlight in YAML mode.")
+
+(defvar yaml-font-lock-syntactic-keywords
+ (list '(yaml-syntactic-block-literals 0 "." t))
+ "Additional syntax features to highlight in YAML mode.")
+
+
+(defun yaml-font-lock-block-literals (bound)
+ "Find lines within block literals.
+Find the next line of the first (if any) block literal after point and
+prior to BOUND. Returns the beginning and end of the block literal
+line in the match data, as consumed by `font-lock-keywords' matcher
+functions. The function begins by searching backwards to determine
+whether or not the current line is within a block literal. This could
+be time-consuming in large buffers, so the number of lines searched is
+artificially limitted to the value of
+`yaml-block-literal-search-lines'."
+ (if (eolp) (goto-char (1+ (point))))
+ (unless (or (eobp) (>= (point) bound))
+ (let ((begin (point))
+ (end (min (point-at-eol) bound)))
+ (beginning-of-line)
+ (while (and (looking-at yaml-blank-line-re) (not (bobp)))
+ (forward-line -1))
+ (let ((level (current-indentation))
+ (nlines yaml-block-literal-search-lines))
+ (unless (= level 0)
+ (forward-line -1)
+ (while (and (/= nlines 0)
+ (or (>= (current-indentation) level)
+ (looking-at yaml-blank-line-re))
+ (not (bobp)))
+ (set 'nlines (1- nlines))
+ (forward-line -1)))
+ (cond
+ ((and (< (current-indentation) level)
+ (looking-at yaml-block-literal-re))
+ (goto-char end) (set-match-data (list begin end)) t)
+ ((progn
+ (goto-char begin)
+ (re-search-forward (concat yaml-block-literal-re
+ " *\\(.*\\)\n")
+ bound t))
+ (set-match-data (nthcdr 2 (match-data))) t))))))
+
+(defun yaml-syntactic-block-literals (bound)
+ "Find quote characters within block literals.
+Finds the first quote character within a block literal (if any) after
+point and prior to BOUND. Returns the position of the quote character
+in the match data, as consumed by matcher functions in
+`font-lock-syntactic-keywords'. This allows the mode to treat ['\"]
+characters in block literals as punctuation syntax instead of string
+syntax, preventing unmatched quotes in block literals from painting
+the entire buffer in `font-lock-string-face'."
+ (let ((found nil))
+ (while (and (not found)
+ (/= (point) bound)
+ (yaml-font-lock-block-literals bound))
+ (let ((begin (match-beginning 0)) (end (match-end 0)))
+ (goto-char begin)
+ (cond
+ ((re-search-forward "['\"]" end t) (setq found t))
+ ((goto-char end)))))
+ found))
+
+
+;; Indentation and electric keys
+
+(defun yaml-compute-indentation ()
+ "Calculate the maximum sensible indentation for the current line."
+ (save-excursion
+ (beginning-of-line)
+ (if (looking-at yaml-document-delimiter-re) 0
+ (forward-line -1)
+ (while (and (looking-at yaml-blank-line-re)
+ (> (point) (point-min)))
+ (forward-line -1))
+ (+ (current-indentation)
+ (if (looking-at yaml-nested-map-re) yaml-indent-offset 0)
+ (if (looking-at yaml-nested-sequence-re) yaml-indent-offset 0)
+ (if (looking-at yaml-block-literal-re) yaml-indent-offset 0)))))
+
+(defun yaml-indent-line ()
+ "Indent the current line.
+The first time this command is used, the line will be indented to the
+maximum sensible indentation. Each immediately subsequent usage will
+back-dent the line by `yaml-indent-offset' spaces. On reaching column
+0, it will cycle back to the maximum sensible indentation."
+ (interactive "*")
+ (let ((ci (current-indentation))
+ (cc (current-column))
+ (need (yaml-compute-indentation)))
+ (save-excursion
+ (beginning-of-line)
+ (delete-horizontal-space)
+ (if (and (equal last-command this-command) (/= ci 0))
+ (indent-to (* (/ (- ci 1) yaml-indent-offset) yaml-indent-offset))
+ (indent-to need)))
+ (if (< (current-column) (current-indentation))
+ (forward-to-indentation 0))))
+
+(defun yaml-electric-backspace (arg)
+ "Delete characters or back-dent the current line.
+If invoked following only whitespace on a line, will back-dent to the
+immediately previous multiple of `yaml-indent-offset' spaces."
+ (interactive "*p")
+ (if (or (/= (current-indentation) (current-column)) (bolp))
+ (funcall yaml-backspace-function arg)
+ (let ((ci (current-column)))
+ (beginning-of-line)
+ (delete-horizontal-space)
+ (indent-to (* (/ (- ci (* arg yaml-indent-offset))
+ yaml-indent-offset)
+ yaml-indent-offset)))))
- ;; font-lock
- (set (make-local-variable 'comment-start) "# ")
- (set (make-local-variable 'comment-start-skip) "\\(^\\|\\s-\\);?#+ *")
- (set (make-local-variable 'font-lock-defaults) '(yaml-font-lock-keywords))
+(defun yaml-electric-bar-and-angle (arg)
+ "Insert the bound key and possibly begin a block literal.
+Inserts the bound key. If inserting the bound key causes the current
+line to match the initial line of a block literal, then inserts the
+matching string from `yaml-block-literal-electric-alist', a newline,
+and indents appropriately."
+ (interactive "*P")
+ (self-insert-command (prefix-numeric-value arg))
+ (let ((extra-chars
+ (assoc last-command-char
+ yaml-block-literal-electric-alist)))
+ (cond
+ ((and extra-chars (not arg) (eolp)
+ (save-excursion
+ (beginning-of-line)
+ (looking-at yaml-block-literal-re)))
+ (insert (cdr extra-chars))
+ (newline-and-indent)))))
- ;; indent-line
- (set (make-local-variable 'indent-line-function) 'yaml-indent-line)
- )
+(defun yaml-electric-dash-and-dot (arg)
+ "Insert the bound key and possibly de-dent line.
+Inserts the bound key. If inserting the bound key causes the current
+line to match a document delimiter, de-dent the line to the left
+margin."
+ (interactive "*P")
+ (self-insert-command (prefix-numeric-value arg))
+ (save-excursion
+ (beginning-of-line)
+ (if (and (not arg) (looking-at yaml-document-delimiter-re))
+ (delete-horizontal-space))))
+
+(defun yaml-mode-version ()
+ "Diplay version of `yaml-mode'."
+ (interactive)
+ (message "yaml-mode %s" yaml-mode-version)
+ yaml-mode-version)
(provide 'yaml-mode)
+
;;; yaml-mode.el ends here
- [nongnu] elpa/yaml-mode 4c1127c 037/124: Improve paragraph filling of block literals, (continued)
- [nongnu] elpa/yaml-mode 4c1127c 037/124: Improve paragraph filling of block literals, ELPA Syncer, 2021/08/29
- [nongnu] elpa/yaml-mode d88c80a 053/124: allow spaces before dash-newline, ELPA Syncer, 2021/08/29
- [nongnu] elpa/yaml-mode 4e69e6e 059/124: update address for FSF, ELPA Syncer, 2021/08/29
- [nongnu] elpa/yaml-mode a4794ea 070/124: Mark non-negative integer values for indent safe, ELPA Syncer, 2021/08/29
- [nongnu] elpa/yaml-mode 28c3403 085/124: Merge pull request #54 from jfrederickson/whitespace-document-separator, ELPA Syncer, 2021/08/29
- [nongnu] elpa/yaml-mode 7f41037 087/124: Merge pull request #57 from Kaali/master, ELPA Syncer, 2021/08/29
- [nongnu] elpa/yaml-mode 0aceaf3 100/124: Merge pull request #73 from tarsiiformes/typos, ELPA Syncer, 2021/08/29
- [nongnu] elpa/yaml-mode 9e8362d 110/124: Merge pull request #76 from dgutov/spf-speedup, ELPA Syncer, 2021/08/29
- [nongnu] elpa/yaml-mode 97d507f 048/124: Derive from text-mode, ELPA Syncer, 2021/08/29
- [nongnu] elpa/yaml-mode f49fb81 123/124: Add magic-mode-list entry, ELPA Syncer, 2021/08/29
- [nongnu] elpa/yaml-mode 6555018 003/124: Merged branch(TEST-MARSHALL-PATCH@17) to trunk,
ELPA Syncer <=
- [nongnu] elpa/yaml-mode 4ce371e 013/124: Removed version from README., ELPA Syncer, 2021/08/29
- [nongnu] elpa/yaml-mode 1fa61ec 016/124: Fixed bug for tabified indent., ELPA Syncer, 2021/08/29
- [nongnu] elpa/yaml-mode b751113 021/124: Merge pull request #5 from sugyan/master, ELPA Syncer, 2021/08/29
- [nongnu] elpa/yaml-mode c2ac933 023/124: changed version, ELPA Syncer, 2021/08/29
- [nongnu] elpa/yaml-mode b15a8ff 028/124: fix anchor name can contain '_', ELPA Syncer, 2021/08/29
- [nongnu] elpa/yaml-mode 67b8355 042/124: Merge pull request #21 from wentasah/fill-paragraph, ELPA Syncer, 2021/08/29
- [nongnu] elpa/yaml-mode 2941501 043/124: Merge pull request #29 from tarsius/font-lock-ensure, ELPA Syncer, 2021/08/29
- [nongnu] elpa/yaml-mode eb46305 052/124: rename test-file, ELPA Syncer, 2021/08/29
- [nongnu] elpa/yaml-mode a96d09d 054/124: Description of behaviour updated., ELPA Syncer, 2021/08/29
- [nongnu] elpa/yaml-mode 73951dd 055/124: added test files, ELPA Syncer, 2021/08/29