1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
use super::Syntax;
use std::collections::BTreeSet;

impl Syntax {
    #[must_use]
    pub fn shell() -> Self {
        Syntax {
            language: "Shell",
            case_sensitive: true,
            comment: "#",
            keywords: BTreeSet::from([
                "echo", "read", "set", "unset", "readonly", "shift", "export", "if", "fi", "else",
                "while", "do", "done", "for", "until", "case", "esac", "break", "continue", "exit",
                "return", "trap", "wait", "eval", "exec", "ulimit", "umask",
            ]),
            comment_multiline: [": '", "'"],
            types: BTreeSet::from([
                "ENV",
                "HOME",
                "IFS",
                "LANG",
                "LC_ALL",
                "LC_COLLATE",
                "LC_CTYPE",
                "LC_MESSAGES",
                "LINENO",
                "NLSPATH",
                "PATH",
                "PPID",
                "PS1",
                "PS2",
                "PS4",
                "PWD",
            ]),
            special: BTreeSet::from([
                "alias", "bg", "cd", "command", "false", "fc", "fg", "getopts", "jobs", "kill",
                "newgrp", "pwd", "read", "true", "umask", "unalias", "wait",
            ]),
        }
    }
}