filetype: git-commit

detect:
    filename: "^(.*[\\/])?(COMMIT_EDITMSG|TAG_EDITMSG|MERGE_MSG|git-rebase-todo)$"

rules:
    # File changes
    - type.keyword: "#[[:space:]](deleted|modified|new file|renamed):[[:space:]].*"
    - type.keyword: "#[[:space:]]deleted:"
    - type.keyword: "#[[:space:]]modified:"
    - type.keyword: "#[[:space:]]new file:"
    - type.keyword: "#[[:space:]]renamed:"
    - type.keyword: "^#[[:space:]]Changes.*[:]"
    - type.keyword: "^#[[:space:]]Your branch and '[^']+"
    - type.keyword: "^#[[:space:]]Your branch and '"
    - type.keyword: "^#[[:space:]]On branch [^ ]+"
    - type.keyword: "^#[[:space:]]On branch"
    # Color keywords for closing issues (such as on Github)
    - type.keyword: "\\b(?i)((fix(es|ed)?|close(s|d)?) #[0-9]+)\\b"

    # Comments
    - comment.line:
        start: "^#"
        end: "$"
        rules: []

    # Diffs (i.e. git commit --verbose)
    - default:
        start: "^diff --git"
        # Diff output puts a space before file contents on each line so this
        # should never match valid diff output and extend highlighting to the
        # end of the file
        end: "^ENDOFFILE"
        limit-group: "magenta"
        rules:
            - include: "patch"
