123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210 |
- /*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
- define(["require", "exports"], function (require, exports) {
- 'use strict';
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.conf = {
- comments: {
- lineComment: '#',
- },
- brackets: [['{', '}'], ['[', ']'], ['(', ')']],
- autoClosingPairs: [
- { open: '{', close: '}' },
- { open: '[', close: ']' },
- { open: '(', close: ')' },
- { open: '"', close: '"' },
- { open: "'", close: "'" },
- { open: '`', close: '`' },
- ],
- surroundingPairs: [
- { open: '{', close: '}' },
- { open: '[', close: ']' },
- { open: '(', close: ')' },
- { open: '"', close: '"' },
- { open: "'", close: "'" },
- { open: '`', close: '`' },
- ],
- };
- exports.language = {
- defaultToken: '',
- ignoreCase: true,
- tokenPostfix: '.shell',
- brackets: [
- { token: 'delimiter.bracket', open: '{', close: '}' },
- { token: 'delimiter.parenthesis', open: '(', close: ')' },
- { token: 'delimiter.square', open: '[', close: ']' },
- ],
- keywords: [
- 'if',
- 'then',
- 'do',
- 'else',
- 'elif',
- 'while',
- 'until',
- 'for',
- 'in',
- 'esac',
- 'fi',
- 'fin',
- 'fil',
- 'done',
- 'exit',
- 'set',
- 'unset',
- 'export',
- 'function',
- ],
- builtins: [
- 'ab',
- 'awk',
- 'bash',
- 'beep',
- 'cat',
- 'cc',
- 'cd',
- 'chown',
- 'chmod',
- 'chroot',
- 'clear',
- 'cp',
- 'curl',
- 'cut',
- 'diff',
- 'echo',
- 'find',
- 'gawk',
- 'gcc',
- 'get',
- 'git',
- 'grep',
- 'hg',
- 'kill',
- 'killall',
- 'ln',
- 'ls',
- 'make',
- 'mkdir',
- 'openssl',
- 'mv',
- 'nc',
- 'node',
- 'npm',
- 'ping',
- 'ps',
- 'restart',
- 'rm',
- 'rmdir',
- 'sed',
- 'service',
- 'sh',
- 'shopt',
- 'shred',
- 'source',
- 'sort',
- 'sleep',
- 'ssh',
- 'start',
- 'stop',
- 'su',
- 'sudo',
- 'svn',
- 'tee',
- 'telnet',
- 'top',
- 'touch',
- 'vi',
- 'vim',
- 'wall',
- 'wc',
- 'wget',
- 'who',
- 'write',
- 'yes',
- 'zsh',
- ],
- // we include these common regular expressions
- symbols: /[=><!~?&|+\-*\/\^;\.,]+/,
- // The main tokenizer for our languages
- tokenizer: {
- root: [
- { include: '@whitespace' },
- [
- /[a-zA-Z]\w*/,
- {
- cases: {
- '@keywords': 'keyword',
- '@builtins': 'type.identifier',
- '@default': ''
- },
- },
- ],
- { include: '@strings' },
- { include: '@parameters' },
- { include: '@heredoc' },
- [/[{}\[\]()]/, '@brackets'],
- [/-+\w+/, 'attribute.name'],
- [/@symbols/, 'delimiter'],
- { include: '@numbers' },
- [/[,;]/, 'delimiter'],
- ],
- whitespace: [
- [/\s+/, 'white'],
- [/(^#!.*$)/, 'metatag'],
- [/(^#.*$)/, 'comment'],
- ],
- numbers: [
- [/\d*\.\d+([eE][\-+]?\d+)?/, 'number.float'],
- [/0[xX][0-9a-fA-F_]*[0-9a-fA-F]/, 'number.hex'],
- [/\d+/, 'number'],
- ],
- // Recognize strings, including those broken across lines
- strings: [
- [/'/, 'string', '@stringBody'],
- [/"/, 'string', '@dblStringBody']
- ],
- stringBody: [
- [/'/, 'string', '@popall'],
- [/./, 'string'],
- ],
- dblStringBody: [
- [/"/, 'string', '@popall'],
- [/./, 'string'],
- ],
- heredoc: [
- [/(<<[-<]?)(\s*)(['"`]?)([\w\-]+)(['"`]?)/, ['constants', 'white', 'string.heredoc.delimiter', 'string.heredoc', 'string.heredoc.delimiter']]
- ],
- parameters: [
- [/\$\d+/, 'variable.predefined'],
- [/\$\w+/, 'variable'],
- [/\$[*@#?\-$!0_]/, 'variable'],
- [/\$'/, 'variable', '@parameterBodyQuote'],
- [/\$"/, 'variable', '@parameterBodyDoubleQuote'],
- [/\$\(/, 'variable', '@parameterBodyParen'],
- [/\$\{/, 'variable', '@parameterBodyCurlyBrace'],
- ],
- parameterBodyQuote: [
- [/[^#:%*@\-!_']+/, 'variable'],
- [/[#:%*@\-!_]/, 'delimiter'],
- [/[']/, 'variable', '@pop'],
- ],
- parameterBodyDoubleQuote: [
- [/[^#:%*@\-!_"]+/, 'variable'],
- [/[#:%*@\-!_]/, 'delimiter'],
- [/["]/, 'variable', '@pop'],
- ],
- parameterBodyParen: [
- [/[^#:%*@\-!_)]+/, 'variable'],
- [/[#:%*@\-!_]/, 'delimiter'],
- [/[)]/, 'variable', '@pop'],
- ],
- parameterBodyCurlyBrace: [
- [/[^#:%*@\-!_}]+/, 'variable'],
- [/[#:%*@\-!_]/, 'delimiter'],
- [/[}]/, 'variable', '@pop'],
- ],
- }
- };
- });
|