├── .editorconfig ├── .gitignore ├── .gitmodules ├── Installed Packages ├── .gitignore ├── LSP.sublime-package └── Package Control.sublime-package ├── Packages ├── .gitignore ├── BetterFindBuffer │ ├── .no-sublime-package │ ├── BetterFindBuffer.sublime-settings │ ├── Default.sublime-keymap │ ├── Find Results.hidden-tmLanguage │ ├── Find Results.sublime-settings │ ├── FindResults.hidden-tmTheme │ ├── LICENSE │ ├── Main.sublime-menu │ ├── README.md │ ├── Symbol List - Find Results Header.tmPreferences │ ├── Symbol List - Find Results.tmPreferences │ ├── find_results.py │ ├── messages.json │ ├── messages │ │ ├── 1.0.0.txt │ │ └── install.txt │ ├── package-metadata.json │ └── shortcuts.html ├── C++ │ ├── C Single File.sublime-build │ ├── C++ Single File.sublime-build │ └── custom_snippets │ │ ├── customized │ │ ├── hello-world-c.sublime-snippet │ │ ├── hello-world-cpp.sublime-snippet │ │ ├── main-function.sublime-snippet │ │ └── readfile-into-vector.sublime-snippet │ │ ├── data_type │ │ ├── class.sublime-snippet │ │ ├── const_cast.sublime-snippet │ │ ├── dynamic_cast.sublime-snippet │ │ ├── enum.sublime-snippet │ │ ├── map.sublime-snippet │ │ ├── pair.sublime-snippet │ │ ├── reinterpret_cast.sublime-snippet │ │ ├── set.sublime-snippet │ │ ├── static_cast.sublime-snippet │ │ ├── struct.sublime-snippet │ │ ├── typedef.sublime-snippet │ │ └── vector.sublime-snippet │ │ ├── flow_control │ │ ├── case.sublime-snippet │ │ ├── else-if.sublime-snippet │ │ ├── else.sublime-snippet │ │ ├── goto.sublime-snippet │ │ ├── if-else.sublime-snippet │ │ ├── if.sublime-snippet │ │ └── switch-case.sublime-snippet │ │ ├── function │ │ ├── constexpr_function.sublime-snippet │ │ ├── fprintf.sublime-snippet │ │ ├── function.sublime-snippet │ │ ├── printf.sublime-snippet │ │ └── regular_function.sublime-snippet │ │ ├── functor │ │ ├── binary_template_functor.sublime-snippet │ │ ├── functor.sublime-snippet │ │ └── unary_template_functor.sublime-snippet │ │ ├── lambda │ │ ├── catchallbyref.sublime-snippet │ │ ├── catchallbyvalue.sublime-snippet │ │ ├── full.sublime-snippet │ │ ├── lamret.sublime-snippet │ │ └── minimal.sublime-snippet │ │ ├── loop │ │ ├── do-while.sublime-snippet │ │ ├── for.sublime-snippet │ │ ├── forr.sublime-snippet │ │ ├── forv.sublime-snippet │ │ └── while.sublime-snippet │ │ ├── others │ │ ├── beginend.sublime-snippet │ │ ├── exception.sublime-snippet │ │ ├── namespace.sublime-snippet │ │ └── try-catch.sublime-snippet │ │ ├── preprocessor │ │ ├── #define.sublime-snippet │ │ ├── #ifdef.sublime-snippet │ │ ├── #ifndef-#define-#endif.sublime-snippet │ │ ├── #include(angle).sublime-snippet │ │ ├── #include(quote).sublime-snippet │ │ ├── clang_greater_version.sublime-snippet │ │ ├── clang_less.sublime-snippet │ │ ├── gcc_greater.sublime-snippet │ │ └── gcc_less.sublime-snippet │ │ ├── template │ │ ├── template.sublime-snippet │ │ ├── templated_class.sublime-snippet │ │ ├── templated_function.sublime-snippet │ │ ├── templated_function_auto.sublime-snippet │ │ ├── templated_function_auto_constexpr.sublime-snippet │ │ ├── templated_function_constexpr.sublime-snippet │ │ ├── templated_struct.sublime-snippet │ │ └── variadic_template.sublime-snippet │ │ └── traits │ │ └── inheritance-type-trait.sublime-snippet ├── Default │ ├── .gitignore │ ├── new_templates.py │ └── pyproject.toml ├── Diff │ └── Diff.sublime-syntax ├── DoxyDoxygen (evolution) │ ├── INI.sublime-syntax │ └── WTF.txt ├── Groovy │ └── Groovy.sublime-syntax ├── HyperClick │ └── html │ │ └── ui.css ├── JavaScript │ ├── Indentation Rules.tmPreferences │ ├── JavaScript.sublime-build │ └── Snippets │ │ └── arrow-function.sublime-snippet ├── LSP │ └── icons │ │ ├── error-src.png │ │ ├── error.png │ │ ├── error@2x.png │ │ ├── error@3x.png │ │ ├── info-src.png │ │ ├── info.png │ │ ├── info@2x.png │ │ ├── info@3x.png │ │ ├── warning-src.png │ │ ├── warning.png │ │ ├── warning@2x.png │ │ └── warning@3x.png ├── Language - English │ ├── README_en_US-large.txt │ ├── download.txt │ ├── en_US-large.aff │ └── en_US-large.dic ├── LiveReload-plugins │ └── MarkdownLiveReload.py ├── Makefile │ ├── Make (self).sublime-build │ └── snippets │ │ └── dot-phony.sublime-snippet ├── Markdown │ ├── .python-version │ ├── Snippets │ │ └── details.sublime-snippet │ └── Symbol List - Heading.tmPreferences ├── PHP │ ├── Default.sublime-keymap │ ├── Snippets │ │ ├── Constructor.sublime-snippet │ │ ├── class-{-}.sublime-snippet │ │ ├── interface-{-}.sublime-snippet │ │ └── trait-{-}.sublime-snippet │ └── macros │ │ ├── append-comma-newline.sublime-macro │ │ ├── append-semicolon-newline.sublime-macro │ │ ├── append-semicolon.sublime-macro │ │ ├── auto-array-equals-gt.sublime-macro │ │ ├── auto-pair-braces-current-line.sublime-macro │ │ ├── auto-pair-braces-next-line.sublime-macro │ │ └── wrap-newlines.sublime-macro ├── Python │ └── Python.sublime-build ├── ShellScript │ └── ShellScript.sublime-build ├── Terminal │ └── Terminal.py ├── Text │ └── Plain text.tmLanguage ├── User │ ├── .gitignore │ ├── AceJump.sublime-settings │ ├── AutoSetSyntax.sublime-settings │ ├── Batch File.sublime-settings │ ├── C++.sublime-settings │ ├── CSS.sublime-settings │ ├── Console Input Widget.sublime-settings │ ├── Default (Linux).sublime-keymap │ ├── Default (Windows).sublime-keymap │ ├── Diff.sublime-settings │ ├── Doxy.sublime-settings │ ├── Emmet.sublime-settings │ ├── FileManager.sublime-settings │ ├── Find Results.sublime-settings │ ├── Fmt.sublime-settings │ ├── Go.sublime-settings │ ├── HTML.sublime-settings │ ├── HyperClick.sublime-settings │ ├── JavaScript.sublime-settings │ ├── Jinja.sublime-settings │ ├── JsPrettier.sublime-settings │ ├── LESS.sublime-settings │ ├── LSP-clangd.sublime-settings │ ├── LSP-copilot.sublime-settings │ ├── LSP-css.sublime-settings │ ├── LSP-dockerfile.sublime-settings │ ├── LSP-html.sublime-settings │ ├── LSP-intelephense.sublime-settings │ ├── LSP-json.sublime-settings │ ├── LSP-pylance.sublime-settings │ ├── LSP-ruff.sublime-settings │ ├── LSP-yaml.sublime-settings │ ├── LSP.sublime-settings │ ├── LiveReload.sublime-settings │ ├── Log.sublime-settings │ ├── Markdown.sublime-settings │ ├── Package Control.sublime-settings │ ├── PackageDev.sublime-settings │ ├── PowershellSyntax.sublime-settings │ ├── Preferences.sublime-settings │ ├── Python.sublime-settings │ ├── RainbowIndent.sublime-settings │ ├── SCSS.sublime-settings │ ├── SublimeLinter.sublime-settings │ ├── TodoReview.sublime-settings │ ├── ToggleWords.sublime-settings │ ├── Twig.sublime-settings │ ├── Verilog.sublime-settings │ ├── WindowsContextMenu.sublime-settings │ ├── bh_core.sublime-settings │ ├── bh_swapping.sublime-settings │ ├── bh_tag.sublime-settings │ ├── color_helper.sublime-settings │ ├── lsp_utils.sublime-settings │ ├── mdpopups.css │ ├── my_build │ │ ├── CSS - Minify.sublime-build │ │ ├── D2 - Export.sublime-build │ │ ├── LESS.sublime-build │ │ ├── PyUIC (Python) - Convert Qt UI into Python.sublime-build │ │ ├── SCSS.sublime-build │ │ └── pyuic5 (executable) - Convert Qt UI into Python.sublime-build │ ├── my_keymap │ │ ├── ChineseQuotes │ │ │ └── Default.sublime-keymap │ │ ├── LanguageQuotes │ │ │ └── Default.sublime-keymap │ │ ├── LatinQuotes │ │ │ └── Default.sublime-keymap │ │ ├── TypeShorter │ │ │ └── Default.sublime-keymap │ │ └── readme.md │ ├── my_language │ │ ├── ApacheConf │ │ │ ├── ApacheConf.sublime-syntax │ │ │ └── Comments.tmPreferences │ │ ├── D2.sublime-syntax │ │ ├── Gettext.sublime-syntax │ │ ├── Jenkinsfile.sublime-syntax │ │ ├── Log.sublime-syntax │ │ ├── PEM.sublime-syntax │ │ ├── Postscript.sublime-syntax │ │ ├── SRT.sublime-syntax │ │ ├── SSH-Config │ │ │ ├── Comments.tmPreferences │ │ │ └── SSH-Config.sublime-syntax │ │ ├── Singularity │ │ │ ├── Comments.tmPreferences │ │ │ └── Singularity.sublime-syntax │ │ ├── VTT.sublime-syntax │ │ ├── aliases │ │ │ ├── CoffeeScript (Gulpfile).sublime-syntax │ │ │ ├── Groovy (Gradle).sublime-syntax │ │ │ ├── JSON (Babel).sublime-syntax │ │ │ ├── JSON (Bower).sublime-syntax │ │ │ ├── JSON (Composer).sublime-syntax │ │ │ ├── JSON (ESLint).sublime-syntax │ │ │ ├── JSON (NPM).sublime-syntax │ │ │ ├── JSON (PostCSS).sublime-syntax │ │ │ ├── JSON (Settings).sublime-syntax │ │ │ ├── JSON (Stylelint).sublime-syntax │ │ │ ├── JSON (Tern JS).sublime-syntax │ │ │ ├── JavaScript (ESLint).sublime-syntax │ │ │ ├── JavaScript (Gruntfile).sublime-syntax │ │ │ ├── JavaScript (Gulpfile).sublime-syntax │ │ │ ├── JavaScript (PostCSS).sublime-syntax │ │ │ ├── JavaScript (Stylelint).sublime-syntax │ │ │ ├── JavaScript (Webpack).sublime-syntax │ │ │ ├── Markdown (License).sublime-syntax │ │ │ ├── Plain Text (Adobe After Effects).sublime-syntax │ │ │ ├── Plain Text (Adobe Illustrator).sublime-syntax │ │ │ ├── Plain Text (Adobe InDesign).sublime-syntax │ │ │ ├── Plain Text (Adobe Photoshop).sublime-syntax │ │ │ ├── Plain Text (Adobe Premiere Pro).sublime-syntax │ │ │ ├── Plain Text (Archive).sublime-syntax │ │ │ ├── Plain Text (Audio).sublime-syntax │ │ │ ├── Plain Text (Buildpacks).sublime-syntax │ │ │ ├── Plain Text (ESLint).sublime-syntax │ │ │ ├── Plain Text (Font).sublime-syntax │ │ │ ├── Plain Text (License).sublime-syntax │ │ │ ├── Plain Text (Microsoft Access).sublime-syntax │ │ │ ├── Plain Text (Microsoft Excel).sublime-syntax │ │ │ ├── Plain Text (Microsoft OneNote).sublime-syntax │ │ │ ├── Plain Text (Microsoft PowerPoint).sublime-syntax │ │ │ ├── Plain Text (Microsoft Word).sublime-syntax │ │ │ ├── Plain Text (NodeJS).sublime-syntax │ │ │ ├── Plain Text (PDF).sublime-syntax │ │ │ ├── Plain Text (Ruby).sublime-syntax │ │ │ ├── Plain Text (Sketch).sublime-syntax │ │ │ ├── Plain Text (Video).sublime-syntax │ │ │ ├── Plain Text (Windows Shortcut).sublime-syntax │ │ │ ├── Shell Script (ESLint).sublime-syntax │ │ │ ├── Shell Script (NPM).sublime-syntax │ │ │ ├── Shell Script (Ruby).sublime-syntax │ │ │ ├── Shell Script (Stylelint).sublime-syntax │ │ │ ├── Vimrc (VimL).sublime-syntax │ │ │ ├── XML (SVG).sublime-syntax │ │ │ ├── YAML (CircleCI).sublime-syntax │ │ │ ├── YAML (Docker).sublime-syntax │ │ │ ├── YAML (ESLint).sublime-syntax │ │ │ ├── YAML (Lock).sublime-syntax │ │ │ ├── YAML (Procfile).sublime-syntax │ │ │ ├── YAML (Stylelint).sublime-syntax │ │ │ └── YAML (Yarn).sublime-syntax │ │ └── requirements-txt │ │ │ ├── Comments.tmPreferences │ │ │ └── pip-requirements.sublime-syntax │ ├── my_theme │ │ ├── .gitignore │ │ ├── Adaptive.sublime-theme │ │ ├── Find Results.hidden-color-scheme │ │ ├── git_badges │ │ │ ├── added.png │ │ │ ├── added@2x.png │ │ │ ├── added@3x.png │ │ │ ├── modified.png │ │ │ ├── modified@2x.png │ │ │ ├── modified@3x.png │ │ │ ├── src.txt │ │ │ ├── staged.png │ │ │ ├── staged@2x.png │ │ │ ├── staged@3x.png │ │ │ ├── untracked.png │ │ │ ├── untracked@2x.png │ │ │ └── untracked@3x.png │ │ ├── gutters │ │ │ ├── right_arrow_green.png │ │ │ ├── right_arrow_red.png │ │ │ └── right_arrow_yellow.png │ │ └── wicked_rainbow.sublime-color-scheme │ ├── phpcs.sublime-settings │ └── scope_hunter.sublime-settings ├── my_demo_38 │ ├── .python-version │ ├── Default.sublime-commands │ ├── TextInputHandlerDemo.py │ └── pyproject.toml └── my_plugin_38 │ ├── .python-version │ ├── 0_lsp_utils.py │ ├── Default.sublime-commands │ ├── always_indent_command.py │ ├── console_exec_command.py │ ├── copy_without_newline_command.py │ ├── decorate_inline_comment.py │ ├── dependencies.json │ ├── deselect_command.py │ ├── dev_mode.py │ ├── expand_flatten_json_command.py │ ├── extend_selection_to_previous_line_command.py │ ├── find_and_replace.py │ ├── focus_active_output_panel_command.py │ ├── goto_symbol_command.py │ ├── just_one_space_command.py │ ├── pyproject.toml │ ├── run_async_command.py │ ├── run_input_cli_command.py │ ├── selection_to_top_command.py │ ├── step_tab_cycle_command.py │ ├── toggle_all_inline_diffs_command.py │ ├── toggle_readonly_command.py │ └── toggle_word_command.py ├── my_dependencies ├── package.json ├── requirements.txt └── update.sh └── scripts ├── .gitignore ├── mirror_official_docs.sh ├── update_lsp.sh └── update_official_packages.sh /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome: https://EditorConfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | end_of_line = lf 7 | indent_style = space 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.bat] 12 | charset = latin1 13 | end_of_line = crlf 14 | 15 | [*.{css,sass,scss}] 16 | indent_size = 2 17 | 18 | [*.{html,xml,twig,blade,volt}] 19 | indent_size = 2 20 | 21 | [*.js] 22 | indent_size = 2 23 | 24 | [*.{json,toml}] 25 | indent_size = 4 26 | 27 | [*.md] 28 | indent_size = 2 29 | trim_trailing_whitespace = false 30 | 31 | [*.php] 32 | indent_size = 4 33 | 34 | [*.ps] 35 | end_of_line = crlf 36 | 37 | [*.py] 38 | indent_size = 4 39 | 40 | [*.{sh,csh,tcsh,zsh,bash,fish}] 41 | indent_size = 4 42 | 43 | [*.sublime-syntax] 44 | indent_size = 2 45 | 46 | [*.sublime-snippet] 47 | indent_style = tab 48 | 49 | [*.{sublime-build,sublime-color-scheme,sublime-commands,sublime-completions,sublime-keymap,sublime-menu,sublime-mousemap,sublime-project,sublime-settings,sublime-workspace,tmLanguage,tmPreferences}] 50 | indent_size = 4 51 | indent_style = space 52 | 53 | [*.{yml,yaml,toml,neon}] 54 | indent_size = 2 55 | 56 | [Makefile] 57 | indent_style = tab 58 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # auto generated or unimportant 2 | /Backup/ 3 | /Cache/ 4 | /Crash Reports/ 5 | /Index/ 6 | /KEEPME 7 | /Lib/ 8 | /Local/ 9 | /Log/ 10 | /Trash/ 11 | 12 | # LSP 13 | /Package Storage/ 14 | 15 | # secrets 16 | *.sublime-license 17 | *.sublime_license 18 | 19 | # script temp 20 | *_cache/ 21 | .Sublime-Official-Packages/ 22 | docs/ 23 | 24 | # venv 25 | .venv-*/ 26 | .venv/ 27 | venv-*/ 28 | venv/ 29 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "typings/LSP"] 2 | path = typings/LSP 3 | url = https://github.com/sublimelsp/LSP.git 4 | -------------------------------------------------------------------------------- /Installed Packages/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | 3 | !LSP.sublime-package 4 | !Package Control.sublime-package 5 | -------------------------------------------------------------------------------- /Installed Packages/LSP.sublime-package: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jfcherng-sublime/ST-my-settings/dfeb70b1771160bbebd5e2621ee9cd4f9da8be13/Installed Packages/LSP.sublime-package -------------------------------------------------------------------------------- /Installed Packages/Package Control.sublime-package: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jfcherng-sublime/ST-my-settings/dfeb70b1771160bbebd5e2621ee9cd4f9da8be13/Installed Packages/Package Control.sublime-package -------------------------------------------------------------------------------- /Packages/.gitignore: -------------------------------------------------------------------------------- 1 | /AutomaticPackageReloader*/ 2 | /CommandsBrowser33/ 3 | /ConvertToUTF8/ 4 | /JsPrettier/ 5 | /LiveReload/ 6 | /LSP-*/ 7 | /SublimeLinter*/ 8 | /UnitTesting/ 9 | 10 | /Terminal/* 11 | !/Terminal/Terminal.py 12 | -------------------------------------------------------------------------------- /Packages/BetterFindBuffer/.no-sublime-package: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jfcherng-sublime/ST-my-settings/dfeb70b1771160bbebd5e2621ee9cd4f9da8be13/Packages/BetterFindBuffer/.no-sublime-package -------------------------------------------------------------------------------- /Packages/BetterFindBuffer/BetterFindBuffer.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "readonly": true, 3 | "fold_path_prefix": true 4 | } 5 | -------------------------------------------------------------------------------- /Packages/BetterFindBuffer/Default.sublime-keymap: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "keys": ["enter"], 4 | "command": "find_in_files_open_file", 5 | "context": [ 6 | { "key": "selector", "operator": "equal", "operand": "text.find-in-files" } 7 | ] 8 | }, 9 | { 10 | "keys": ["o"], 11 | "command": "find_in_files_open_file", 12 | "context": [ 13 | { "key": "selector", "operator": "equal", "operand": "text.find-in-files" } 14 | ] 15 | }, 16 | { 17 | "keys": ["a"], 18 | "command": "find_in_files_open_all_files", 19 | "context": [ 20 | { "key": "selector", "operator": "equal", "operand": "text.find-in-files" } 21 | ] 22 | }, 23 | { 24 | "keys": ["n"], 25 | "command": "find_in_files_jump_file", 26 | "context": [ 27 | { "key": "selector", "operator": "equal", "operand": "text.find-in-files" } 28 | ] 29 | }, 30 | { 31 | "keys": ["p"], 32 | "command": "find_in_files_jump_file", 33 | "args": { "forward": false }, 34 | "context": [ 35 | { "key": "selector", "operator": "equal", "operand": "text.find-in-files" } 36 | ] 37 | }, 38 | { 39 | "keys": ["j"], 40 | "command": "find_in_files_jump_match", 41 | "context": [ 42 | { "key": "selector", "operator": "equal", "operand": "text.find-in-files" } 43 | ] 44 | }, 45 | { 46 | "keys": ["k"], 47 | "command": "find_in_files_jump_match", 48 | "args": { "forward": false }, 49 | "context": [ 50 | { "key": "selector", "operator": "equal", "operand": "text.find-in-files" } 51 | ] 52 | }, 53 | { 54 | "keys": ["f"], 55 | "command": "bfb_fold_and_move_to_next_file", 56 | "context": [ 57 | {"key": "selector", "operator": "equal", "operand": "text.find-in-files" } 58 | ] 59 | }, 60 | { 61 | "keys": ["?"], 62 | "command": "bfb_toggle_popup_help", 63 | "context": [ 64 | {"key": "selector", "operator": "equal", "operand": "text.find-in-files" } 65 | ] 66 | } 67 | ] 68 | -------------------------------------------------------------------------------- /Packages/BetterFindBuffer/Find Results.hidden-tmLanguage: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | name 6 | Find Results 7 | 8 | patterns 9 | 10 | 11 | 12 | match 13 | ^([^ ].*:\n)$ 14 | captures 15 | 16 | 1 17 | 18 | name 19 | entity.name.filename.find-in-files 20 | 21 | 22 | 23 | 24 | 25 | match 26 | ^( +[0-9]+) 27 | captures 28 | 29 | 1 30 | 31 | name 32 | constant.numeric.line-number.find-in-files 33 | 34 | 35 | 36 | 37 | 38 | match 39 | ^( +[0-9]+)(:)(.+\n)$ 40 | captures 41 | 42 | 1 43 | 44 | name 45 | constant.numeric.line-number.match.find-in-files 46 | 47 | 2 48 | 49 | name 50 | punctuation.line-number.match.find-in-files 51 | 52 | 3 53 | 54 | name 55 | match.find-in-files 56 | 57 | 58 | 59 | 60 | 61 | 62 | match 63 | ^ +(\.{2,10}+)$ 64 | captures 65 | 66 | 1 67 | 68 | name 69 | constant.numeric.line-number.find-in-files 70 | 71 | 72 | 73 | 74 | 75 | match 76 | ^Searching (\d+) file(?:s)? for (".+")(.+)?$ 77 | name 78 | header.find-in-files 79 | captures 80 | 81 | 1 82 | 83 | name 84 | variable.total_files_count.find-in-files 85 | 86 | 2 87 | 88 | name 89 | string.query.find-in-files 90 | 91 | 92 | 93 | 94 | 95 | match 96 | ^(\d+) match(?:es)? (?:across|in) (\d+) file(?:s)?\n 97 | name 98 | footer.find-in-files 99 | captures 100 | 101 | 1 102 | 103 | name 104 | variable.matched_count.find-in-files 105 | 106 | 2 107 | 108 | name 109 | variable.matched_files_count.find-in-files 110 | 111 | 3 112 | 113 | name 114 | sep.find-in-files 115 | 116 | 117 | 118 | 119 | 120 | match 121 | ^(0) matches\n 122 | name 123 | footer.find-in-files 124 | captures 125 | 126 | 1 127 | 128 | name 129 | variable.no_matches.find-in-files 130 | 131 | 132 | 133 | 134 | 135 | match 136 | ^(0) matches 137 | captures 138 | 139 | 1 140 | 141 | name 142 | variable.no_matches.find-in-files 143 | 144 | 145 | 146 | 147 | 148 | scopeName 149 | text.find-in-files 150 | 151 | 152 | -------------------------------------------------------------------------------- /Packages/BetterFindBuffer/Find Results.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "color_scheme": "Packages/BetterFindBuffer/FindResults.hidden-tmTheme", 3 | "draw_indent_guides": false, 4 | "gutter": false, 5 | "margin": 8, 6 | "rulers": [], 7 | "spell_check": false, 8 | "word_wrap": true 9 | } 10 | -------------------------------------------------------------------------------- /Packages/BetterFindBuffer/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014 Allen Bargi (https://twitter.com/aziz) 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 8 | -------------------------------------------------------------------------------- /Packages/BetterFindBuffer/Main.sublime-menu: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "preferences", 4 | "children": [{ 5 | "caption": "Package Settings", 6 | "mnemonic": "P", 7 | "id": "package-settings", 8 | "children": [{ 9 | "caption": "BetterFindBuffer", 10 | "children": [ 11 | { 12 | "command": "open_file", 13 | "args": { 14 | "file": "${packages}/BetterFindBuffer/BetterFindBuffer.sublime-settings" 15 | }, 16 | "caption": "Settings – Default" 17 | }, 18 | { 19 | "command": "open_file", 20 | "args": { 21 | "file": "${packages}/User/BetterFindBuffer.sublime-settings" 22 | }, 23 | "caption": "Settings – User" 24 | }, 25 | { 26 | "caption": "-" 27 | }, 28 | { 29 | "command": "open_file", 30 | "args": { 31 | "file": "${packages}/BetterFindBuffer/Find Results.sublime-settings" 32 | }, 33 | "caption": "Find Results Settings – Default" 34 | }, 35 | { 36 | "command": "open_file", 37 | "args": { 38 | "file": "${packages}/User/Find Results.sublime-settings" 39 | }, 40 | "caption": "Find Results Settings – User" 41 | } 42 | ] 43 | }] 44 | }] 45 | } 46 | ] 47 | -------------------------------------------------------------------------------- /Packages/BetterFindBuffer/README.md: -------------------------------------------------------------------------------- 1 | # BetterFindBuffer for SublimeText 3 2 | Adds a couple of missing features to SublimeText Find Results buffer. 3 | 4 | **Note**: You need to *restart* your SublimeText after installing this plugin. 5 | 6 | ## Features 7 | - Open the the file and line under the cursor by pressing Enter or o 8 | - n and p to jump to next/previous file 9 | - j and k to jump to next/previous match 10 | - Open multiple files with multiple cursor at the same time by selecting lines and pressing Enter or o 11 | - Open all files in the result with a 12 | - Fold a result with f and move to next file 13 | - Show shortcuts with ? 14 | - Remove path prefix in filenames based on open sublime's project folders (can be disabled in settings) 15 | - Set find results as readonly (can be disabled in settings) 16 | - Adds search keyword and file names to the symbols list (use Super+R) 17 | - Cleaner UI (hides line numbers, gutter, indent guides) 18 | - Better Syntax highlighting for find results 19 | - Cutom color scheme 20 | 21 | ![BetterFindBuffer Screenshot1](https://cloud.githubusercontent.com/assets/3202/16536669/d9ed24c0-3ff4-11e6-9d4f-779049c063cd.png) 22 | 23 | ![BetterFindBuffer Screenshot2](https://cloud.githubusercontent.com/assets/3202/16536672/e07db07a-3ff4-11e6-865d-1f24cb2a8dad.png) 24 | 25 | ## Installation 26 | You can install via [Sublime Package Control](http://wbond.net/sublime_packages/package_control) 27 | Or you can clone this repo into your Sublime Text Packages folder. 28 | 29 | ## Changing color scheme 30 | If you don't like colors used in the find results buffer just copy [this file](https://github.com/aziz/BetterFindBuffer/blob/master/FindResults.hidden-tmTheme) to your User folder, change colors and save it and then create a file called `Find Results.sublime-settings` in your User folder and paste the code below: 31 | 32 | ``` json 33 | { 34 | "color_scheme": "Path to your custom color scheme file. e.g. Packages/User/Custom_FindResults.hidden-tmTheme", 35 | } 36 | ``` 37 | 38 | Alternatively, You can use [BetterFindBuffer-Designer](http://bobtherobot.github.io/BetterFindBuffer-Designer/) tool as GUI to easily customize the Find-Results color scheme. 39 | 40 | ### Credit 41 | `FindInFilesOpenFileCommand` is inspired by [this answer on StackOverflow](http://stackoverflow.com/a/16779397/78254) 42 | 43 | #### License 44 | See the LICENSE file 45 | -------------------------------------------------------------------------------- /Packages/BetterFindBuffer/Symbol List - Find Results Header.tmPreferences: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | name 6 | Symbol List: Search Heading 7 | scope 8 | text.find-in-files header.find-in-files 9 | settings 10 | 11 | showInSymbolList 12 | 1 13 | symbolTransformation 14 | 15 | s/Searching \d+ files for "(.+?)"(.+)?$/Search: \1 —————————————————————————/g; 16 | 17 | showInIndexedSymbolList 18 | 0 19 | 20 | uuid 21 | f2640a36-68f2-42ee-bba6-d34296c15594 22 | 23 | 24 | -------------------------------------------------------------------------------- /Packages/BetterFindBuffer/Symbol List - Find Results.tmPreferences: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | name 6 | Symbol List: File Heading 7 | scope 8 | entity.name.filename.find-in-files 9 | settings 10 | 11 | showInSymbolList 12 | 1 13 | showInIndexedSymbolList 14 | 0 15 | 16 | uuid 17 | f2640a36-68f2-42ee-bba6-d34296c15594 18 | 19 | 20 | -------------------------------------------------------------------------------- /Packages/BetterFindBuffer/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "install": "messages/install.txt" 3 | } -------------------------------------------------------------------------------- /Packages/BetterFindBuffer/messages/1.0.0.txt: -------------------------------------------------------------------------------- 1 | BetterFindBuffer version 1.0.0 2 | 3 | You need to *restart* SublimeText. 4 | 5 | Changelog: 6 | ● Configurable readonly settings 7 | ● Open multiple files with multiple cursor 8 | ● Jump by match instead of by search result. a more reliable `j` and `k` movements 9 | ● Open all files in the result with `a` 10 | ● Fold a result with `f` and move to next file 11 | ● Show shortcuts with `?` 12 | ● Remove path prefix in filenames based on open sublime's project folders 13 | -------------------------------------------------------------------------------- /Packages/BetterFindBuffer/messages/install.txt: -------------------------------------------------------------------------------- 1 | Thank you for installing BetterFindBuffer. 2 | 3 | You need to *restart* your SublimeText for this plugin to work. 4 | -------------------------------------------------------------------------------- /Packages/BetterFindBuffer/package-metadata.json: -------------------------------------------------------------------------------- 1 | {"dependencies": [], "url": "https://github.com/aziz/BetterFindBuffer", "platforms": ["*"], "version": "1.0.0", "sublime_text": ">=3000", "description": "Adds a couple of missing features to SublimeText 3 Find Results buffer"} -------------------------------------------------------------------------------- /Packages/BetterFindBuffer/shortcuts.html: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 |

Keyboard Shortcuts

22 | 23 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /Packages/C++/C Single File.sublime-build: -------------------------------------------------------------------------------- 1 | { 2 | "cmd": [ 3 | "gcc", 4 | "-std=c11", 5 | "-Wall", 6 | "-O2", 7 | "${file}", 8 | "-I./include", 9 | "-I./lib", 10 | "-I./libs", 11 | "-o", 12 | "${file_path}/${file_base_name}" 13 | ], 14 | "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", 15 | "working_dir": "${file_path}", 16 | "selector": "source.c", 17 | "target": "console_exec", 18 | "variants": [ 19 | { 20 | "name": "Run", 21 | "cmd": ["${file_path}/${file_base_name}"] 22 | }, 23 | { 24 | "name": "Compile & Run", 25 | "cmd": [ 26 | "gcc", 27 | "-std=c11", 28 | "-Wall", 29 | "-O2", 30 | "${file}", 31 | "-I./include", 32 | "-I./lib", 33 | "-I./libs", 34 | "-o", 35 | "${file_path}/${file_base_name}", 36 | "&&", 37 | "${file_path}/${file_base_name}" 38 | ] 39 | } 40 | ] 41 | } 42 | -------------------------------------------------------------------------------- /Packages/C++/C++ Single File.sublime-build: -------------------------------------------------------------------------------- 1 | { 2 | "cmd": [ 3 | "g++", 4 | "-std=c++20", 5 | "-Wall", 6 | "-O2", 7 | "${file}", 8 | "-I./include", 9 | "-I./lib", 10 | "-I./libs", 11 | "-o", 12 | "${file_path}/${file_base_name}" 13 | ], 14 | "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", 15 | "working_dir": "${file_path}", 16 | "selector": "source.c++", 17 | "target": "console_exec", 18 | "variants": [ 19 | { 20 | "name": "Run", 21 | "cmd": ["${file_path}/${file_base_name}"] 22 | }, 23 | { 24 | "name": "Compile & Run", 25 | "cmd": [ 26 | "g++", 27 | "-std=c++20", 28 | "-Wall", 29 | "-O2", 30 | "${file}", 31 | "-I./include", 32 | "-I./lib", 33 | "-I./libs", 34 | "-o", 35 | "${file_path}/${file_base_name}", 36 | "&&", 37 | "${file_path}/${file_base_name}" 38 | ] 39 | } 40 | ] 41 | } 42 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/customized/hello-world-c.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 起手式 3 | 4 | 5 | int main (int argc, char *argv[]) { 6 | ${1:printf("hello world!\n");} 7 | return 0; 8 | } 9 | 10 | ]]> 11 | helloworld 12 | source.c, source.objc 13 | 14 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/customized/hello-world-cpp.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 起手式 3 | 4 | 5 | using namespace std; 6 | 7 | int main (int argc, char *argv[]) { 8 | ${1:cout << "hello world!" << endl;} 9 | return 0; 10 | } 11 | 12 | ]]> 13 | helloworld 14 | source.c++, source.objc++ 15 | 16 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/customized/main-function.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | main() 3 | 7 | main 8 | source.c, source.objc, source.c++, source.objc++ 9 | 10 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/customized/readfile-into-vector.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | Read File Into Vector 3 | v; 4 | if (FILE${TM_C_POINTER: *}fp = fopen(${1:"filename"}, "r")) { 5 | char buf[1024]; 6 | while (size_t len = fread(buf, 1, sizeof(buf), fp)) 7 | v.insert(v.end(), buf, buf + len); 8 | fclose(fp); 9 | }]]> 10 | readfile 11 | source.c++, source.objc++ 12 | 13 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/data_type/class.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | Class 3 | 10 | class 11 | source.c++, source.objc++ 12 | 13 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/data_type/const_cast.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | const_cast 3 | (${2:variable})$0]]> 4 | const_cast 5 | source.c, source.c++ 6 | 7 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/data_type/dynamic_cast.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | dynamic_cast 3 | (${2:variable})$0]]> 4 | dynamic_cast 5 | source.c, source.c++ 6 | 7 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/data_type/enum.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | Enumeration 3 | 4 | enum 5 | source.c++, source.objc++ 6 | 7 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/data_type/map.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | std::map 3 | ${3:map};$0]]> 4 | map 5 | source.c++, source.objc++ 6 | 7 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/data_type/pair.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | std::pair 3 | ${3:pair};$0]]> 4 | pair 5 | source.c++, source.objc++ 6 | 7 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/data_type/reinterpret_cast.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | reinterpret_cast 3 | (${2:variable})$0]]> 4 | reinterpret_cast 5 | source.c, source.c++ 6 | 7 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/data_type/set.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | std::set 3 | ${2:set};$0]]> 4 | set 5 | source.c++, source.objc++ 6 | 7 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/data_type/static_cast.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | static_cast 3 | (${2:variable})$0]]> 4 | static_cast 5 | source.c, source.c++ 6 | 7 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/data_type/struct.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | Struct 3 | 6 | struct 7 | source.c, source.objc, source.c++, source.objc++ 8 | 9 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/data_type/typedef.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | Typedef 3 | 4 | td 5 | source.c, source.objc, source.c++, source.objc++ 6 | 7 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/data_type/vector.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | std::vector 3 | ${2:v};$0]]> 4 | vector 5 | source.c++, source.objc++ 6 | 7 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/flow_control/case.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | Case 3 | 7 | case 8 | source.c, source.objc, source.c++, source.objc++ 9 | 10 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/flow_control/else-if.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | Else if 3 | 6 | elif 7 | source.c, source.objc, source.c++, source.objc++ 8 | 9 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/flow_control/else.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | Else 3 | 6 | else 7 | source.c, source.objc, source.c++, source.objc++ 8 | 9 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/flow_control/goto.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | goto 3 | 4 | goto 5 | source.c, source.objc, source.c++, source.objc++ 6 | 7 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/flow_control/if-else.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | If else Condition 3 | 8 | ife 9 | source.c, source.objc, source.c++, source.objc++ 10 | 11 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/flow_control/if.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | If Condition 3 | 6 | if 7 | source.c, source.objc, source.c++, source.objc++ 8 | 9 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/flow_control/switch-case.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | Switch Case 3 | 11 | switch 12 | source.c, source.objc, source.c++, source.objc++ 13 | 14 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/function/constexpr_function.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | constexpr function 3 | 6 | confunct 7 | source.c++ 8 | 9 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/function/fprintf.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | fprintf … 3 | 4 | fprintf 5 | source.c, source.objc, source.c++, source.objc++ 6 | 7 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/function/function.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | Regular function 3 | 6 | func 7 | source.c, source.objc, source.c++, source.objc++ 8 | 9 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/function/printf.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | printf … 3 | 4 | printf 5 | source.c, source.objc, source.c++, source.objc++ 6 | 7 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/function/regular_function.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | Regular function 3 | 6 | funct 7 | source.c, source.objc, source.c++, source.objc++ 8 | 9 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/functor/binary_template_functor.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | Binary template functor 3 | 5 | constexpr auto operator()(T&& t, U&& u) const noexcept -> decltype(${2:/* code */}) { 6 | return ${2:/* code */}; 7 | } 8 | };]]> 9 | bintempfunctor 10 | source.c++ 11 | 12 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/functor/functor.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | Functor 3 | 8 | functor 9 | source.c++ 10 | 11 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/functor/unary_template_functor.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | Unary template functor 3 | 5 | constexpr auto operator()(T&& t) const noexcept -> decltype(${2:/* code */}) { 6 | return ${2:/* code */}; 7 | } 8 | };]]> 9 | tempfunctor 10 | source.c++ 11 | 12 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/lambda/catchallbyref.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | Lambda - catch all by reference 3 | 6 | lamref 7 | source.c++ 8 | 9 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/lambda/catchallbyvalue.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | Lambda - catch all by value 3 | 6 | lamval 7 | source.c++ 8 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/lambda/full.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | Lambda - Full spec 3 | ${5:/* return */} { 4 | ${6:/* code */} 5 | }]]> 6 | lamfull 7 | source.c++ 8 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/lambda/lamret.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | Lambda - Explicit return declaration 3 | ${3:/* return */} { 4 | ${4:/* code */} 5 | }]]> 6 | lamret 7 | source.c++ 8 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/lambda/minimal.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | Lambda - Minimal 3 | 6 | lammin 7 | source.c++ 8 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/loop/do-while.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | Do While Loop 3 | 6 | do 7 | source.c, source.objc, source.c++, source.objc++ 8 | 9 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/loop/for.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | For Loop 3 | 6 | for 7 | source.c, source.objc, source.c++, source.objc++ 8 | 9 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/loop/forr.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | Range-based For Loop 3 | 6 | forr 7 | source.c++, source.objc++ 8 | 9 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/loop/forv.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | Vector For Loop 3 | 6 | forv 7 | source.c++, source.objc++ 8 | 9 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/loop/while.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | While Loop 3 | 6 | while 7 | source.c, source.objc, source.c++, source.objc++ 8 | 9 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/others/beginend.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | std::begin($1), std::end($1) 3 | 4 | beginend 5 | source.c++ 6 | 7 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/others/exception.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | Create exception 3 | 7 | excep 8 | source.c++, source.objc++ 9 | 10 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/others/namespace.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | Namespace 3 | 7 | ns 8 | source.c++, source.objc++ 9 | 10 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/others/try-catch.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | try & catch 3 | 8 | try 9 | source.c++, source.objc++ 10 | 11 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/preprocessor/#define.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | #define 3 | 4 | def 5 | source.c, source.c++, source.objc, source.objc++ 6 | 7 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/preprocessor/#ifdef.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | #define 3 | 6 | ifdef 7 | source.c, source.c++, source.objc, source.objc++ 8 | 9 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/preprocessor/#ifndef-#define-#endif.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | #ifndef … #define … #endif 3 | 6 | ifndef 7 | source.c, source.c++, source.objc, source.objc++ 8 | 9 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/preprocessor/#include(angle).sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | #include <…> 3 | ]]> 4 | Inc 5 | source.c, source.objc, source.c++, source.objc++ 6 | 7 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/preprocessor/#include(quote).sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | #include "…" 3 | 4 | inc 5 | source.c, source.objc, source.c++, source.objc++ 6 | 7 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/preprocessor/clang_greater_version.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | Clang version >= check 3 | ${1:3}) || (__clang_major__ == ${1:3}) && (__clang_minor__ >= ${2:2}))]]> 4 | clanggreater 5 | source.c, source.objc, source.c++, source.objc++ 6 | 7 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/preprocessor/clang_less.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | Clang version <= check 3 | 4 | clangless 5 | source.c, source.objc, source.c++, source.objc++ 6 | 7 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/preprocessor/gcc_greater.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | GCC version >= check 3 | ${1:4}) || ((__GNUC__ == ${1:4}) && (__GNUC_MINOR__ >= ${2:7})))]]> 4 | gccgreater 5 | source.c, source.objc, source.c++, source.objc++ 6 | 7 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/preprocessor/gcc_less.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | GCC version <= check 3 | 4 | gccless 5 | source.c, source.objc, source.c++, source.objc++ 6 | 7 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/template/template.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | template <typename ${1:T}> 3 | ]]> 4 | tp 5 | source.c++, source.objc++ 6 | 7 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/template/templated_class.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 | class ${2:${TM_FILENAME/(.+)\..+|.*/\1/}} { 4 | public: 5 | ${2/(\w+).*/$1/}(${3:/*arguments*/}); 6 | ~${2/(\w+).*/$1/}(); 7 | private: 8 | ${0:/* data */} 9 | };]]> 10 | tpclass 11 | source.c++, source.objc++ 12 | 13 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/template/templated_function.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | templated function 3 | 4 | ${2:int} ${3:function_name} (${4:/* args */}) { 5 | ${0:/* code */} 6 | }]]> 7 | tpfunc 8 | source.c++ 9 | 10 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/template/templated_function_auto.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | template auto function 3 | 4 | auto ${2:function_name}(${3:/* args */}) -> decltype(${4:/* expression */}) { 5 | ${0:/* code */} 6 | }]]> 7 | tempfunca 8 | source.c++, source.objc++ 9 | 10 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/template/templated_function_auto_constexpr.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | template auto constexpr func 3 | 4 | constexpr auto ${2:function_name}(${3:/* args */}) noexcept -> decltype(${4:/* code */}) { 5 | return ${4:/* code */}; 6 | }]]> 7 | tempcfunca 8 | source.c++ 9 | 10 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/template/templated_function_constexpr.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | template constexpr function 3 | 4 | constexpr ${2:int} ${3:function_name}(${4:/* args */}) { 5 | return ${5:/* code */}; 6 | }]]> 7 | tempcfunc 8 | source.c++ 9 | 10 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/template/templated_struct.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | templated struct 3 | 4 | struct ${2:${TM_FILENAME/(.+)\..+|.*/\1/}} { 5 | ${0:/* code */} 6 | };]]> 7 | structtemp 8 | source.c++, source.objc++ 9 | 10 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/template/variadic_template.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | variadic template 3 | ]]> 4 | temv 5 | source.c++, source.objc++ 6 | 7 | -------------------------------------------------------------------------------- /Packages/C++/custom_snippets/traits/inheritance-type-trait.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | Do While Loop 3 | 5 | static std::true_type test(int); 6 | template 7 | static std::false_type test(...); 8 | }; 9 | 10 | template 11 | struct ${1:my_trait} : decltype(${1:my_trait}::test(0)) {}; 12 | $0]]> 13 | cpptraitfun 14 | source.c++ 15 | 16 | -------------------------------------------------------------------------------- /Packages/Default/.gitignore: -------------------------------------------------------------------------------- 1 | # platform-specific settings 2 | /Preferences*.sublime-settings 3 | 4 | # auto generated by plugins 5 | /Find Results.hidden-tmLanguage 6 | -------------------------------------------------------------------------------- /Packages/Default/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.ruff] 2 | preview = true 3 | line-length = 120 4 | target-version = 'py38' 5 | exclude = [ 6 | "*/libs/*", 7 | ".git", 8 | ".mypy_cache", 9 | ".venv", 10 | ".venv-*", 11 | "branch-*", 12 | "stubs", 13 | "tests/files", 14 | "typings", 15 | "vendor", 16 | "venv", 17 | "venv-*", 18 | ] 19 | 20 | [tool.ruff.lint] 21 | select = ["E", "F", "W", "I", "UP"] 22 | ignore = ["E203"] 23 | -------------------------------------------------------------------------------- /Packages/Diff/Diff.sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/3/syntax.html 4 | name: Diff 5 | version: 2 6 | file_extensions: 7 | - diff 8 | - patch 9 | - rej # patch failing details 10 | first_line_match: |- 11 | (?x)^ 12 | (===\ modified\ file 13 | |==== \s* // .+ \s - \s .+ \s+ ==== 14 | |Index:[ ] 15 | |---\ [^%] 16 | |\*\*\*.*\d{4}\s*$ 17 | |\d+(,\d+)* (a|d|c) \d+(,\d+)* $ 18 | |diff\ --git[ ] 19 | ) 20 | 21 | scope: source.diff 22 | contexts: 23 | main: 24 | - match: ^((\*{15})|(={67})|(-{3}))$\n? 25 | scope: meta.separator.diff 26 | captures: 27 | 1: punctuation.definition.separator.diff 28 | - match: ^\d+(,\d+)*(a|d|c)\d+(,\d+)*$\n? 29 | scope: meta.diff.range.normal meta.range.normal.diff 30 | - match: ^(@@)\s*(.+?)\s*(@@)\s*(.*?)\s*$\n? 31 | scope: meta.diff.range.unified meta.range.unified.diff 32 | captures: 33 | 1: punctuation.definition.range.diff 34 | 2: meta.toc-list.line-number.diff 35 | 3: punctuation.definition.range.diff 36 | 4: entity.name.section.diff 37 | - match: ^(((\-{3}) .+ (\-{4}))|((\*{3}) .+ (\*{4})))$\n? 38 | scope: meta.diff.range.context meta.range.context.diff 39 | captures: 40 | 3: punctuation.definition.range.diff 41 | 4: punctuation.definition.range.diff 42 | 6: punctuation.definition.range.diff 43 | 7: punctuation.definition.range.diff 44 | - match: (^(((-{3}) .+)|((\*{3}) .+))$\n?|^(={4}) .+(?= - )) 45 | scope: meta.diff.header.from-file meta.header.from-file.diff 46 | captures: 47 | 4: punctuation.definition.from-file.diff 48 | 6: punctuation.definition.from-file.diff 49 | 7: punctuation.definition.from-file.diff 50 | - match: (^(\+{3}) .+$\n?| (-) .* (={4})$\n?) 51 | scope: meta.diff.header.to-file meta.header.to-file.diff 52 | captures: 53 | 2: punctuation.definition.to-file.diff 54 | 3: punctuation.definition.to-file.diff 55 | 4: punctuation.definition.to-file.diff 56 | - match: ^(((>)( .*)?)|((\+).*))$\n? 57 | scope: markup.inserted.diff 58 | captures: 59 | 3: punctuation.definition.inserted.diff 60 | 6: punctuation.definition.inserted.diff 61 | - match: ^(!).*$\n? 62 | scope: markup.changed.diff 63 | captures: 64 | 1: punctuation.definition.changed.diff 65 | - match: ^(((<)( .*)?)|((-).*))$\n? 66 | scope: markup.deleted.diff 67 | captures: 68 | 3: punctuation.definition.deleted.diff 69 | 6: punctuation.definition.deleted.diff 70 | - match: ^Index(:) (.+)$\n? 71 | scope: meta.diff.index meta.index.diff 72 | captures: 73 | 1: punctuation.separator.key-value.diff 74 | 2: meta.toc-list.file-name.diff 75 | 76 | # git stat 77 | - match: '^\s*((?:.(?! => ))*.)(?: (=>) (.*))?\s+(\|)' 78 | captures: 79 | 1: string.filename.diff 80 | 2: punctuation.definition.separator.diff 81 | 3: string.filename.diff 82 | 4: punctuation.definition.separator.diff 83 | push: 84 | - meta_scope: meta.diff.stat 85 | - match: ([0-9]+)\s+([+]*)([-]*) 86 | captures: 87 | 1: constant.numeric.diff 88 | 2: punctuation.definition.inserted.diff 89 | 3: punctuation.definition.deleted.diff 90 | - match: (Bin)\s+([0-9]+)\s+(->)\s+([0-9]+)\s+(\w*) 91 | captures: 92 | 1: constant.file-type.diff 93 | 2: constant.numeric.diff 94 | 3: punctuation.definition.separator.diff 95 | 4: constant.numeric.diff 96 | 5: support.constant.unit.diff 97 | - match: (?=$|\S) 98 | pop: 1 99 | 100 | # diff --git a/foo.txt b/foo.txt 101 | - match: diff\s+--git\s+(a/)(.*)(b/)(.*)\n? 102 | scope: meta.header.from-to-file.diff 103 | captures: 104 | 1: punctuation.definition.separator.diff 105 | 2: string.filename.diff 106 | 3: punctuation.definition.separator.diff 107 | 4: string.filename.diff 108 | -------------------------------------------------------------------------------- /Packages/DoxyDoxygen (evolution)/INI.sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: INI 5 | scope: source.ini.doxydoxygen 6 | hidden: true 7 | 8 | contexts: 9 | main: [] 10 | -------------------------------------------------------------------------------- /Packages/DoxyDoxygen (evolution)/WTF.txt: -------------------------------------------------------------------------------- 1 | INI source: https://github.com/jwortmann/ini-syntax/blob/master/INI.sublime-syntax 2 | issue: https://github.com/20Tauri/DoxyDoxygen/issues/150 3 | -------------------------------------------------------------------------------- /Packages/HyperClick/html/ui.css: -------------------------------------------------------------------------------- 1 | html { 2 | margin: 0; 3 | padding: 0; 4 | } 5 | 6 | #hyperClick { 7 | background-color: var(--background); 8 | color: var(--foreground); 9 | margin: 0; 10 | padding: 0; 11 | font-size: 0.8rem; /* added by jfcherng */ 12 | } 13 | 14 | #hyperClick a { 15 | text-decoration: none; 16 | color: var(--background); 17 | } 18 | 19 | .label { 20 | border-radius: 3px; 21 | color: var(--background); 22 | background-color: var(--foreground); 23 | padding: 0 5px; 24 | } 25 | 26 | .label-success { 27 | background-color: var(--greenish); 28 | } 29 | 30 | .label-error { 31 | background-color: var(--redish); 32 | } 33 | 34 | .label-warning { 35 | background-color: var(--orangish); 36 | } 37 | 38 | .label-info { 39 | background-color: var(--bluish); 40 | } 41 | -------------------------------------------------------------------------------- /Packages/JavaScript/Indentation Rules.tmPreferences: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | scope 6 | source.js, source.ts, source.jsx, source.tsx 7 | settings 8 | 9 | decreaseIndentPattern 10 | ^(.*\*/)?\s*[}\]].*$ 11 | increaseIndentPattern 12 | ^.*[{\[][^}"'\]]*$ 13 | bracketIndentNextLinePattern 14 | (?x) 15 | ^ \s* \b(if|while|else)\b [^;]* $ 16 | | ^ \s* \b(for)\b .* $ 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /Packages/JavaScript/JavaScript.sublime-build: -------------------------------------------------------------------------------- 1 | { 2 | "cmd": ["node", "${file}"], 3 | "selector": "source.js", 4 | "working_dir": "${file_path}", 5 | // usually we dont have stdio to our JS scripts while doing test 6 | // "target": "console_exec", 7 | "variants": [ 8 | { 9 | "target": "console_exec", 10 | "cmd": ["closure-compiler.jar", "--js", "${file}", "--js_output_file", "${file_base_name}.min.js"], 11 | "name": "Minify (Closure Compiler)" 12 | } 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /Packages/JavaScript/Snippets/arrow-function.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | $0]]> 3 | fn 4 | (source.js | source.jsx | source.ts | source.tsx) - string - comment 5 | arrow function 6 | 7 | -------------------------------------------------------------------------------- /Packages/LSP/icons/error-src.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jfcherng-sublime/ST-my-settings/dfeb70b1771160bbebd5e2621ee9cd4f9da8be13/Packages/LSP/icons/error-src.png -------------------------------------------------------------------------------- /Packages/LSP/icons/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jfcherng-sublime/ST-my-settings/dfeb70b1771160bbebd5e2621ee9cd4f9da8be13/Packages/LSP/icons/error.png -------------------------------------------------------------------------------- /Packages/LSP/icons/error@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jfcherng-sublime/ST-my-settings/dfeb70b1771160bbebd5e2621ee9cd4f9da8be13/Packages/LSP/icons/error@2x.png -------------------------------------------------------------------------------- /Packages/LSP/icons/error@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jfcherng-sublime/ST-my-settings/dfeb70b1771160bbebd5e2621ee9cd4f9da8be13/Packages/LSP/icons/error@3x.png -------------------------------------------------------------------------------- /Packages/LSP/icons/info-src.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jfcherng-sublime/ST-my-settings/dfeb70b1771160bbebd5e2621ee9cd4f9da8be13/Packages/LSP/icons/info-src.png -------------------------------------------------------------------------------- /Packages/LSP/icons/info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jfcherng-sublime/ST-my-settings/dfeb70b1771160bbebd5e2621ee9cd4f9da8be13/Packages/LSP/icons/info.png -------------------------------------------------------------------------------- /Packages/LSP/icons/info@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jfcherng-sublime/ST-my-settings/dfeb70b1771160bbebd5e2621ee9cd4f9da8be13/Packages/LSP/icons/info@2x.png -------------------------------------------------------------------------------- /Packages/LSP/icons/info@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jfcherng-sublime/ST-my-settings/dfeb70b1771160bbebd5e2621ee9cd4f9da8be13/Packages/LSP/icons/info@3x.png -------------------------------------------------------------------------------- /Packages/LSP/icons/warning-src.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jfcherng-sublime/ST-my-settings/dfeb70b1771160bbebd5e2621ee9cd4f9da8be13/Packages/LSP/icons/warning-src.png -------------------------------------------------------------------------------- /Packages/LSP/icons/warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jfcherng-sublime/ST-my-settings/dfeb70b1771160bbebd5e2621ee9cd4f9da8be13/Packages/LSP/icons/warning.png -------------------------------------------------------------------------------- /Packages/LSP/icons/warning@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jfcherng-sublime/ST-my-settings/dfeb70b1771160bbebd5e2621ee9cd4f9da8be13/Packages/LSP/icons/warning@2x.png -------------------------------------------------------------------------------- /Packages/LSP/icons/warning@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jfcherng-sublime/ST-my-settings/dfeb70b1771160bbebd5e2621ee9cd4f9da8be13/Packages/LSP/icons/warning@3x.png -------------------------------------------------------------------------------- /Packages/Language - English/download.txt: -------------------------------------------------------------------------------- 1 | https://sourceforge.net/projects/wordlist/files/speller/ 2 | -------------------------------------------------------------------------------- /Packages/Language - English/en_US-large.aff: -------------------------------------------------------------------------------- 1 | SET UTF-8 2 | TRY esianrtolcdugmphbyfvkwzESIANRTOLCDUGMPHBYFVKWZ' 3 | ICONV 1 4 | ICONV ’ ' 5 | NOSUGGEST ! 6 | 7 | # ordinal numbers 8 | COMPOUNDMIN 1 9 | # only in compounds: 1th, 2th, 3th 10 | ONLYINCOMPOUND c 11 | # compound rules: 12 | # 1. [0-9]*1[0-9]th (10th, 11th, 12th, 56714th, etc.) 13 | # 2. [0-9]*[02-9](1st|2nd|3rd|[4-9]th) (21st, 22nd, 123rd, 1234th, etc.) 14 | COMPOUNDRULE 2 15 | COMPOUNDRULE n*1t 16 | COMPOUNDRULE n*mp 17 | WORDCHARS 0123456789 18 | 19 | PFX A Y 1 20 | PFX A 0 re . 21 | 22 | PFX I Y 1 23 | PFX I 0 in . 24 | 25 | PFX U Y 1 26 | PFX U 0 un . 27 | 28 | PFX C Y 1 29 | PFX C 0 de . 30 | 31 | PFX E Y 1 32 | PFX E 0 dis . 33 | 34 | PFX F Y 1 35 | PFX F 0 con . 36 | 37 | PFX K Y 1 38 | PFX K 0 pro . 39 | 40 | SFX V N 2 41 | SFX V e ive e 42 | SFX V 0 ive [^e] 43 | 44 | SFX N Y 3 45 | SFX N e ion e 46 | SFX N y ication y 47 | SFX N 0 en [^ey] 48 | 49 | SFX X Y 3 50 | SFX X e ions e 51 | SFX X y ications y 52 | SFX X 0 ens [^ey] 53 | 54 | SFX H N 2 55 | SFX H y ieth y 56 | SFX H 0 th [^y] 57 | 58 | SFX Y Y 1 59 | SFX Y 0 ly . 60 | 61 | SFX G Y 2 62 | SFX G e ing e 63 | SFX G 0 ing [^e] 64 | 65 | SFX J Y 2 66 | SFX J e ings e 67 | SFX J 0 ings [^e] 68 | 69 | SFX D Y 4 70 | SFX D 0 d e 71 | SFX D y ied [^aeiou]y 72 | SFX D 0 ed [^ey] 73 | SFX D 0 ed [aeiou]y 74 | 75 | SFX T N 4 76 | SFX T 0 st e 77 | SFX T y iest [^aeiou]y 78 | SFX T 0 est [aeiou]y 79 | SFX T 0 est [^ey] 80 | 81 | SFX R Y 4 82 | SFX R 0 r e 83 | SFX R y ier [^aeiou]y 84 | SFX R 0 er [aeiou]y 85 | SFX R 0 er [^ey] 86 | 87 | SFX Z Y 4 88 | SFX Z 0 rs e 89 | SFX Z y iers [^aeiou]y 90 | SFX Z 0 ers [aeiou]y 91 | SFX Z 0 ers [^ey] 92 | 93 | SFX S Y 4 94 | SFX S y ies [^aeiou]y 95 | SFX S 0 s [aeiou]y 96 | SFX S 0 es [sxzh] 97 | SFX S 0 s [^sxzhy] 98 | 99 | SFX P Y 3 100 | SFX P y iness [^aeiou]y 101 | SFX P 0 ness [aeiou]y 102 | SFX P 0 ness [^y] 103 | 104 | SFX M Y 1 105 | SFX M 0 's . 106 | 107 | SFX B Y 3 108 | SFX B 0 able [^aeiou] 109 | SFX B 0 able ee 110 | SFX B e able [^aeiou]e 111 | 112 | SFX L Y 1 113 | SFX L 0 ment . 114 | 115 | REP 90 116 | REP a ei 117 | REP ei a 118 | REP a ey 119 | REP ey a 120 | REP ai ie 121 | REP ie ai 122 | REP alot a_lot 123 | REP are air 124 | REP are ear 125 | REP are eir 126 | REP air are 127 | REP air ere 128 | REP ere air 129 | REP ere ear 130 | REP ere eir 131 | REP ear are 132 | REP ear air 133 | REP ear ere 134 | REP eir are 135 | REP eir ere 136 | REP ch te 137 | REP te ch 138 | REP ch ti 139 | REP ti ch 140 | REP ch tu 141 | REP tu ch 142 | REP ch s 143 | REP s ch 144 | REP ch k 145 | REP k ch 146 | REP f ph 147 | REP ph f 148 | REP gh f 149 | REP f gh 150 | REP i igh 151 | REP igh i 152 | REP i uy 153 | REP uy i 154 | REP i ee 155 | REP ee i 156 | REP j di 157 | REP di j 158 | REP j gg 159 | REP gg j 160 | REP j ge 161 | REP ge j 162 | REP s ti 163 | REP ti s 164 | REP s ci 165 | REP ci s 166 | REP k cc 167 | REP cc k 168 | REP k qu 169 | REP qu k 170 | REP kw qu 171 | REP o eau 172 | REP eau o 173 | REP o ew 174 | REP ew o 175 | REP oo ew 176 | REP ew oo 177 | REP ew ui 178 | REP ui ew 179 | REP oo ui 180 | REP ui oo 181 | REP ew u 182 | REP u ew 183 | REP oo u 184 | REP u oo 185 | REP u oe 186 | REP oe u 187 | REP u ieu 188 | REP ieu u 189 | REP ue ew 190 | REP ew ue 191 | REP uff ough 192 | REP oo ieu 193 | REP ieu oo 194 | REP ier ear 195 | REP ear ier 196 | REP ear air 197 | REP air ear 198 | REP w qu 199 | REP qu w 200 | REP z ss 201 | REP ss z 202 | REP shun tion 203 | REP shun sion 204 | REP shun cion 205 | REP size cise 206 | -------------------------------------------------------------------------------- /Packages/LiveReload-plugins/MarkdownLiveReload.py: -------------------------------------------------------------------------------- 1 | import sublime 2 | import sublime_plugin 3 | import os 4 | import sys 5 | 6 | # fix for import order 7 | sys.path.append(os.path.join(sublime.packages_path(), "LiveReload")) 8 | LiveReload = __import__("LiveReload") 9 | sys.path.remove(os.path.join(sublime.packages_path(), "LiveReload")) 10 | 11 | 12 | class MarkdownLiveReload(LiveReload.Plugin, sublime_plugin.EventListener): 13 | title = "Markdown Preview" 14 | description = "Generate preview in real-time" 15 | file_types = ".md,.markdown,.mdown" 16 | 17 | def on_post_save(self, view): 18 | self.refresh(os.path.basename(view.file_name())) 19 | 20 | 21 | """ 22 | Plugins for LiveReload should provide the following attributes: 23 | 24 | description (string) describing your plugin 25 | title (string) naming your plugin 26 | file_types (string) file_types which should trigger refresh for this plugin 27 | 28 | Public methods: 29 | 30 | self.refresh(filename, settings): 31 | 32 | (string) filename; file to refresh (.css, .js, jpg ...) 33 | (object) settings; how to reload(entire page or just parts) 34 | 35 | self.sendCommand(plugin, command, settings): 36 | 37 | (instance) plugin; instance 38 | (string) command; to trigger in livereload.js (refresh, info, or one of the plugins) 39 | (object) settings; additional data that gets passed to command (should be json parsable) 40 | 41 | self.addResource(req_path, buffer, content_type='text/plain'): 42 | 43 | (string) req_path; browser path to file you want to serve. Ex: /yourfile.js 44 | (string/file) buffer; string or file instance to file you want to serve 45 | (string) content_type; Mime-type of file you want to serve 46 | 47 | self.listClients(): 48 | 49 | returns list with all connected clients with their req_url and origin 50 | 51 | """ 52 | -------------------------------------------------------------------------------- /Packages/Makefile/Make (self).sublime-build: -------------------------------------------------------------------------------- 1 | { 2 | "shell_cmd": "make", 3 | "file_regex": "^(..[^:\n]*):([0-9]+):?([0-9]+)?:? (.*)$", 4 | "working_dir": "${file_path}", 5 | "selector": "source.makefile", 6 | "syntax": "Packages/Makefile/Make Output.sublime-syntax", 7 | "keyfiles": ["Makefile", "makefile"], 8 | 9 | "variants": 10 | [ 11 | { 12 | "name": "Clean", 13 | "shell_cmd": "make clean" 14 | } 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /Packages/Makefile/snippets/dot-phony.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 3 | .phony 4 | source.makefile - meta.function 5 | 6 | -------------------------------------------------------------------------------- /Packages/Markdown/.python-version: -------------------------------------------------------------------------------- 1 | 3.8 2 | -------------------------------------------------------------------------------- /Packages/Markdown/Snippets/details.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | details & summary 3 | ${1:$2} 4 | $3 5 | ]]> 6 | details 7 | text.html.markdown - (meta.image | meta.link) 8 | 9 | -------------------------------------------------------------------------------- /Packages/Markdown/Symbol List - Heading.tmPreferences: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | scope 5 | text.html.markdown markup.heading - meta.whitespace.newline.markdown 6 | settings 7 | 8 | showInSymbolList 9 | 1 10 | symbolTransformation 11 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /Packages/PHP/Snippets/Constructor.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 6 | con 7 | source.php - string - comment 8 | function __construct 9 | 10 | -------------------------------------------------------------------------------- /Packages/PHP/Snippets/class-{-}.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 8 | class 9 | source.php - string - comment 10 | class … 11 | 12 | -------------------------------------------------------------------------------- /Packages/PHP/Snippets/interface-{-}.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 8 | interface 9 | source.php - string - comment 10 | interface … 11 | 12 | -------------------------------------------------------------------------------- /Packages/PHP/Snippets/trait-{-}.sublime-snippet: -------------------------------------------------------------------------------- 1 | 2 | 8 | trait 9 | source.php - string - comment 10 | trait … 11 | 12 | -------------------------------------------------------------------------------- /Packages/PHP/macros/append-comma-newline.sublime-macro: -------------------------------------------------------------------------------- 1 | [ 2 | {"command": "move_to", "args": {"to": "hardeol"}}, 3 | {"command": "insert", "args": {"characters": ",\n"}} 4 | ] 5 | -------------------------------------------------------------------------------- /Packages/PHP/macros/append-semicolon-newline.sublime-macro: -------------------------------------------------------------------------------- 1 | [ 2 | {"command": "move_to", "args": {"to": "hardeol"}}, 3 | {"command": "insert", "args": {"characters": ";\n"}} 4 | ] 5 | -------------------------------------------------------------------------------- /Packages/PHP/macros/append-semicolon.sublime-macro: -------------------------------------------------------------------------------- 1 | [ 2 | {"command": "move_to", "args": {"to": "hardeol"}}, 3 | {"command": "insert", "args": {"characters": ";"}} 4 | ] 5 | -------------------------------------------------------------------------------- /Packages/PHP/macros/auto-array-equals-gt.sublime-macro: -------------------------------------------------------------------------------- 1 | [ 2 | {"command": "move_to", "args": {"to": "hardeol"}}, 3 | {"command": "insert", "args": {"characters": " => "}} 4 | ] 5 | -------------------------------------------------------------------------------- /Packages/PHP/macros/auto-pair-braces-current-line.sublime-macro: -------------------------------------------------------------------------------- 1 | [ 2 | {"command": "move_to", "args": {"to": "hardeol"}}, 3 | {"command": "insert", "args": {"characters": " {\n\n}"}}, 4 | {"command": "move", "args": {"by": "lines", "forward": false} }, 5 | {"command": "reindent", "args": {"single_line": true}} 6 | ] 7 | -------------------------------------------------------------------------------- /Packages/PHP/macros/auto-pair-braces-next-line.sublime-macro: -------------------------------------------------------------------------------- 1 | [ 2 | {"command": "move_to", "args": {"to": "hardeol"}}, 3 | {"command": "insert", "args": {"characters": "\n{}"}}, 4 | {"command": "move", "args": {"by": "characters", "forward": false} }, 5 | {"command": "insert", "args": {"characters": "\n\n"}}, 6 | {"command": "move", "args": {"by": "lines", "forward": false} }, 7 | {"command": "reindent", "args": {"single_line": true}} 8 | ] 9 | -------------------------------------------------------------------------------- /Packages/PHP/macros/wrap-newlines.sublime-macro: -------------------------------------------------------------------------------- 1 | [ 2 | {"command": "insert", "args": {"characters": "\n\n"} }, 3 | {"command": "move", "args": {"by": "lines", "forward": false} }, 4 | {"command": "move_to", "args": {"to": "hardeol", "extend": false} }, 5 | {"command": "reindent", "args": {"single_line": true} } 6 | ] 7 | -------------------------------------------------------------------------------- /Packages/Python/Python.sublime-build: -------------------------------------------------------------------------------- 1 | { 2 | "cmd": ["python", "-u", "${file}"], 3 | "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", 4 | "selector": "source.python", 5 | "target": "console_exec", 6 | "env": { "PYTHONIOENCODING": "utf-8" }, 7 | "variants": [ 8 | { 9 | "name": "Syntax Check", 10 | "cmd": ["python", "-m", "py_compile", "${file}"] 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /Packages/ShellScript/ShellScript.sublime-build: -------------------------------------------------------------------------------- 1 | { 2 | "shell_cmd": "./$file_name", 3 | "working_dir": "$file_path", 4 | 5 | "target": "console_exec", 6 | "selector": "source.shell", 7 | "word_wrap": false, 8 | 9 | "windows": { 10 | // Try to run via MSYS2 shell on Windows 11 | "cmd": ["sh", "$file_name"] 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Packages/Text/Plain text.tmLanguage: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | fileTypes 5 | 6 | txt 7 | 8 | name 9 | Plain Text 10 | patterns 11 | 12 | 13 | name 14 | meta.text.cjk 15 | begin 16 | 17 | (?x)(?: 18 | [\x{2E00}-\x{9FFF}] | 19 | [\x{A960}-\x{A97F}] | 20 | [\x{AC00}-\x{D7FF}] | 21 | [\x{F900}-\x{FAFF}] | 22 | [\x{FE30}-\x{FE6F}] | 23 | [\x{20000}-\x{3134F}])+ 24 | 25 | end 26 | 27 | 28 | 29 | scopeName 30 | text.plain 31 | 32 | 33 | -------------------------------------------------------------------------------- /Packages/User/.gitignore: -------------------------------------------------------------------------------- 1 | # plugin: ColorHelper 2 | color_helper.palettes 3 | 4 | # plugin: OverrideAudit 5 | OverrideAudit.status 6 | 7 | # plugin: Package Control 8 | *.user-ca-bundle 9 | 10 | # plugin: ProjectManager 11 | /Projects/ 12 | -------------------------------------------------------------------------------- /Packages/User/AceJump.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | // Characters to be used as labels in order they'll appear 3 | "labels": "abcdefghjkmnpqrstuvwxyzABCDEFGHKLMNPQRSTUVWXYZ0123456789", 4 | 5 | // Syntax highlighting scope for the labels 6 | "labels_scope": "invalid", 7 | 8 | // Controls the color of inactive carets when inputting the character. 9 | "inactive_carets_scope": "text.plain", 10 | 11 | // valid values: 1 (replace char), 2 (inline phantom) 12 | "hinting_mode": 2, 13 | 14 | // the CSS applies to phantoms when highlight_mode is 2 (inline phantom) 15 | // @see https://www.sublimetext.com/docs/minihtml.html#css 16 | "phantom_css": "html, body { padding: 0; margin: 0; } .label { font-weight: 700; background-color: var(--foreground); color: var(--background); padding: 0 0.25em; line-height: 1; font-size: 0.98em; }", 17 | } 18 | -------------------------------------------------------------------------------- /Packages/User/AutoSetSyntax.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "run_on_startup_views": true, 3 | "trim_suffixes_auto": true, 4 | "user_syntax_rules": [ 5 | { 6 | "syntaxes": ["scope:text.html.markdown"], 7 | "selector": "text.plain", 8 | "rules": [ 9 | { 10 | "constraint": "is_name", 11 | "args": ["TODO", "README", "CHANGELOG"] 12 | } 13 | ] 14 | }, 15 | { 16 | "comment": "Singularity definition files", 17 | "syntaxes": ["scope:source.singularity_definition"], 18 | "selector": "text.plain | source.shell", 19 | "rules": [ 20 | { 21 | "constraint": "name_contains_regex", 22 | "args": ["^Singularity[-_.@]"] 23 | } 24 | ] 25 | }, 26 | ], 27 | "magika.enabled": true, 28 | } 29 | -------------------------------------------------------------------------------- /Packages/User/Batch File.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "default_line_ending": "windows", 3 | } 4 | -------------------------------------------------------------------------------- /Packages/User/C++.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "extensions": 3 | [ 4 | "h", 5 | "hlsl" 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /Packages/User/CSS.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "disable_default_completions": true, 3 | "extensions": 4 | [ 5 | "css.twig" 6 | ], 7 | // "-" is not a word breaker 8 | "word_separators": "./\\()\"':,.;<>~!@#$%^&*|+=[]{}`~?", 9 | "tab_size": 2, 10 | } 11 | -------------------------------------------------------------------------------- /Packages/User/Console Input Widget.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "auto_match_enabled": true, 3 | "match_selection": true, 4 | } 5 | -------------------------------------------------------------------------------- /Packages/User/Diff.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "trim_trailing_white_space_on_save": "none", 3 | } 4 | -------------------------------------------------------------------------------- /Packages/User/Doxy.sublime-settings: -------------------------------------------------------------------------------- 1 | // Settings in here override those in "${packages}/DoxyDoxygen (evolution)/Doxy.sublime-settings", 2 | // and are overridden in turn by syntax-specific settings. 3 | { 4 | // If true, the primitives "Boolean" and "Integer" are shortened to "Bool" and "Int" 5 | // 6 | // Some tools, like PHP CODE SNIFFER, may require this option to work. 7 | "phpdoc_short_primitives": true, 8 | 9 | // "min_spaces_between_columns": [ 1, 1 ], 10 | // "preferred_tabs_sizes": [ 1, 2 ], 11 | 12 | "group_tabs_sizes_by": "section", 13 | } 14 | -------------------------------------------------------------------------------- /Packages/User/Emmet.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "abbreviation_preview": "markup", 3 | "popup_css": "*{ font-size: 1rem; }", 4 | 5 | // no telemetry 6 | "uid": "thank-but-dont-track-me", 7 | "telemetry": false, 8 | } 9 | -------------------------------------------------------------------------------- /Packages/User/FileManager.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "reveal_in_sidebar": true, 3 | // we prefer the "Terminal" plugin 4 | "show_open_terminal_command": false, 5 | } 6 | -------------------------------------------------------------------------------- /Packages/User/Find Results.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "color_scheme": "Packages/my_theme/Find Results.hidden-color-scheme", 3 | } 4 | -------------------------------------------------------------------------------- /Packages/User/Fmt.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "rules": [ 3 | // biome (https://biomejs.dev/reference/cli/#biome-format) 4 | { 5 | "selector": "source.js", 6 | "cmd": [ 7 | "biome", 8 | "format", 9 | "--files-max-size=31457280", // 30 MB 10 | "--indent-style=space", 11 | "--indent-width=2", 12 | "--line-ending=lf", 13 | "--line-width=120", 14 | "--semicolons=always", 15 | "--trailing-comma=all", 16 | // ... 17 | "--stdin-file-path=stdin.js", 18 | ], 19 | "format_on_save": false, 20 | "merge_type": "replace", 21 | }, 22 | { 23 | "selector": "source.jsx", 24 | "cmd": [ 25 | "biome", 26 | "format", 27 | "--files-max-size=31457280", // 30 MB 28 | "--indent-style=space", 29 | "--indent-width=2", 30 | "--line-ending=lf", 31 | "--line-width=120", 32 | "--semicolons=always", 33 | "--trailing-comma=all", 34 | // ... 35 | "--stdin-file-path=stdin.jsx", 36 | ], 37 | "format_on_save": false, 38 | "merge_type": "diff", 39 | }, 40 | { 41 | "selector": "source.ts", 42 | "cmd": [ 43 | "biome", 44 | "format", 45 | "--files-max-size=31457280", // 30 MB 46 | "--indent-style=space", 47 | "--indent-width=2", 48 | "--line-ending=lf", 49 | "--line-width=120", 50 | "--semicolons=always", 51 | "--trailing-comma=all", 52 | // ... 53 | "--stdin-file-path=stdin.ts", 54 | ], 55 | "format_on_save": false, 56 | "merge_type": "diff", 57 | }, 58 | { 59 | "selector": "source.tsx", 60 | "cmd": [ 61 | "biome", 62 | "format", 63 | "--files-max-size=31457280", // 30 MB 64 | "--indent-style=space", 65 | "--indent-width=2", 66 | "--line-ending=lf", 67 | "--line-width=120", 68 | "--semicolons=always", 69 | "--trailing-comma=all", 70 | // ... 71 | "--stdin-file-path=stdin.tsx", 72 | ], 73 | "format_on_save": false, 74 | "merge_type": "diff", 75 | }, 76 | // ruff 77 | { 78 | "selector": "source.python", 79 | "cmd": [ 80 | "ruff", 81 | "format", 82 | "--isolated", 83 | "--line-length=120", 84 | "--preview", 85 | "--stdin-filename=stdin.py", 86 | "--target-version=py311", 87 | ], 88 | "format_on_save": false, 89 | "merge_type": "replace", 90 | }, 91 | // shfmt 92 | { 93 | "selector": "source.shell.bash", 94 | "cmd": [ 95 | "shfmt", 96 | "--case-indent", 97 | "--indent=4", 98 | "--simplify", 99 | ], 100 | "format_on_save": false, 101 | "merge_type": "replace", 102 | }, 103 | ], 104 | } 105 | -------------------------------------------------------------------------------- /Packages/User/Go.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "tab_size": 4, 3 | "translate_tabs_to_spaces": false, 4 | } 5 | -------------------------------------------------------------------------------- /Packages/User/HTML.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | // "-" is not a word breaker 3 | "word_separators": "./\\()\"':,.;<>~!@#$%^&*|+=[]{}`~?", 4 | "tab_size": 2, 5 | // disable built-in tag autocompletion? 6 | "disable_default_completions": false, 7 | // "default_completions_selector": "", 8 | } 9 | -------------------------------------------------------------------------------- /Packages/User/HyperClick.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "annotation_found_text": "→", 3 | "annotation_not_found_text": "X", 4 | "annotations_enabled": true, 5 | "scopes": { 6 | "source.js | source.jsx | source.ts | source.tsx": { 7 | "regexes": [ 8 | "^import\\s+(?:.+?\\s+from\\s+)?['\"]([^'\"]+)['\"]", 9 | "^from\\s+['\"]([^'\"]+)['\"]", 10 | ".*require\\(['\"]([^'\"]+)['\"]", 11 | ], 12 | "extensions": [ 13 | "ts", 14 | "js", 15 | "tsx", 16 | "jsx", 17 | "vue", 18 | "mjs", 19 | "svelte", 20 | ], 21 | "vendor_dirs": [ 22 | "node_modules", 23 | ], 24 | "lookup_paths": [], 25 | "aliases": { 26 | "@assets": "assets", 27 | }, 28 | }, 29 | "source.sass | source.scss": { 30 | "regexes": [ 31 | "^@import\\s+['\"]([^'\"]+)['\"]", 32 | "^@import\\s+url\\(['\"]([^'\"]+)['\"]", 33 | "^@import\\s+\\(?.*\\)?\\s*['\"]([^'\"]+)['\"]", 34 | ], 35 | "extensions": [ 36 | "scss", 37 | "sass", 38 | ], 39 | "vendor_dirs": [ 40 | "node_modules", 41 | ], 42 | "aliases": { 43 | "@assets": "assets", 44 | }, 45 | }, 46 | "source.css": { 47 | "regexes": [ 48 | "^@import\\s+['\"]([^'\"]+)['\"]", 49 | "^@import\\s+url\\(['\"]([^'\"]+)['\"]", 50 | ], 51 | "extensions": [ 52 | "css", 53 | ], 54 | }, 55 | "source.php": { 56 | "regexes": [ 57 | // jfcherng 58 | ".*\\b(?:include|require)(?:_once)?\\s*\\(?['\"]([^'\"]+)['\"]\\)?;?$", 59 | // Symfony render Twig templates in PHP 60 | ".*['\"]([^'\"]+\\.twig(?:\\.[^'\"]*)?)['\"]", 61 | ], 62 | "extensions": [ 63 | "php", 64 | "php5", 65 | "php7", 66 | "php8", 67 | ], 68 | "lookup_paths": [ 69 | "templates", 70 | "views", 71 | ], 72 | }, 73 | "text.jinja": { 74 | "regexes": [ 75 | // jfcherng 76 | "^{%\\s+(?:extends|include|import)\\s+['\"]([^'\"]+)['\"]", 77 | "^{%\\s+from\\s+['\"]([^'\"]+)['\"]", 78 | ], 79 | }, 80 | "text.html.twig": { 81 | "regexes": [ 82 | // jfcherng 83 | "^{%\\s+(?:embed|extends|include|import|use)\\s+['\"]([^'\"]+)['\"]", 84 | "^{%\\s+from\\s+['\"]([^'\"]+)['\"]", 85 | "^{%\\s+.+?\\s+with\\s+['\"]([^'\"]+)['\"]", 86 | ], 87 | "extensions": [ 88 | "twig" 89 | ], 90 | "lookup_paths": [ 91 | "templates", 92 | "views", 93 | ], 94 | }, 95 | // jfcherng 96 | "text.html.basic": { 97 | "regexes": [ 98 | ".*\\b(?:href|src)=['\"]([^'\"?]+)", 99 | ], 100 | "extensions": ["htm", "html"] 101 | }, 102 | "text.restructuredtext": { 103 | "regexes": [ 104 | "^\\s*\\.\\. include::\\s+(.+)$", 105 | ], 106 | "extensions": [ 107 | "rst", 108 | ], 109 | }, 110 | }, 111 | } 112 | -------------------------------------------------------------------------------- /Packages/User/JavaScript.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "tab_size": 2, 3 | } 4 | -------------------------------------------------------------------------------- /Packages/User/Jinja.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "tab_size": 2, 3 | } 4 | -------------------------------------------------------------------------------- /Packages/User/LESS.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | // "-" is not a word breaker 3 | "word_separators": "./\\()\"':,.;<>~!@#$%^&*|+=[]{}`~?", 4 | "tab_size": 2, 5 | } 6 | -------------------------------------------------------------------------------- /Packages/User/LSP-clangd.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "initializationOptions": { 3 | // @see https://clangd.llvm.org/extensions#compilation-commands 4 | // Controls the flags used when no specific compile command is found. 5 | // The compile command will be approximately clang $FILE $fallbackFlags in this case. 6 | // "fallbackFlags": ["-std=c++20"], 7 | "clangd.clang-tidy": true, 8 | }, 9 | } 10 | -------------------------------------------------------------------------------- /Packages/User/LSP-copilot.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "auto_ask_completions": true, 4 | "commit_completion_on_tab": false, 5 | "hook_to_auto_complete_command": true, 6 | // "completion_style": "phantom", 7 | }, 8 | } 9 | -------------------------------------------------------------------------------- /Packages/User/LSP-css.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "disabled_capabilities": { 3 | // prefer the ColorHelper plugin 4 | "colorProvider": true, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /Packages/User/LSP-dockerfile.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "selector": "source.dockerfile | source.containerfile" 3 | } 4 | -------------------------------------------------------------------------------- /Packages/User/LSP-html.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "disabled_capabilities": { 3 | // prefer the ColorHelper plugin 4 | "colorProvider": true, 5 | }, 6 | // ST4 configuration 7 | "selector": "text.html.basic | text.html.twig | embedding.php | text.jinja", 8 | } 9 | -------------------------------------------------------------------------------- /Packages/User/LSP-intelephense.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "auto_complete_selector": "punctuation.accessor | punctuation.definition.variable | punctuation.separator.namespace | punctuation.definition.tag.begin", 3 | "initializationOptions": { 4 | "clearCache": false, 5 | "storagePath": "${home}/.intelephense", 6 | "globalStoragePath": "${home}/.intelephense", 7 | // To use the licenceKey, 8 | // you can also write it to "YOUR_HOME_DIR/intelephense/licence.txt" 9 | // and comment out the following property 10 | "licenceKey": "${packages}/User/intelephense.sublime-license", 11 | }, 12 | // @see https://github.com/bmewburn/vscode-intelephense/blob/master/package.json 13 | "settings": { 14 | "intelephense.files.associations": [ 15 | // default 16 | "*.php", 17 | "*.phtml", 18 | // my own 19 | "*.inc", 20 | ], 21 | "intelephense.files.exclude": [ 22 | // default 23 | "**/.git/**", 24 | "**/.svn/**", 25 | "**/.hg/**", 26 | "**/CVS/**", 27 | "**/.DS_Store/**", 28 | "**/node_modules/**", 29 | "**/bower_components/**", 30 | "**/vendor/**/{Tests,tests}/**", 31 | "**/.history/**", 32 | "**/vendor/**/vendor/**", 33 | // my own 34 | "**/branch-*/**", 35 | "**/vendor/**/{Example,example,Examples,examples}/**" 36 | ], 37 | }, 38 | } 39 | -------------------------------------------------------------------------------- /Packages/User/LSP-json.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "initializationOptions": { 3 | "provideFormatter": true, 4 | }, 5 | "settings": { 6 | "json.format.enable": true, 7 | }, 8 | "disabled_capabilities": { 9 | // prefer the ColorHelper plugin 10 | "colorProvider": true, 11 | }, 12 | } 13 | -------------------------------------------------------------------------------- /Packages/User/LSP-pylance.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | // if you are developing this plugin... 3 | "developing": true, 4 | ////////////////// 5 | // LSP settings // 6 | ////////////////// 7 | "disabled_capabilities": { 8 | // set to true if you don't want semantic highlighting 9 | "semanticTokensProvider": true, 10 | }, 11 | "settings": { 12 | // Support inlay hints. 13 | "python.analysis.inlayHints.callArgumentNames": "partial", 14 | // Use a predefined setup from this plugin, valid values are: 15 | // - "": An empty string does nothing. 16 | // - "sublime_text": Suitable for people who are developing ST Python plugins. 17 | // The Python version which this plugin runs on will be used. 18 | // `sys.path` from plugin_host will be added into "python.analysis.extraPaths" 19 | // so ST package dependecies can be resolved by the LSP server. 20 | // - "sublime_text_33": Similar to "sublime_text" but Python 3.3 forced. 21 | // - "sublime_text_38": Similar to "sublime_text" but Python 3.8 forced. 22 | "pyright.dev_environment": "sublime_text", 23 | // Offers predefined configurations to help users optimize Pylance's performance based on their development needs. 24 | // @see https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance#settings-and-customization 25 | "python.analysis.languageServerMode": "default", 26 | // Add parentheses to function completions. 27 | "python.analysis.completeFunctionParens": false, 28 | // Defines the default format for import module. 29 | "python.analysis.importFormat": "relative", 30 | // Additional import search resolution paths 31 | "python.analysis.extraPaths": [ 32 | // project's stubs 33 | "$folder/stubs", 34 | "$folder/typings", 35 | // my custom stubs 36 | "$packages/../stubs", 37 | "$packages/../typings", 38 | ], 39 | // Allows a user to override the severity levels for individual diagnostics. 40 | // @see https://github.com/microsoft/pyright/blob/master/docs/configuration.md#type-check-diagnostics-settings 41 | "python.analysis.diagnosticSeverityOverrides": { 42 | "reportDuplicateImport": "warning", 43 | "reportImplicitStringConcatenation": "warning", 44 | "reportUnboundVariable": "warning", 45 | "reportUnusedClass": "information", 46 | "reportUnusedFunction": "information", 47 | "reportUnusedImport": "information", 48 | "reportUnusedVariable": "information", 49 | }, 50 | }, 51 | } 52 | -------------------------------------------------------------------------------- /Packages/User/LSP-ruff.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "initializationOptions": { 3 | "settings": { 4 | "lint.ignore": ["F403", "E402"], 5 | "lint.preview": true, 6 | }, 7 | }, 8 | } 9 | -------------------------------------------------------------------------------- /Packages/User/LSP-yaml.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "settings": { 3 | "yaml.completion": true, 4 | "yaml.format.bracketSpacing": true, 5 | "yaml.format.enable": true, 6 | "yaml.format.printWidth": 120, 7 | "yaml.format.proseWrap": "always", 8 | "yaml.format.singleQuote": true, 9 | "yaml.hover": true, 10 | "yaml.schemas": {}, 11 | "yaml.schemaStore.enable": true, 12 | "yaml.validate": true, 13 | }, 14 | } 15 | -------------------------------------------------------------------------------- /Packages/User/LSP.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | // LSP servers configurations 3 | "clients": { 4 | "diagnostic-ls": { 5 | "enabled": false, 6 | "command": [ 7 | "diagnostic-languageserver", 8 | "--stdio", 9 | ], 10 | "selector": "source.python | source.shell", 11 | "initializationOptions": { 12 | "linters": { 13 | // REF: https://gist.github.com/rchl/1077151a7339b734c1678fc626b123a2 14 | "shellcheck": { 15 | "command": "shellcheck", 16 | "debounce": 100, 17 | "args": [ 18 | "--enable=all", 19 | "--format=json", 20 | "-", 21 | ], 22 | "offsetLine": 0, 23 | "offsetColumn": 0, 24 | "sourceName": "shellcheck", 25 | "formatLines": 1, 26 | "parseJson": { 27 | "line": "line", 28 | "column": "column", 29 | "endLine": "endLine", 30 | "endColumn": "endColumn", 31 | "security": "level", 32 | "message": "\\${message} [\\${code}]", 33 | }, 34 | "securities": { 35 | "error": "error", 36 | "warning": "warning", 37 | "note": "info", 38 | "info": "info", 39 | "style": "info", 40 | }, 41 | }, 42 | }, 43 | "filetypes": { 44 | "python": [ 45 | "flake8" 46 | ], 47 | "shellscript": "shellcheck", 48 | }, 49 | }, 50 | }, 51 | "taplo": { 52 | "enabled": true, 53 | "command": ["taplo", "lsp", "stdio"], 54 | "selector": "source.toml", 55 | }, 56 | }, 57 | // other settings 58 | "semantic_highlighting": true, 59 | "show_inlay_hints": true, 60 | "show_diagnostics_panel_on_save": 0, 61 | "diagnostics_gutter_marker": "sign", 62 | "diagnostics_highlight_style": "box", 63 | "document_highlight_style": "underline", 64 | "hover_highlight_style": "stippled", 65 | "inhibit_snippet_completions": false, 66 | "inhibit_word_completions": false, 67 | "show_diagnostics_count_in_view_status": true, 68 | "show_diagnostics_in_view_status": true, 69 | "show_diagnostics_severity_level": 4, 70 | "show_references_in_quick_panel": false, 71 | "show_symbol_action_links": true, 72 | "show_view_status": true, 73 | "log_debug": false, 74 | "log_server": [ 75 | "panel", 76 | ], 77 | "lsp_code_actions_on_save": { 78 | // "source.fixAll": true, 79 | // "source.organizeImports": true, 80 | }, 81 | "lsp_format_on_save": false, 82 | // Controls if files that were part of a refactoring (e.g. rename) are saved automatically: 83 | // "always" - save all affected files 84 | // "preserve" - only save files that didn't have unsaved changes beforehand 85 | // "preserve_opened" - only save opened files that didn't have unsaved changes beforehand 86 | // and open other files that were affected by the refactoring 87 | // "never" - never save files automatically 88 | "refactoring_auto_save": "preserve", 89 | } 90 | -------------------------------------------------------------------------------- /Packages/User/LiveReload.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "enabled_plugins": [ 3 | "MarkdownLiveReload" 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /Packages/User/Log.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "word_wrap": false, 3 | } 4 | -------------------------------------------------------------------------------- /Packages/User/Markdown.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "rulers": [80, 100, 120], 3 | "spell_check": true, 4 | "trim_trailing_white_space_on_save": "none", 5 | // force always prefer 2-space indentation. 6 | // the auto detection is often confused by lists, fenced code blocks... 7 | "detect_indentation": false, 8 | "tab_size": 2, 9 | "translate_tabs_to_spaces": true, 10 | } 11 | -------------------------------------------------------------------------------- /Packages/User/Package Control.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "install_prereleases": 3 | [ 4 | "ColorHelper", 5 | "LaTeXTools", 6 | "Package Control", 7 | "PackageDev", 8 | "PowerShell", 9 | ], 10 | "installed_packages": 11 | [ 12 | "AceJump-Chinese", 13 | "Advanced Substation Alpha (ASS)", 14 | "AlignTab", 15 | "AutoFilePath", 16 | "AutomaticPackageReloader", 17 | "AutoSetSyntax", 18 | "BetterFindBuffer", 19 | "BootstrapAutocomplete", 20 | "BracketHighlighter", 21 | "Case Conversion", 22 | "CMake", 23 | "Codec", 24 | "ColorHelper", 25 | "CommandAndMenu", 26 | "CommandsBrowser", 27 | "Containerfile", 28 | "ConvertToUTF8", 29 | "DoxyDoxygen (evolution)", 30 | "EditorConfig", 31 | "Emmet", 32 | "Emoji", 33 | "Fanhuaji", 34 | "FileIcons", 35 | "FileManager", 36 | "FindCursor", 37 | "Fmt", 38 | "FollowLnk", 39 | "GenerateUUID", 40 | "Gomod", 41 | "GotoEndOfLineOrScope", 42 | "HyperClick", 43 | "Indent XML", 44 | "INI", 45 | "Inline Python", 46 | "Insert Nums", 47 | "Jinja2", 48 | "Jq", 49 | "jQuery", 50 | "JsPrettier", 51 | "KDL", 52 | "Less", 53 | "LiveReload", 54 | "LSP", 55 | "LSP-bash", 56 | "LSP-clangd", 57 | "LSP-copilot", 58 | "LSP-css", 59 | "LSP-dockerfile", 60 | "LSP-eslint", 61 | "LSP-file-watcher-chokidar", 62 | "LSP-html", 63 | "LSP-intelephense", 64 | "LSP-intelephense-patcher", 65 | "LSP-json", 66 | "LSP-marksman", 67 | "LSP-ruff", 68 | "LSP-typescript", 69 | "LSP-yaml", 70 | "MarkdownPreview", 71 | "MultiEditUtils", 72 | "nginx", 73 | "OpenUri", 74 | "OverrideAudit", 75 | "Package Control", 76 | "PackageDev", 77 | "Phpcs", 78 | "PowerShell", 79 | "ProjectManager", 80 | "RainbowIndent", 81 | "RichFormatCodes", 82 | "Sass", 83 | "ScopeHunter", 84 | "SelectUntil", 85 | "Sort Lines (Numerically)", 86 | "SublimeLinter", 87 | "SublimeLinter-contrib-markdownlint", 88 | "SublimeLinter-contrib-sublime-syntax", 89 | "SublimeLinter-php", 90 | "Terminal", 91 | "TOML", 92 | "Twig", 93 | "Verilog", 94 | "Vue", 95 | "WindowsContextMenu", 96 | "YamlPipelines", 97 | ], 98 | "repositories": 99 | [ 100 | "https://raw.githubusercontent.com/jfcherng-sublime/ST-my-package-control/master/repository.json", 101 | ], 102 | "in_process_packages": 103 | [ 104 | ], 105 | } 106 | -------------------------------------------------------------------------------- /Packages/User/PackageDev.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "settings.auto_complete": false, 3 | "settings.tooltip": false, 4 | } 5 | -------------------------------------------------------------------------------- /Packages/User/PowershellSyntax.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "default_line_ending": "windows", 3 | } 4 | -------------------------------------------------------------------------------- /Packages/User/Python.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "tab_size": 4, 3 | "translate_tabs_to_spaces": true, 4 | "auto_complete_triggers": [ 5 | { 6 | "selector": "source.python - string - comment - constant.numeric", 7 | "characters": "." 8 | } 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /Packages/User/RainbowIndent.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "level_colors": [ 3 | "region.indent.0", 4 | "region.indent.1", 5 | "region.indent.2", 6 | "region.indent.3", 7 | "region.indent.4", 8 | "region.indent.5", 9 | ], 10 | "level_style": "block", 11 | } 12 | -------------------------------------------------------------------------------- /Packages/User/SCSS.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | // "-" is not a word breaker 3 | "word_separators": "./\\()\"':,.;<>~!@#$%^&*|+=[]{}`~?", 4 | "tab_size": 2, 5 | } 6 | -------------------------------------------------------------------------------- /Packages/User/TodoReview.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "patterns": { 3 | "TODO_1": "TODO\\s*:\\s*(?P.*)", 4 | "TODO_2": "@todo\\s+(?P((?!\\s*\\*/).)*)", 5 | }, 6 | "patterns_weight": { 7 | }, 8 | "exclude_folders": [ 9 | "/.cache/", 10 | "/.clangd/", 11 | "/.git/", 12 | "/.hg/", 13 | "/.mypy_cache/", 14 | "/.phpunit/", 15 | "/.sass-cache/", 16 | "/.simvision/", 17 | "/.svn/", 18 | "/.venv/", 19 | "/build/", 20 | "/builds/", 21 | "/node_modules/", 22 | "/var/", 23 | "/vendor/", 24 | "/__MACOSX/", 25 | "/__pycache__/", 26 | ], 27 | "exclude_files": [ 28 | "*.sublime-project", 29 | "*.sublime-workspace", 30 | "composer.lock", 31 | "LICENSE", 32 | "LICENSE.*", 33 | "package-lock.json", 34 | "README", 35 | "README.*", 36 | "yarn.lock", 37 | ], 38 | "resolve_symlinks": true, 39 | "case_sensitive": false, 40 | "render_include_folder": true, 41 | "render_folder_depth": "auto", 42 | "render_maxspaces": 1, 43 | "render_header_format": "found %c files in %t seconds (%d)", 44 | "render_header_date": "%Y/%m/%d %H:%M:%S", 45 | "navigation_forward_skip": 10, 46 | "navigation_backward_skip": 10, 47 | } 48 | -------------------------------------------------------------------------------- /Packages/User/ToggleWords.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "toggle_words_dict": [ 3 | ["0", "1"], 4 | ["accept", "decline"], 5 | ["before", "after"], 6 | ["correct", "wrong"], 7 | ["forward", "backward"], 8 | ["from", "to"], 9 | ["good", "bad"], 10 | ["high", "low"], 11 | ["in", "out"], 12 | ["input", "output"], 13 | ["inside", "outside"], 14 | ["left", "right"], 15 | ["low", "high"], 16 | ["on", "off"], 17 | ["open", "close"], 18 | ["short", "long"], 19 | ["single", "double", "triple"], 20 | ["space", "tab"], 21 | ["start", "end"], 22 | ["top", "bottom"], 23 | ["true", "false"], 24 | ["up", "down"], 25 | ["upward", "downward"], 26 | ["wide", "narrow"], 27 | ["width", "height"], 28 | ["y", "n"], 29 | ["yes", "no"], 30 | ], 31 | } 32 | -------------------------------------------------------------------------------- /Packages/User/Twig.sublime-settings: -------------------------------------------------------------------------------- 1 | // These settings override both User and Default settings for the Twig syntax 2 | { 3 | "tab_size": 2, 4 | } 5 | -------------------------------------------------------------------------------- /Packages/User/Verilog.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "extensions": 3 | [ 4 | "v", 5 | "vh" 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /Packages/User/WindowsContextMenu.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | // customize the menu text in your localization 3 | "menu_text": "在 {app.name} 中開啟", 4 | } 5 | -------------------------------------------------------------------------------- /Packages/User/bh_swapping.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "swapping": [ 3 | { 4 | "enabled": true, "language_list": [], "language_filter": "allowlist", "entries": [ 5 | {"name": "<> Angle", "brackets": ["<", ">${BH_SEL}"]} 6 | ] 7 | }, 8 | { 9 | "enabled": true, "language_list": [], "language_filter": "blocklist", "entries": [ 10 | {"name": "{} Curly", "brackets": ["{", "}${BH_SEL}"]} 11 | ] 12 | }, 13 | { 14 | "enabled": true, "language_list": [], "language_filter": "blocklist", "entries": [ 15 | {"name": "() Round", "brackets": ["(", ")${BH_SEL}"]} 16 | ] 17 | }, 18 | { 19 | "enabled": true, "language_list": [], "language_filter": "blocklist", "entries": [ 20 | {"name": "[] Square", "brackets": ["[", "]${BH_SEL}"]} 21 | ] 22 | }, 23 | { 24 | "enabled": true, "language_list": ["HTML", "HTML 5", "XML", "PHP", "HTML+CFML", "ColdFusion", "ColdFusionCFC"], "language_filter": "allowlist", "entries": [ 25 | {"name": "HTML/XML Tag", "brackets": ["<${BH_SEL:NAME}>", ""]} 26 | ] 27 | }, 28 | { 29 | "enabled": true, "language_list": ["Markdown"], "language_filter": "allowlist", "entries": [ 30 | {"name": "Mardown: Bold", "brackets": ["**", "**${BH_SEL}"]}, 31 | {"name": "Mardown: Italic", "brackets": ["_", "_${BH_SEL}"]} 32 | ] 33 | }, 34 | { 35 | "enabled": true, "language_list": ["C++", "C"], "language_filter": "allowlist", "entries": [ 36 | {"name": "C/C++: #if", "brackets": ["#if ${BH_SEL}", "#endif"]}, 37 | {"name": "C/C++: #if, #else", "brackets": ["#if${BH_SEL}", "#else\n${BH_TAB:/* CODE */}\n#endif"]}, 38 | {"name": "C/C++: #if, #elif", "brackets": ["#if${BH_SEL}", "#elif ${BH_TAB:/* CONDITION */}\n${BH_TAB:/* CODE */}\n#endif"]}, 39 | {"name": "C/C++: #ifdef", "brackets": ["#ifdef${BH_SEL}", "#endif"]}, 40 | {"name": "C/C++: #ifdef, #else", "brackets": ["#ifdef${BH_SEL}", "#else\n${BH_TAB:/* CODE */}\n#endif"]}, 41 | {"name": "C/C++: #ifndef", "brackets": ["#ifndef${BH_SEL}", "#endif"]}, 42 | {"name": "C/C++: #ifndef, #else", "brackets": ["#ifndef${BH_SEL}", "#else\n${BH_TAB:/* CODE */}\n#endif"]} 43 | ] 44 | } 45 | ] 46 | } 47 | -------------------------------------------------------------------------------- /Packages/User/bh_tag.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | // This is where you initially define a new tag mode. 3 | // This new tag_mode key must be used in all other settings in this file 4 | // to set up its specific settings. 5 | // Determine which style of tag-matching to use in which syntax. 6 | "tag_mode": [ 7 | {"mode": "xml", "syntax": ["XML"]}, 8 | { 9 | "mode": "xhtml", 10 | "syntax": [ 11 | "HTML", 12 | "HTML 5", 13 | "PHP", 14 | "Jinja", 15 | "Twig", 16 | "HTML (Jinja Templates)", 17 | "HTML (Jinja2)", 18 | "HTML (Rails)", 19 | "HTML (Twig)", 20 | "HTML (Django)", 21 | "laravel-blade", 22 | "blade", 23 | "Handlebars", 24 | "AngularJS", 25 | "Java Server Pages (JSP)", 26 | "Vue Component", 27 | ], 28 | "first_line": "^[ \\t]*<\\?xml", 29 | }, 30 | { 31 | "mode": "html", 32 | "syntax": [ 33 | "HTML", 34 | "HTML 5", 35 | "PHP", 36 | "Jinja", 37 | "Twig", 38 | "HTML (Jinja Templates)", 39 | "HTML (Jinja2)", 40 | "HTML (Rails)", 41 | "HTML (Twig)", 42 | "HTML (Django)", 43 | "laravel-blade", 44 | "blade", 45 | "Handlebars", 46 | "AngularJS", 47 | "Java Server Pages (JSP)", 48 | "Vue Component", 49 | ], 50 | }, 51 | { 52 | "mode": "cfml", 53 | "syntax": ["CFML", "HTML+CFML", "ColdFusion", "ColdFusionCFC"] 54 | }, 55 | ], 56 | } 57 | -------------------------------------------------------------------------------- /Packages/User/color_helper.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | // Show debug logging 3 | "debug": false, 4 | 5 | // Enables inline color previews found beside the identified color. 6 | // Requires ST 3116+ and mdpopups 1.7.4 7 | "inline_previews": true, 8 | 9 | // Adjust the size of inline image previews by the offset given. 10 | // Please use either a positive or negative number. 11 | "inline_preview_offset": -2, 12 | 13 | // Adjust the position of inline image previews. 14 | // (left|right) 15 | "inline_preview_position": "left", 16 | 17 | // These are the color rules for a given view. 18 | // Only one rule will apply to a given view. 19 | // 20 | // - `name`: optional name that, if a user creates a rule in `user_color_rules`, and it 21 | // it shares the same `name`, a shallow merge of the two rules will be made which 22 | // will allow the user rule to override the values of top level keys. 23 | // 24 | // - `sytnax_files`: target a view using a syntax from the given list. Defaults to an empty list. 25 | // 26 | // - `syntax_filter`: specify whether `syntax_files` is an allowlist or blocklist. Can be either 27 | // (blocklist|allowlist). Default's to `allowlist`. 28 | // 29 | // - `base_scopes`: target a view whose base scope matches something from the list of scopes. 30 | // Defaults to an empty list. 31 | // 32 | // - `extensions`: target a view with an extension from the provided list. Defaults to an empty list. 33 | // 34 | // - `color_class`: A string defining the name of a color class to use for the associated views. Color class 35 | // name should be defined in `color_classes`. 36 | // 37 | // If needed, you can define multiple color classes with a list of dicitionaries. Each 38 | // dictionary in the list should contain a `class` and `scopes`: 39 | // 40 | // - `scopes`: A string that defines a base scope that the color class applies to. 41 | // 42 | // - `class`: The name of the color class profile to use (defined in `color_classes`). 43 | // 44 | // - `scanning`: A list containing scopes that should be scanned for colors. 45 | // 46 | // - color_trigger`. It is slow to test the entire buffer with the color class, so do a quick search for 47 | // tokens that should trigger a color check. That way we only test in places where we 48 | // think we might have a valid color. For instance, the color class can translate colors 49 | // in the form `rgb(1 1 1 / 1)`, so we can specify `rgb(` as a color trigger. If we find `rgb(`, 50 | // we will test that spot's scope and attempt to read in a color at that location. 51 | // Defaults to "(?i)(?:\b(?" }, 22 | "context": [ 23 | { 24 | "key": "selector", 25 | "operator": "equal", 26 | "operand": "source.c | source.c++ | source.objc | source.objc++" 27 | } 28 | ] 29 | }, 30 | // HTML 31 | { 32 | "keys": ["c", "m", "t", " "], 33 | "command": "insert_snippet", 34 | "args": { "contents": "$0" }, 35 | "context": [ 36 | { 37 | "key": "selector", 38 | "operator": "equal", 39 | "operand": "text.html.basic - source.php" 40 | } 41 | ] 42 | }, 43 | // Javascript 44 | { 45 | "keys": ["f", "j", " "], 46 | "command": "insert_snippet", 47 | "args": { "contents": "\\$" }, 48 | "context": [ 49 | { 50 | "key": "selector", 51 | "operator": "equal", 52 | "operand": "source.js | source.jsx | source.ts | source.tsx" 53 | } 54 | ] 55 | }, 56 | // PHP 57 | { 58 | "keys": ["f", "j", " "], 59 | "command": "insert_snippet", 60 | "args": { "contents": "\\$" }, 61 | "context": [ 62 | { 63 | "key": "selector", 64 | "operator": "equal", 65 | "operand": "source.php" 66 | } 67 | ] 68 | }, 69 | { 70 | "keys": ["d", "k", " "], 71 | "command": "insert_snippet", 72 | "args": { "contents": "->" }, 73 | "context": [ 74 | { 75 | "key": "selector", 76 | "operator": "equal", 77 | "operand": "source.php" 78 | } 79 | ] 80 | }, 81 | // Python 82 | { 83 | "keys": ["f", "j", " "], 84 | "command": "insert_snippet", 85 | "args": { "contents": "*" }, 86 | "context": [ 87 | { 88 | "key": "selector", 89 | "operator": "equal", 90 | "operand": "source.python" 91 | } 92 | ] 93 | }, 94 | { 95 | "keys": ["d", "k", " "], 96 | "command": "insert_snippet", 97 | "args": { "contents": "->" }, 98 | "context": [ 99 | { 100 | "key": "selector", 101 | "operator": "equal", 102 | "operand": "source.python" 103 | } 104 | ] 105 | }, 106 | // SASS/SCSS 107 | { 108 | "keys": ["f", "j", " "], 109 | "command": "insert_snippet", 110 | "args": { "contents": "\\$" }, 111 | "context": [ 112 | { 113 | "key": "selector", 114 | "operator": "equal", 115 | "operand": "source.sass | source.scss" 116 | } 117 | ] 118 | }, 119 | // Shell 120 | { 121 | "keys": ["f", "j", " "], 122 | "command": "insert_snippet", 123 | "args": { "contents": "\\$" }, 124 | "context": [ 125 | { 126 | "key": "selector", 127 | "operator": "equal", 128 | "operand": "source.shell" 129 | } 130 | ] 131 | }, 132 | // Groovy 133 | { 134 | "keys": ["f", "j", " "], 135 | "command": "insert_snippet", 136 | "args": { "contents": "\\$" }, 137 | "context": [ 138 | { 139 | "key": "selector", 140 | "operator": "equal", 141 | "operand": "source.groovy" 142 | } 143 | ] 144 | } 145 | ] 146 | -------------------------------------------------------------------------------- /Packages/User/my_keymap/readme.md: -------------------------------------------------------------------------------- 1 | This folder should be put under `User/` to have the highest priority... 2 | 3 | Otherwise, alt + / will trigger the `left_delete` command rather than 4 | `Default/Delete Left Right.sublime-macro` hence we will fail to delete paired quotes. 5 | -------------------------------------------------------------------------------- /Packages/User/my_language/ApacheConf/Comments.tmPreferences: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | name 6 | Comments 7 | scope 8 | source.apacheconf 9 | settings 10 | 11 | shellVariables 12 | 13 | 14 | name 15 | TM_COMMENT_START 16 | value 17 | # 18 | 19 | 20 | 21 | uuid 22 | 8747d9e4-b308-4fc2-9aa1-66b6919bc7b9 23 | 24 | 25 | -------------------------------------------------------------------------------- /Packages/User/my_language/Gettext.sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: Gettext 5 | version: 2 6 | comment: | 7 | TODO: Command for copy original to untranslated, label as fuzzy, remove fuzzy, next fuzzy etc 8 | Create meta scope for each entry 9 | file_extensions: 10 | - po 11 | - potx 12 | scope: source.po 13 | contexts: 14 | main: 15 | - match: msgid\s+"" 16 | push: 17 | - meta_scope: entity.name.section.header.po 18 | - match: ^$ 19 | pop: 1 20 | - match: ^msgid(?:_plural)?\s+(")(.*)(")\s*$ 21 | scope: keyword.control.msgid.po 22 | captures: 23 | 1: constant.character.double-quote.po 24 | 2: string.quoted.double.po 25 | 3: constant.character.double-quote.po 26 | - match: '^msgstr(?:\[\d?\])?\s+(")(.*)(")\s*$' 27 | scope: keyword.control.msgstr.po 28 | captures: 29 | 1: constant.character.double-quote.po 30 | 2: string.quoted.double.po 31 | 3: constant.character.double-quote.po 32 | - match: '^msgctxt(?:\[\d?\])?\s+(")(.*)(")\s*$' 33 | scope: keyword.control.msgctxt.po 34 | captures: 35 | 1: constant.character.double-quote.po 36 | 2: string.quoted.double.po 37 | 3: constant.character.double-quote.po 38 | - match: ^(")(.+)(")\s*$ 39 | scope: string.quoted.double.po 40 | captures: 41 | 1: constant.character.double-quote.po 42 | 2: string.quoted.double.po 43 | 3: constant.character.double-quote.po 44 | - match: ^#\s+(.*)\s*$ 45 | scope: comment.line.number-sign.po 46 | - match: ^#,\s+((?:(?:fuzzy)|(?:no-)?(?:c|objc|sh|lisp|elisp|librep|scheme|smalltalk|java|csharp|awk|object-pascal|ycp|tcl|perl|perl-brace|php|gcc-internal|qt|boost)-format)(?:,\s*(?:(?:fuzzy)|(?:no-)?(?:c|objc|sh|lisp|elisp|librep|scheme|smalltalk|java|csharp|awk|object-pascal|ycp|tcl|perl|perl-brace|php|gcc-internal|qt|boost)-format))*)\s*$ 47 | scope: comment.line.number-sign.flag.po 48 | captures: 49 | 1: keyword.other.flag.po 50 | - match: ^#\.\s+(.*)\s*$ 51 | scope: comment.line.number-sign.extracted.po 52 | - match: '^#:\s+((.*))(:([\d;]*))\s*$' 53 | scope: comment.line.number-sign.reference.po 54 | captures: 55 | 1: constant.character.sourceref.po 56 | 3: constant.numeric.linenumber.po 57 | - match: ^#|\s+(msgid|msgctxt)\s+(".*")\s*$ 58 | scope: comment.line.number-sign.previous.po 59 | -------------------------------------------------------------------------------- /Packages/User/my_language/PEM.sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: PEM 5 | version: 2 6 | file_extensions: 7 | - crt 8 | - pem 9 | first_line_match: ^-----+BEGIN +.*----- 10 | scope: text.pem 11 | 12 | contexts: 13 | main: 14 | - include: section 15 | 16 | section: 17 | - match: ^-----+BEGIN +(.*)-----+(\n?) 18 | captures: 19 | 0: punctuation.definition.section.begin.pem 20 | 1: entity.name.section.pem 21 | 2: meta.whitespace.newline.pem 22 | push: 23 | - meta_scope: meta.block.pem 24 | - include: base64 25 | - match: ^-----+END +(\1)-----+(\n?) 26 | captures: 27 | 0: punctuation.definition.section.end.pem 28 | 1: entity.name.section.pem 29 | 2: meta.whitespace.newline.pem 30 | pop: 1 31 | 32 | base64: 33 | - match: '[a-zA-Z0-9+/=]+\n?' 34 | scope: string.other.base64.pem 35 | -------------------------------------------------------------------------------- /Packages/User/my_language/SRT.sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: SRT Subtitles 5 | version: 2 6 | file_extensions: 7 | - srt 8 | scope: text.srt 9 | contexts: 10 | main: 11 | - match: ^(\d+)\s*$ 12 | scope: constant.numeric.sequence.srt 13 | - match: '^((?:\d{2}:)?\d{2}:\d{2}[,.]\d{3})\s*(-->)\s*((?:\d{2}:)?\d{2}:\d{2}[,.]\d{3})' 14 | captures: 15 | 1: variable.parameter.srt 16 | 2: constant.character.srt 17 | 3: variable.parameter.srt 18 | push: 19 | - match: '([^: ]+)\s*(:)\s*([^: ]+)' 20 | captures: 21 | 1: storage.type.srt 22 | - match: $ 23 | pop: 1 24 | - match: \<(b)\> 25 | captures: 26 | 1: entity.name.tag.srt 27 | push: 28 | - match: \<\/(b)\> 29 | captures: 30 | 1: entity.name.tag.srt 31 | pop: 1 32 | - include: main 33 | - match: . 34 | scope: markup.bold.srt 35 | - match: \<(i)\> 36 | captures: 37 | 1: entity.name.tag.srt 38 | push: 39 | - match: \<\/(i)\> 40 | captures: 41 | 1: entity.name.tag.srt 42 | pop: 1 43 | - include: main 44 | - match: . 45 | scope: markup.italic.srt 46 | - match: \<(u)\> 47 | captures: 48 | 1: entity.name.tag.srt 49 | push: 50 | - match: \<\/(u)\> 51 | captures: 52 | 1: entity.name.tag.srt 53 | pop: 1 54 | - include: main 55 | - match: . 56 | scope: markup.underline.srt 57 | # unknown tags 58 | - match: \]+)\> 59 | captures: 60 | 0: comment.srt 61 | # ASS-like position tags 62 | - match: '\{\\an[1-9]{1}\}' 63 | scope: entity.name.function.srt 64 | -------------------------------------------------------------------------------- /Packages/User/my_language/SSH-Config/Comments.tmPreferences: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | name 6 | Comments 7 | scope 8 | source.ssh-config 9 | settings 10 | 11 | shellVariables 12 | 13 | 14 | name 15 | TM_COMMENT_START 16 | value 17 | # 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /Packages/User/my_language/Singularity/Comments.tmPreferences: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | name 5 | Comments 6 | scope 7 | source.singularity_definition 8 | settings 9 | 10 | shellVariables 11 | 12 | 13 | name 14 | TM_COMMENT_START 15 | value 16 | # 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Packages/User/my_language/Singularity/Singularity.sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # See http://www.sublimetext.com/docs/syntax.html 4 | name: Singularity Definition 5 | version: 2 6 | file_extensions: 7 | - Singularity 8 | scope: source.singularity_definition 9 | variables: 10 | keywords_header: (?:Bootstrap|From|Stage|OSVersion|MirrorURL|Include|Library) 11 | section_labels: (?:labels) 12 | section_shell: (?:environment|post|runscript|setup|startscript|test) 13 | section_other: (?:files|help) 14 | contexts: 15 | prototype: 16 | - include: comments 17 | main: 18 | - include: header 19 | - include: sections 20 | comments: 21 | - match: ^\s*((#).*$\n?) 22 | captures: 23 | 1: comment.line.singularity_definition 24 | 2: punctuation.definition.comment.singularity_definition 25 | header: 26 | - match: ^({{keywords_header}})\s*(:)\s*(.*) 27 | captures: 28 | 1: keyword.control.singularity_definition 29 | 2: punctuation.separator.key-value.singularity_definition 30 | 3: meta.tag-digest.singularity_definition 31 | sections: 32 | - include: section_labels 33 | - include: section_other 34 | - include: section_shell 35 | section_label: 36 | - match: \w+ 37 | scope: constant.other.key.singularity_definition 38 | push: 39 | - include: pop_at_end 40 | section_labels: 41 | - match: ^(%)({{section_labels}})\s*\n? 42 | scope: keyword.control.section.singularity_definition 43 | embed: section_label 44 | escape: (?=^%) 45 | section_shell: 46 | - match: ^(%)({{section_shell}})\s*\n? 47 | scope: keyword.control.section.singularity_definition 48 | embed: scope:source.shell.bash 49 | embed_scope: meta.embedded.block.singularity_definition source.shell.bash 50 | escape: (?=^%) 51 | section_other: 52 | - match: ^(%)({{section_other}})\s*\n? 53 | scope: keyword.control.section.singularity_definition 54 | pop_at_end: 55 | - match: $ 56 | pop: 1 57 | -------------------------------------------------------------------------------- /Packages/User/my_language/VTT.sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: VTT Subtitles 5 | version: 2 6 | file_extensions: 7 | - vtt 8 | first_line_match: '^\s*WEBVTT\s*$' 9 | scope: text.vtt 10 | variables: 11 | line_terminator: \r?\n|\r 12 | blank_line: ^{{line_terminator}}$ 13 | contexts: 14 | main: 15 | - include: header 16 | - include: comment-block 17 | - include: content-block 18 | header: 19 | - match: ^(WEBVTT)(?=$|\s) 20 | comment-block: 21 | # https://www.w3.org/TR/webvtt1/#introduction-comments 22 | - match: '^(NOTE)(?=$|\s)' 23 | captures: 24 | 1: punctuation.definition.comment.vtt 25 | push: 26 | - meta_scope: comment.vtt 27 | - match: '{{blank_line}}' 28 | pop: 1 29 | content-block: 30 | - match: ^(\d+)\s*$ 31 | scope: constant.numeric.sequence.vtt 32 | - match: '(?=^((?:\d{2}:)?\d{2}:\d{2}[,.]\d{3})\s*(-->)\s*((?:\d{2}:)?\d{2}:\d{2}[,.]\d{3}))' 33 | push: 34 | - match: '{{blank_line}}' 35 | pop: 1 36 | - match: '^((?:\d{2}:)?\d{2}:\d{2}[,.]\d{3})\s*(-->)\s*((?:\d{2}:)?\d{2}:\d{2}[,.]\d{3})' 37 | captures: 38 | 1: variable.parameter.vtt 39 | 2: constant.character.vtt 40 | 3: variable.parameter.vtt 41 | push: 42 | - match: '([^: ]+)\s*(:)\s*([^: ]+)' 43 | captures: 44 | 1: storage.type.vtt 45 | - match: $ 46 | pop: 1 47 | - match: \<(b)\> 48 | captures: 49 | 1: entity.name.tag.vtt 50 | push: 51 | - match: \<\/(b)\> 52 | captures: 53 | 1: entity.name.tag.vtt 54 | pop: 1 55 | - include: main 56 | - match: . 57 | scope: markup.bold.vtt 58 | - match: \<(i)\> 59 | captures: 60 | 1: entity.name.tag.vtt 61 | push: 62 | - match: \<\/(i)\> 63 | captures: 64 | 1: entity.name.tag.vtt 65 | pop: 1 66 | - include: main 67 | - match: . 68 | scope: markup.italic.vtt 69 | - match: \<(u)\> 70 | captures: 71 | 1: entity.name.tag.vtt 72 | push: 73 | - match: \<\/(u)\> 74 | captures: 75 | 1: entity.name.tag.vtt 76 | pop: 1 77 | - include: main 78 | - match: . 79 | scope: markup.underline.vtt 80 | # unknown tags 81 | - match: \]+)\> 82 | captures: 83 | 0: comment.vtt, meta.unknown-tag.vtt 84 | 1: entity.name.tag.vtt 85 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/CoffeeScript (Gulpfile).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: CoffeeScript (Gulpfile) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - gulpfile.coffee 9 | scope: source.coffee.gulpfile 10 | contexts: 11 | main: 12 | - include: scope:source.coffee 13 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/Groovy (Gradle).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: Groovy (Gradle) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - gradle 9 | scope: source.groovy.gradle 10 | contexts: 11 | main: 12 | - include: scope:source.groovy 13 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/JSON (Babel).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: JSON (Babel) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - .babelrc 9 | scope: source.json.babel 10 | contexts: 11 | main: 12 | - include: scope:source.json 13 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/JSON (Bower).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: JSON (Bower) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - bower.json 9 | - .bowerrc 10 | scope: source.json.bower 11 | contexts: 12 | main: 13 | - include: scope:source.json 14 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/JSON (Composer).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: JSON (Composer) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - composer.json 9 | - composer.lock 10 | - symfony.lock 11 | scope: source.json.composer 12 | contexts: 13 | main: 14 | - include: scope:source.json 15 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/JSON (ESLint).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: JSON (ESLint) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - .eslintrc 9 | - .eslintrc.json 10 | scope: source.json.eslint 11 | contexts: 12 | main: 13 | - include: scope:source.json 14 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/JSON (NPM).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: JSON (NPM) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - package.json 9 | scope: source.json.npm 10 | contexts: 11 | main: 12 | - include: scope:source.json 13 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/JSON (PostCSS).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: JSON (PostCSS) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - .postcssrc 9 | scope: source.json.postcss 10 | contexts: 11 | main: 12 | - include: scope:source.json 13 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/JSON (Settings).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: JSON (Settings) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - .jshintrc 9 | - .jsbeautifyrc 10 | scope: source.json.settings 11 | contexts: 12 | main: 13 | - include: scope:source.json 14 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/JSON (Stylelint).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: JSON (Stylelint) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - .stylelintrc 9 | - .stylelintrc.json 10 | scope: source.json.stylelint 11 | contexts: 12 | main: 13 | - include: scope:source.json 14 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/JSON (Tern JS).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: JSON (Tern JS) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - .tern-project 9 | - .tern-config 10 | scope: source.json.tern 11 | contexts: 12 | main: 13 | - include: scope:source.json 14 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/JavaScript (ESLint).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: JavaScript (ESLint) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - .eslintrc.js 9 | scope: source.js.eslint 10 | contexts: 11 | main: 12 | - include: scope:source.js 13 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/JavaScript (Gruntfile).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: JavaScript (Gruntfile) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - gruntfile.js 9 | scope: source.js.gruntfile 10 | contexts: 11 | main: 12 | - include: scope:source.js 13 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/JavaScript (Gulpfile).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: JavaScript (Gulpfile) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - gulpfile.js 9 | - gulpfile.babel.js 10 | scope: source.js.gulpfile 11 | contexts: 12 | main: 13 | - include: scope:source.js 14 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/JavaScript (PostCSS).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: JavaScript (PostCSS) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - postcss.config.js 9 | scope: source.js.postcss 10 | contexts: 11 | main: 12 | - include: scope:source.js 13 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/JavaScript (Stylelint).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: JavaScript (Stylelint) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - .stylelintrc.js 9 | - stylelint.config.js 10 | scope: source.js.stylelint 11 | contexts: 12 | main: 13 | - include: scope:source.js 14 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/JavaScript (Webpack).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: JavaScript (Webpack) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - webpack.config.js 9 | - webpack.config.babel.js 10 | - webpack.mix.js 11 | scope: source.js.webpack 12 | contexts: 13 | main: 14 | - include: scope:source.js 15 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/Markdown (License).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: Markdown (License) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - license.md 9 | scope: text.html.markdown.license 10 | contexts: 11 | main: 12 | - include: scope:text.html.markdown 13 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/Plain Text (Adobe After Effects).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: Plain Text (Adobe After Effects) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - aep 9 | - aet 10 | scope: text.plain.ae 11 | contexts: 12 | main: 13 | - include: scope:text.plain 14 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/Plain Text (Adobe Illustrator).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: Plain Text (Adobe Illustrator) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - ai 9 | scope: text.plain.ai 10 | contexts: 11 | main: 12 | - include: scope:text.plain 13 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/Plain Text (Adobe InDesign).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: Plain Text (Adobe InDesign) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - indd 9 | - indl 10 | - indt 11 | - indb 12 | - inx 13 | - idml 14 | scope: text.plain.indesign 15 | contexts: 16 | main: 17 | - include: scope:text.plain 18 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/Plain Text (Adobe Photoshop).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: Plain Text (Adobe Photoshop) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - psb 9 | - psd 10 | scope: text.plain.ps 11 | contexts: 12 | main: 13 | - include: scope:text.plain 14 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/Plain Text (Adobe Premiere Pro).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: Plain Text (Adobe Premiere Pro) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - prel 9 | - prproj 10 | - psq 11 | scope: text.plain.premiere 12 | contexts: 13 | main: 14 | - include: scope:text.plain 15 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/Plain Text (Archive).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: Plain Text (Archive) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - 7z 9 | - 7zip 10 | - gz 11 | - pzip 12 | - rar 13 | - saz 14 | - tar 15 | - tgz 16 | - wim 17 | - zip 18 | scope: text.plain.archive 19 | contexts: 20 | main: 21 | - include: scope:text.plain 22 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/Plain Text (Audio).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: Plain Text (Audio) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - mp3 9 | - m4p 10 | - aac 11 | - aiff 12 | - au 13 | - flac 14 | - m4a 15 | - mpc 16 | - mp+ 17 | - mpp 18 | - oga 19 | - opus 20 | - ra 21 | - rm 22 | - wav 23 | - wma 24 | scope: text.plain.audio 25 | contexts: 26 | main: 27 | - include: scope:text.plain 28 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/Plain Text (Buildpacks).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: Plain Text (Buildpacks) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - .buildpacks 9 | scope: text.plain.buildpacks 10 | contexts: 11 | main: 12 | - include: scope:text.plain 13 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/Plain Text (ESLint).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: Plain Text (ESLint) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - .eslintcache 9 | scope: text.plain.eslint 10 | contexts: 11 | main: 12 | - include: scope:text.plain 13 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/Plain Text (Font).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: Plain Text (Font) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - eot 9 | - otf 10 | - ttf 11 | - woff 12 | - woff2 13 | scope: text.plain.font 14 | contexts: 15 | main: 16 | - include: scope:text.plain 17 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/Plain Text (License).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: Plain Text (License) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - license 9 | scope: text.plain.license 10 | contexts: 11 | main: 12 | - include: scope:text.plain 13 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/Plain Text (Microsoft Access).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: Plain Text (Microsoft Access) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - adn 9 | - accdb 10 | - accdr 11 | - accdt 12 | - accda 13 | - mdw 14 | - accde 15 | - mam 16 | - maq 17 | - mar 18 | - mat 19 | - maf 20 | - laccdb 21 | scope: text.plain.access 22 | contexts: 23 | main: 24 | - include: scope:text.plain 25 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/Plain Text (Microsoft Excel).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: Plain Text (Microsoft Excel) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - xls 9 | - xlsx 10 | - xlsm 11 | - xlsb 12 | - xlt 13 | scope: text.plain.excel 14 | contexts: 15 | main: 16 | - include: scope:text.plain 17 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/Plain Text (Microsoft OneNote).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: Plain Text (Microsoft OneNote) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - one 9 | scope: text.plain.onenote 10 | contexts: 11 | main: 12 | - include: scope:text.plain 13 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/Plain Text (Microsoft PowerPoint).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: Plain Text (Microsoft PowerPoint) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - ppt 9 | - pptx 10 | - pps 11 | - ppsx 12 | scope: text.plain.powerpoint 13 | contexts: 14 | main: 15 | - include: scope:text.plain 16 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/Plain Text (Microsoft Word).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: Plain Text (Microsoft Word) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - doc 9 | - docx 10 | - docm 11 | - docxml 12 | - dotm 13 | - dotx 14 | - wri 15 | scope: text.plain.word 16 | contexts: 17 | main: 18 | - include: scope:text.plain 19 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/Plain Text (NodeJS).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: Plain Text (NodeJS) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - .node-version 9 | - .nvmrc 10 | scope: text.plain.nodejs 11 | contexts: 12 | main: 13 | - include: scope:text.plain 14 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/Plain Text (PDF).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: Plain Text (PDF) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - pdf 9 | scope: text.plain.pdf 10 | contexts: 11 | main: 12 | - include: scope:text.plain 13 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/Plain Text (Ruby).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: Plain Text (Ruby) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - .ruby-version 9 | - .ruby-gemset 10 | - .rspec 11 | scope: text.plain.ruby 12 | contexts: 13 | main: 14 | - include: scope:text.plain 15 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/Plain Text (Sketch).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: Plain Text (Sketch) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - sketch 9 | scope: text.plain.sketch 10 | contexts: 11 | main: 12 | - include: scope:text.plain 13 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/Plain Text (Video).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: Plain Text (Video) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - avi 9 | - mp4 10 | - mov 11 | - mkv 12 | - h264 13 | - webm 14 | - wmv 15 | - ogv 16 | - ogg 17 | - 3gp 18 | - m4v 19 | - mpg 20 | - mpeg 21 | - 3gpp 22 | - ogm 23 | scope: text.plain.video 24 | contexts: 25 | main: 26 | - include: scope:text.plain 27 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/Plain Text (Windows Shortcut).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: Plain Text (Windows Shortcut) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - lnk 9 | scope: text.plain.lnk 10 | contexts: 11 | main: 12 | - include: scope:text.plain 13 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/Shell Script (ESLint).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: Shell Script (ESLint) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - .eslintignore 9 | scope: source.shell.eslint 10 | contexts: 11 | main: 12 | - include: scope:source.shell 13 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/Shell Script (NPM).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: Shell Script (NPM) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - .npmignore 9 | - .npmrc 10 | scope: source.shell.npm 11 | contexts: 12 | main: 13 | - include: scope:source.shell 14 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/Shell Script (Ruby).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: Shell Script (Ruby) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - .rvmrc 9 | scope: source.shell.ruby 10 | contexts: 11 | main: 12 | - include: scope:source.shell 13 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/Shell Script (Stylelint).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: Shell Script (Stylelint) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - .stylelintignore 9 | scope: source.shell.stylelint 10 | contexts: 11 | main: 12 | - include: scope:source.shell 13 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/Vimrc (VimL).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: Vimrc (VimL) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - .vimrc 9 | - .gvimrc 10 | - _vimrc 11 | - _gvimrc 12 | scope: source.viml.vimrc 13 | contexts: 14 | main: 15 | - include: scope:source.viml 16 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/XML (SVG).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: XML (SVG) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - svg 9 | scope: text.xml.svg 10 | contexts: 11 | main: 12 | - include: scope:text.xml 13 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/YAML (CircleCI).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: YAML (CircleCI) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - circle.yml 9 | scope: source.yaml.circleci 10 | contexts: 11 | main: 12 | - include: scope:source.yaml 13 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/YAML (Docker).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: YAML (Docker) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - docker-compose.yml 9 | scope: source.yaml.docker 10 | contexts: 11 | main: 12 | - include: scope:source.yaml 13 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/YAML (ESLint).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: YAML (ESLint) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - .eslintrc.yaml 9 | - .eslintrc.yml 10 | scope: source.yaml.eslint 11 | contexts: 12 | main: 13 | - include: scope:source.yaml 14 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/YAML (Lock).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: YAML (Lock) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - Gemfile.lock 9 | - Berksfile.lock 10 | scope: source.yaml.lock 11 | contexts: 12 | main: 13 | - include: scope:source.yaml 14 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/YAML (Procfile).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: YAML (Procfile) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - Procfile 9 | scope: source.yaml.procfile 10 | contexts: 11 | main: 12 | - include: scope:source.yaml 13 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/YAML (Stylelint).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: YAML (Stylelint) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - .stylelintrc.yaml 9 | - .stylelintrc.yml 10 | scope: source.yaml.stylelint 11 | contexts: 12 | main: 13 | - include: scope:source.yaml 14 | -------------------------------------------------------------------------------- /Packages/User/my_language/aliases/YAML (Yarn).sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | name: YAML (Yarn) 5 | version: 2 6 | hidden: true 7 | file_extensions: 8 | - yarn.lock 9 | scope: source.yaml.yarn 10 | contexts: 11 | main: 12 | - include: scope:source.yaml 13 | -------------------------------------------------------------------------------- /Packages/User/my_language/requirements-txt/Comments.tmPreferences: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | name 5 | Comments 6 | scope 7 | source.pip-requirements 8 | settings 9 | 10 | shellVariables 11 | 12 | 13 | name 14 | TM_COMMENT_START 15 | value 16 | # 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Packages/User/my_language/requirements-txt/pip-requirements.sublime-syntax: -------------------------------------------------------------------------------- 1 | %YAML 1.2 2 | --- 3 | # http://www.sublimetext.com/docs/syntax.html 4 | # derived from "ms-python.python-2024.11.2024071901/syntaxes/pip-requirements.tmLanguage.json" 5 | name: pip requirements 6 | scope: source.pip-requirements 7 | version: 2 8 | 9 | file_extensions: 10 | - requirements-dev.txt 11 | - requirements-development.txt 12 | - requirements-linux.txt 13 | - requirements-mac.txt 14 | - requirements-prod.txt 15 | - requirements-production.txt 16 | - requirements-win.txt 17 | - requirements-windows.txt 18 | - requirements.txt 19 | - requirements-dev.in 20 | - requirements-development.in 21 | - requirements-linux.in 22 | - requirements-mac.in 23 | - requirements-prod.in 24 | - requirements-production.in 25 | - requirements-win.in 26 | - requirements-windows.in 27 | - requirements.in 28 | 29 | contexts: 30 | main: 31 | - match: \s*\\s*$ 32 | comment: explanation 33 | scope: constant.character.escape 34 | - match: '#.*' 35 | scope: comment.line.number-sign 36 | - match: "'" 37 | push: 38 | - meta_scope: string.quoted.single 39 | - match: "'" 40 | pop: 1 41 | - match: '"' 42 | push: 43 | - meta_scope: string.quoted.double 44 | - match: '"' 45 | pop: 1 46 | - match: /?(\S+/)+\S* 47 | scope: string.path 48 | - comment: project name 49 | match: '^\s*([A-Za-z0-9][A-Za-z0-9._-]*[A-Za-z0-9]|[A-Za-z0-9])' 50 | captures: 51 | 1: entity.name.class 52 | - comment: extras 53 | match: '\[([^\]]+)\]' 54 | captures: 55 | 1: entity.name.tag 56 | - comment: version specification 57 | match: '(<|<=|!=|==|>=|>|~=|===)\s*([\w.*+!-]+)' 58 | captures: 59 | 1: keyword.operator.comparison 60 | 2: constant.numeric 61 | - comment: environment markers 62 | match: ;\s*(python_version|python_full_version|os_name|sys_platform|platform_release|platform_system|platform_version|platform_machine|platform_python_implementation|implementation_name|implementation_version|extra)\s*(<|<=|!=|==|>=|>|~=|===) 63 | captures: 64 | 1: entity.name.selector 65 | 2: keyword.operator.comparison 66 | - comment: command-line options (e.g. `--no-links` or `-c`) 67 | match: '(?:^|\s)-[^\s=]+' 68 | scope: entity.other.attribute-name 69 | -------------------------------------------------------------------------------- /Packages/User/my_theme/.gitignore: -------------------------------------------------------------------------------- 1 | ################# 2 | ## Eclipse 3 | ################# 4 | 5 | *.pydevproject 6 | .project 7 | .metadata 8 | bin/ 9 | tmp/ 10 | *.tmp 11 | *.bak 12 | *.swp 13 | *~.nib 14 | local.properties 15 | .classpath 16 | .settings/ 17 | .loadpath 18 | 19 | # External tool builders 20 | .externalToolBuilders/ 21 | 22 | # Locally stored "Eclipse launch configurations" 23 | *.launch 24 | 25 | # CDT-specific 26 | .cproject 27 | 28 | # PDT-specific 29 | .buildpath 30 | 31 | 32 | ################# 33 | ## Visual Studio 34 | ################# 35 | 36 | ## Ignore Visual Studio temporary files, build results, and 37 | ## files generated by popular Visual Studio add-ons. 38 | 39 | # User-specific files 40 | *.suo 41 | *.user 42 | *.sln.docstates 43 | 44 | # Build results 45 | 46 | [Dd]ebug/ 47 | [Rr]elease/ 48 | x64/ 49 | build/ 50 | [Bb]in/ 51 | [Oo]bj/ 52 | 53 | # MSTest test Results 54 | [Tt]est[Rr]esult*/ 55 | [Bb]uild[Ll]og.* 56 | 57 | *_i.c 58 | *_p.c 59 | *.ilk 60 | *.meta 61 | *.obj 62 | *.pch 63 | *.pdb 64 | *.pgc 65 | *.pgd 66 | *.rsp 67 | *.sbr 68 | *.tlb 69 | *.tli 70 | *.tlh 71 | *.tmp 72 | *.tmp_proj 73 | *.log 74 | *.vspscc 75 | *.vssscc 76 | .builds 77 | *.pidb 78 | *.log 79 | *.scc 80 | 81 | # Visual C++ cache files 82 | ipch/ 83 | *.aps 84 | *.ncb 85 | *.opensdf 86 | *.sdf 87 | *.cachefile 88 | 89 | # Visual Studio profiler 90 | *.psess 91 | *.vsp 92 | *.vspx 93 | 94 | # Guidance Automation Toolkit 95 | *.gpState 96 | 97 | # ReSharper is a .NET coding add-in 98 | _ReSharper*/ 99 | *.[Rr]e[Ss]harper 100 | 101 | # TeamCity is a build add-in 102 | _TeamCity* 103 | 104 | # DotCover is a Code Coverage Tool 105 | *.dotCover 106 | 107 | # NCrunch 108 | *.ncrunch* 109 | .*crunch*.local.xml 110 | 111 | # Installshield output folder 112 | [Ee]xpress/ 113 | 114 | # DocProject is a documentation generator add-in 115 | DocProject/buildhelp/ 116 | DocProject/Help/*.HxT 117 | DocProject/Help/*.HxC 118 | DocProject/Help/*.hhc 119 | DocProject/Help/*.hhk 120 | DocProject/Help/*.hhp 121 | DocProject/Help/Html2 122 | DocProject/Help/html 123 | 124 | # Click-Once directory 125 | publish/ 126 | 127 | # Publish Web Output 128 | *.Publish.xml 129 | *.pubxml 130 | 131 | # NuGet Packages Directory 132 | ## TODO: If you have NuGet Package Restore enabled, uncomment the next line 133 | #packages/ 134 | 135 | # Windows Azure Build Output 136 | csx 137 | *.build.csdef 138 | 139 | # Windows Store app package directory 140 | AppPackages/ 141 | 142 | # Others 143 | sql/ 144 | *.Cache 145 | ClientBin/ 146 | [Ss]tyle[Cc]op.* 147 | ~$* 148 | *~ 149 | *.dbmdl 150 | *.[Pp]ublish.xml 151 | *.pfx 152 | *.publishsettings 153 | 154 | # RIA/Silverlight projects 155 | Generated_Code/ 156 | 157 | # Backup & report files from converting an old project file to a newer 158 | # Visual Studio version. Backup files are not needed, because we have git ;-) 159 | _UpgradeReport_Files/ 160 | Backup*/ 161 | UpgradeLog*.XML 162 | UpgradeLog*.htm 163 | 164 | # SQL Server files 165 | App_Data/*.mdf 166 | App_Data/*.ldf 167 | 168 | ############# 169 | ## Windows detritus 170 | ############# 171 | 172 | # Windows image file caches 173 | Thumbs.db 174 | ehthumbs.db 175 | 176 | # Folder config file 177 | Desktop.ini 178 | 179 | # Recycle Bin used on file shares 180 | $RECYCLE.BIN/ 181 | 182 | # Mac crap 183 | .DS_Store 184 | 185 | 186 | ############# 187 | ## Python 188 | ############# 189 | 190 | *.py[co] 191 | 192 | # Packages 193 | *.egg 194 | *.egg-info 195 | dist/ 196 | build/ 197 | eggs/ 198 | parts/ 199 | var/ 200 | sdist/ 201 | develop-eggs/ 202 | .installed.cfg 203 | 204 | # Installer logs 205 | pip-log.txt 206 | 207 | # Unit test / coverage reports 208 | .coverage 209 | .tox 210 | 211 | #Translations 212 | *.mo 213 | 214 | #Mr Developer 215 | .mr.developer.cfg 216 | -------------------------------------------------------------------------------- /Packages/User/my_theme/git_badges/added.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jfcherng-sublime/ST-my-settings/dfeb70b1771160bbebd5e2621ee9cd4f9da8be13/Packages/User/my_theme/git_badges/added.png -------------------------------------------------------------------------------- /Packages/User/my_theme/git_badges/added@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jfcherng-sublime/ST-my-settings/dfeb70b1771160bbebd5e2621ee9cd4f9da8be13/Packages/User/my_theme/git_badges/added@2x.png -------------------------------------------------------------------------------- /Packages/User/my_theme/git_badges/added@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jfcherng-sublime/ST-my-settings/dfeb70b1771160bbebd5e2621ee9cd4f9da8be13/Packages/User/my_theme/git_badges/added@3x.png -------------------------------------------------------------------------------- /Packages/User/my_theme/git_badges/modified.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jfcherng-sublime/ST-my-settings/dfeb70b1771160bbebd5e2621ee9cd4f9da8be13/Packages/User/my_theme/git_badges/modified.png -------------------------------------------------------------------------------- /Packages/User/my_theme/git_badges/modified@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jfcherng-sublime/ST-my-settings/dfeb70b1771160bbebd5e2621ee9cd4f9da8be13/Packages/User/my_theme/git_badges/modified@2x.png -------------------------------------------------------------------------------- /Packages/User/my_theme/git_badges/modified@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jfcherng-sublime/ST-my-settings/dfeb70b1771160bbebd5e2621ee9cd4f9da8be13/Packages/User/my_theme/git_badges/modified@3x.png -------------------------------------------------------------------------------- /Packages/User/my_theme/git_badges/src.txt: -------------------------------------------------------------------------------- 1 | https://github.com/arxeiss/Sublime-GitBadgesLikeVSCode -------------------------------------------------------------------------------- /Packages/User/my_theme/git_badges/staged.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jfcherng-sublime/ST-my-settings/dfeb70b1771160bbebd5e2621ee9cd4f9da8be13/Packages/User/my_theme/git_badges/staged.png -------------------------------------------------------------------------------- /Packages/User/my_theme/git_badges/staged@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jfcherng-sublime/ST-my-settings/dfeb70b1771160bbebd5e2621ee9cd4f9da8be13/Packages/User/my_theme/git_badges/staged@2x.png -------------------------------------------------------------------------------- /Packages/User/my_theme/git_badges/staged@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jfcherng-sublime/ST-my-settings/dfeb70b1771160bbebd5e2621ee9cd4f9da8be13/Packages/User/my_theme/git_badges/staged@3x.png -------------------------------------------------------------------------------- /Packages/User/my_theme/git_badges/untracked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jfcherng-sublime/ST-my-settings/dfeb70b1771160bbebd5e2621ee9cd4f9da8be13/Packages/User/my_theme/git_badges/untracked.png -------------------------------------------------------------------------------- /Packages/User/my_theme/git_badges/untracked@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jfcherng-sublime/ST-my-settings/dfeb70b1771160bbebd5e2621ee9cd4f9da8be13/Packages/User/my_theme/git_badges/untracked@2x.png -------------------------------------------------------------------------------- /Packages/User/my_theme/git_badges/untracked@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jfcherng-sublime/ST-my-settings/dfeb70b1771160bbebd5e2621ee9cd4f9da8be13/Packages/User/my_theme/git_badges/untracked@3x.png -------------------------------------------------------------------------------- /Packages/User/my_theme/gutters/right_arrow_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jfcherng-sublime/ST-my-settings/dfeb70b1771160bbebd5e2621ee9cd4f9da8be13/Packages/User/my_theme/gutters/right_arrow_green.png -------------------------------------------------------------------------------- /Packages/User/my_theme/gutters/right_arrow_red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jfcherng-sublime/ST-my-settings/dfeb70b1771160bbebd5e2621ee9cd4f9da8be13/Packages/User/my_theme/gutters/right_arrow_red.png -------------------------------------------------------------------------------- /Packages/User/my_theme/gutters/right_arrow_yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jfcherng-sublime/ST-my-settings/dfeb70b1771160bbebd5e2621ee9cd4f9da8be13/Packages/User/my_theme/gutters/right_arrow_yellow.png -------------------------------------------------------------------------------- /Packages/User/scope_hunter.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | // Show the scope backtrace (ST >= 4087) 3 | "context_backtrace": true, 4 | 5 | // Show color and style at the given point 6 | "styling": true, 7 | 8 | // Show current syntax and color scheme paths 9 | // (click to open if using tooltips) 10 | "file_paths": true, 11 | } 12 | -------------------------------------------------------------------------------- /Packages/my_demo_38/.python-version: -------------------------------------------------------------------------------- 1 | 3.8 2 | -------------------------------------------------------------------------------- /Packages/my_demo_38/Default.sublime-commands: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "caption": "My Text Input Handler Demo", 4 | "command": "my_text_input_handler_demo" 5 | } 6 | ] 7 | -------------------------------------------------------------------------------- /Packages/my_demo_38/TextInputHandlerDemo.py: -------------------------------------------------------------------------------- 1 | from typing import Any, Dict 2 | 3 | import sublime 4 | import sublime_plugin 5 | 6 | 7 | class MyTextInputHandlerDemoCommand(sublime_plugin.TextCommand): 8 | def __init__(self, view): 9 | self.view = view 10 | self.input_handler = MyTestInputHandler() 11 | 12 | def input(self, args: Dict[str, Any] = {}) -> sublime_plugin.CommandInputHandler: 13 | return self.input_handler 14 | 15 | def run(self, edit: sublime.Edit, **args: Dict[str, Any]) -> None: 16 | print(f"{self.name()} run args: {args}") 17 | 18 | if self.input_handler.name() in args: 19 | return 20 | 21 | if window := self.view.window(): 22 | window.run_command("show_overlay", {"overlay": "command_palette", "command": self.name()}) 23 | 24 | def input_description(self) -> str: 25 | return "Here's input_description" 26 | 27 | 28 | class MyTestInputHandler(sublime_plugin.TextInputHandler): 29 | def placeholder(self) -> str: 30 | return "Here's placeholder" 31 | 32 | def preview(self, text: str) -> sublime.Html: 33 | return sublime.Html( 34 | f"{text[:2]} / {text[2:4]} / {text[4:6]} / {text[6:]}" 35 | + 'Link to Google' 36 | + '
Here is a new line' 37 | ) 38 | 39 | def validate(self, text: str) -> bool: 40 | is_valid = text == "pass" 41 | 42 | if not is_valid: 43 | sublime.error_message(f"invalid input: {text}") 44 | 45 | return is_valid 46 | 47 | def cancel(self) -> None: 48 | sublime.message_dialog("canceled") 49 | 50 | def confirm(self, text: str) -> None: 51 | sublime.message_dialog(f"confirmed: {text}") 52 | 53 | def description(self, text: str) -> str: 54 | return f"My command description: {text}" 55 | -------------------------------------------------------------------------------- /Packages/my_demo_38/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.ruff] 2 | preview = true 3 | line-length = 120 4 | target-version = 'py38' 5 | exclude = [ 6 | "*/libs/*", 7 | ".git", 8 | ".mypy_cache", 9 | ".venv", 10 | ".venv-*", 11 | "branch-*", 12 | "stubs", 13 | "tests/files", 14 | "typings", 15 | "vendor", 16 | "venv", 17 | "venv-*", 18 | ] 19 | 20 | [tool.ruff.lint] 21 | select = ["E", "F", "W", "I", "UP"] 22 | ignore = ["E203"] 23 | -------------------------------------------------------------------------------- /Packages/my_plugin_38/.python-version: -------------------------------------------------------------------------------- 1 | 3.8 2 | -------------------------------------------------------------------------------- /Packages/my_plugin_38/0_lsp_utils.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | import ctypes 4 | from typing import Tuple 5 | 6 | from more_itertools import first_true 7 | 8 | ELECTRON_VER_STR = str 9 | GLIBC_VER_TUPLE = Tuple[int, int] 10 | NODE_VER_STR = str 11 | 12 | 13 | def get_glibc_version() -> GLIBC_VER_TUPLE | None: 14 | try: 15 | libc = ctypes.CDLL("libc.so.6") 16 | gnu_get_libc_version = libc.gnu_get_libc_version 17 | gnu_get_libc_version.restype = ctypes.c_char_p 18 | version_str = gnu_get_libc_version().decode("utf-8") 19 | return tuple(map(int, version_str.split("."))) 20 | except Exception: 21 | return None 22 | 23 | 24 | def revise_node_electron_version() -> None: 25 | from lsp_utils import node_runtime 26 | 27 | # To know the min glibc version requirement of "THE_BIN_FILE", run 28 | # $ objdump -T "THE_BIN_FILE" | command grep -Eo 'GLIBC_[0-9.]+' | sort -uV | tail -1 29 | 30 | # @see https://nodejs.org/en/download/prebuilt-binaries/ 31 | node_min_reqs: tuple[tuple[GLIBC_VER_TUPLE, NODE_VER_STR], ...] = ( 32 | # ((min_glibc_version), "node_version"), 33 | ((2, 28), "22.13.0"), 34 | ((2, 17), "17.9.1"), 35 | ) 36 | # @see https://github.com/electron/electron/releases 37 | electron_min_reqs: tuple[tuple[GLIBC_VER_TUPLE, ELECTRON_VER_STR, NODE_VER_STR], ...] = ( 38 | # ((min_glibc_version), "electron_version", "node_version"), 39 | ((2, 25), "37.0.0-alpha.1", "22.14.0"), 40 | ((2, 18), "29.4.6", "20.9.0"), 41 | ((2, 17), "28.3.3", "18.18.2"), 42 | ) 43 | 44 | glibc_ver = get_glibc_version() or (99999, 0) 45 | 46 | if node_min_req := first_true(node_min_reqs, pred=lambda x: glibc_ver >= x[0]): 47 | node_runtime.NODE_RUNTIME_VERSION = node_min_req[1] 48 | else: 49 | print("[ERROR] glibc is too old for Node.js...") 50 | 51 | if electron_min_req := first_true(electron_min_reqs, pred=lambda x: glibc_ver >= x[0]): 52 | node_runtime.ELECTRON_RUNTIME_VERSION = electron_min_req[1] 53 | node_runtime.ELECTRON_NODE_VERSION = electron_min_req[2] 54 | else: 55 | print("[ERROR] glibc is too old for Electron...") 56 | 57 | 58 | try: 59 | revise_node_electron_version() 60 | except Exception as e: 61 | print(__file__, e) 62 | 63 | # Shell script for finding min glibc version 64 | """ 65 | #!/usr/bin/env bash 66 | 67 | find_glibc() { 68 | local file=$1 69 | 70 | echo "[INFO] The min GLIBC version is..." 71 | objdump -T "${file}" | command grep -Eo 'GLIBC_[0-9.]+' | sort -uV | tail -1 72 | } 73 | 74 | find_glibc_node() { 75 | local v=$1 76 | 77 | wget "https://nodejs.org/dist/v${v}/node-v${v}-linux-x64.tar.xz" 78 | tar axf "node-v${v}-linux-x64.tar.xz" 79 | find_glibc "node-v${v}-linux-x64/bin/node" 80 | } 81 | 82 | find_glibc_electron() { 83 | local v=$1 84 | 85 | wget "https://github.com/electron/electron/releases/download/v${v}/electron-v${v}-linux-x64.zip" 86 | unzip -oq "electron-v${v}-linux-x64.zip" -d "electron-v${v}-linux-x64" 87 | find_glibc "electron-v${v}-linux-x64/electron" 88 | } 89 | """ 90 | -------------------------------------------------------------------------------- /Packages/my_plugin_38/Default.sublime-commands: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "caption": "My Plugin: Expand JSON", 4 | "command": "expand_json", 5 | }, 6 | { 7 | "caption": "My Plugin: Flatten JSON", 8 | "command": "flatten_json", 9 | }, 10 | ] 11 | -------------------------------------------------------------------------------- /Packages/my_plugin_38/always_indent_command.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | import sublime 4 | import sublime_plugin 5 | 6 | 7 | class AlwaysIndentCommand(sublime_plugin.TextCommand): 8 | def run(self, edit: sublime.Edit) -> None: 9 | for sel in reversed(self.view.sel()): 10 | for line in reversed(self.view.lines(sel)): 11 | self.view.insert(edit, line.begin(), "\t") 12 | -------------------------------------------------------------------------------- /Packages/my_plugin_38/console_exec_command.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | import os 4 | import shlex 5 | import subprocess 6 | import tempfile 7 | import textwrap 8 | from typing import Any 9 | 10 | import sublime 11 | import sublime_plugin 12 | 13 | PLUGIN_NAME = os.path.basename(__file__) 14 | 15 | 16 | def reformat(s: str) -> str: 17 | return textwrap.dedent(s).lstrip() 18 | 19 | 20 | class ConsoleExecCommand(sublime_plugin.WindowCommand): 21 | """ 22 | Execute a command and redirect its output into a console window. 23 | This is based on the default exec command. 24 | """ 25 | 26 | def run( 27 | self, 28 | cmd: list[str] = [], 29 | env: dict[str, str] = {}, 30 | path: str = "", 31 | shell: bool = False, 32 | working_dir: str | None = None, 33 | win_console: list[str] | None = None, 34 | unix_console: list[str] | None = None, 35 | **kwargs: Any, 36 | ) -> None: 37 | if not (view := self.window.active_view()): 38 | return 39 | 40 | sublime.status_message(f"Running {' '.join(cmd)}") 41 | 42 | if os.name == "nt": 43 | console = win_console or ["cmd.exe", "/c"] 44 | pause = ["pause"] 45 | console_cmd = console + cmd + ["&"] + pause 46 | else: 47 | with tempfile.NamedTemporaryFile("w", encoding="utf-8", prefix="st-exec-", delete=False) as f: 48 | f.write(self.generate_linux_script(cmd)) 49 | os.chmod(f.name, 0o777) 50 | console = unix_console or self.get_unix_console() 51 | console_cmd = console + [f.name] 52 | 53 | self.debug_print(f"reconstructed {console_cmd = }") 54 | 55 | # default to the current file's directory if no working directory was provided 56 | if working_dir: 57 | cwd = working_dir 58 | else: 59 | cwd = os.path.dirname(filename) if (filename := view.file_name()) else os.getcwd() 60 | 61 | self.debug_print(f"{cwd = }") 62 | 63 | # get environment 64 | if user_env := view.settings().get("build_env"): 65 | env.update(user_env) 66 | 67 | # get executing environment 68 | proc_env = {**os.environ, **env} 69 | for key in proc_env: 70 | proc_env[key] = os.path.expandvars(proc_env[key]) 71 | 72 | # run in new console 73 | old_path: str | None = None 74 | try: 75 | # set temporary PATH to locate executable 76 | if path: 77 | old_path = os.environ["PATH"] 78 | os.environ["PATH"] = os.path.expandvars(path) 79 | subprocess.Popen(console_cmd, env=proc_env, cwd=cwd, shell=shell) 80 | finally: 81 | if old_path: 82 | os.environ["PATH"] = old_path 83 | 84 | def get_unix_console(self) -> list[str]: 85 | sessions = ["gnome-session", "ksmserver", "xfce4-session", "lxqt-session", "lxsession"] 86 | ps = f'ps -eo comm | grep -E "{"|".join(sessions)}"' 87 | # get the first found session or an empty string 88 | session_found = os.popen(ps).read().partition("\n")[0] 89 | # Gnome 90 | if session_found == "gnome-session": 91 | console = ["gnome-terminal", "-e"] 92 | # XDE 93 | elif session_found == "xfce4-session": 94 | console = ["terminal", "-e"] 95 | # KDE 96 | elif session_found == "ksmserver": 97 | console = ["konsole", "-e"] 98 | # LXDE 99 | elif session_found == "lxsession": 100 | console = ["lxterminal", "-e"] 101 | # LXQT 102 | elif session_found == "lxqt-session": 103 | console = ["qterminal", "-e"] 104 | # default 105 | else: 106 | console = ["xterm", "-e"] 107 | return console 108 | 109 | @staticmethod 110 | def generate_linux_script(cmd: list[str]) -> str: 111 | escaped_cmd = " ".join(map(shlex.quote, cmd)) 112 | return reformat(f""" 113 | #!/usr/bin/env bash 114 | {escaped_cmd} 115 | echo 116 | echo "Press any key to continue..." 117 | read -n1 118 | """) 119 | 120 | def debug_print(self, *arg: Any, **kwargs: Any) -> None: 121 | print(f"[{PLUGIN_NAME}]", *arg, **kwargs) 122 | -------------------------------------------------------------------------------- /Packages/my_plugin_38/copy_without_newline_command.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | import sublime 4 | import sublime_plugin 5 | 6 | 7 | class CopyWithoutNewlineCommand(sublime_plugin.TextCommand): 8 | def run(self, _: sublime.Edit) -> None: 9 | if self.view.has_non_empty_selection_region(): 10 | self.view.run_command("copy") 11 | return 12 | 13 | sublime.set_clipboard( 14 | "\n".join( 15 | self.view.substr(self.view.line(r)) 16 | for r in self.view.sel() 17 | # ... 18 | ) 19 | ) 20 | -------------------------------------------------------------------------------- /Packages/my_plugin_38/dependencies.json: -------------------------------------------------------------------------------- 1 | { 2 | "*": { 3 | "*": [ 4 | "more-itertools", 5 | "typing-extensions" 6 | ] 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Packages/my_plugin_38/deselect_command.py: -------------------------------------------------------------------------------- 1 | # Sublime Deselect plugin 2 | # 3 | # based on a forum post by C0D312: 4 | # https://www.sublimetext.com/forum/viewtopic.php?f=2&t=4716#p21219 5 | 6 | from __future__ import annotations 7 | 8 | import sublime 9 | import sublime_plugin 10 | 11 | 12 | class DeselectCommand(sublime_plugin.TextCommand): 13 | def run(self, edit: sublime.Edit) -> None: 14 | if len(sel := self.view.sel()) == 0: 15 | return 16 | 17 | end = sel[0].b 18 | 19 | sel.clear() 20 | sel.add(end) 21 | -------------------------------------------------------------------------------- /Packages/my_plugin_38/dev_mode.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | import functools 4 | from collections.abc import Callable 5 | from typing import Any, TypeVar, cast 6 | 7 | import sublime 8 | import sublime_plugin 9 | 10 | _T_AnyCallable = TypeVar("_T_AnyCallable", bound=Callable) 11 | 12 | PLUGIN_NAME = "jfcherng_dev_mode" 13 | 14 | VIEW_STATUS_KEY_SHOW_SEL = "VIEW_STATUS_KEY_SHOW_SEL" 15 | VIEW_STATUS_KEY_SHOW_WSVB_IDS = "VIEW_STATUS_KEY_SHOW_WSVB_IDS" 16 | 17 | 18 | def plugin_loaded() -> None: 19 | """Executed when this plugin is loaded.""" 20 | 21 | def _on_st_settings_changed() -> None: 22 | if not is_in_dev_mode(): 23 | cleanup() 24 | 25 | st_settings = get_st_settings() 26 | st_settings.add_on_change(PLUGIN_NAME, _on_st_settings_changed) 27 | 28 | 29 | def plugin_unloaded() -> None: 30 | """Executed when this plugin is unloaded.""" 31 | cleanup() 32 | 33 | 34 | def cleanup() -> None: 35 | for window in sublime.windows(): 36 | for view in window.views(include_transient=True): 37 | view.erase_status(VIEW_STATUS_KEY_SHOW_SEL) 38 | view.erase_status(VIEW_STATUS_KEY_SHOW_WSVB_IDS) 39 | 40 | 41 | def get_st_settings() -> sublime.Settings: 42 | return sublime.load_settings("Preferences.sublime-settings") 43 | 44 | 45 | def is_in_dev_mode() -> bool: 46 | return get_st_settings().get("dev_mode", False) 47 | 48 | 49 | def must_in_dev_mode(*, failed_return: Any = None) -> Callable[[_T_AnyCallable], _T_AnyCallable]: 50 | def _decorator(func: _T_AnyCallable) -> _T_AnyCallable: 51 | @functools.wraps(func) 52 | def _wrapped(*args, **kwargs) -> None: 53 | if not is_in_dev_mode(): 54 | return failed_return 55 | return func(*args, **kwargs) 56 | 57 | return cast(_T_AnyCallable, _wrapped) 58 | 59 | return _decorator 60 | 61 | 62 | class JfcherngDevModeListener(sublime_plugin.EventListener): 63 | @must_in_dev_mode() 64 | def on_selection_modified(self, view: sublime.View) -> None: 65 | self.show_sel(view) 66 | 67 | @must_in_dev_mode() 68 | def on_activated(self, view: sublime.View) -> None: 69 | self.show_wsvb_ids(view) 70 | 71 | def show_sel(self, view: sublime.View) -> None: 72 | region_reprs: list[str] = [] 73 | for region in view.sel(): 74 | region_reprs.append(f"{region.a}" if region.empty() else f"{region.a}-{region.b}") 75 | 76 | status_text = ",".join(region_reprs) 77 | view.set_status(VIEW_STATUS_KEY_SHOW_SEL, f"sel({status_text})") 78 | 79 | def show_wsvb_ids(self, view: sublime.View) -> None: 80 | window_id = window.id() if (window := view.window()) else "?" 81 | sheet_id = sheet.id() if (sheet := view.sheet()) else "?" 82 | view_id = view.id() 83 | buffer_id = view.buffer_id() 84 | 85 | view.set_status(VIEW_STATUS_KEY_SHOW_WSVB_IDS, f"w{window_id}/s{sheet_id}/v{view_id}/b{buffer_id}") 86 | -------------------------------------------------------------------------------- /Packages/my_plugin_38/extend_selection_to_previous_line_command.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | import sublime 4 | import sublime_plugin 5 | 6 | 7 | class ExtendSelectionToPreviousLineCommand(sublime_plugin.TextCommand): 8 | """ 9 | Similar to `ctrl+l` but the selection is upward. 10 | 11 | Recommended keybinding: 12 | ```js 13 | { "keys": ["..."], "command": "extend_selection_to_previous_line" }, 14 | ``` 15 | """ 16 | 17 | def run(self, edit: sublime.Edit) -> None: 18 | v = self.view 19 | sel = v.sel() 20 | 21 | regions: list[sublime.Region] = [] 22 | for r in sel: 23 | row, col = v.rowcol(old_end := r.end()) 24 | new_begin = max(old_end, v.line(r).end()) if col else old_end 25 | 26 | row, col = v.rowcol(old_begin := r.begin()) 27 | new_end = v.text_point(row + 1, 0) if col else old_begin 28 | 29 | regions.append(sublime.Region(new_begin, new_end)) 30 | 31 | sel.clear() 32 | sel.add_all(regions) 33 | 34 | v.run_command("move", {"by": "lines", "extend": True, "forward": False}) 35 | -------------------------------------------------------------------------------- /Packages/my_plugin_38/find_and_replace.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | import functools 4 | import re 5 | from dataclasses import dataclass 6 | 7 | import sublime 8 | import sublime_plugin 9 | 10 | 11 | @dataclass 12 | class FindReplacePair: 13 | find: str | None = None 14 | replace: str | None = None 15 | flags: str | None = None 16 | 17 | 18 | class FindAndReplaceCommand(sublime_plugin.WindowCommand): 19 | _input_captions = { 20 | "find": "Find (regex): ", 21 | "replace": "Replace (regex): ", 22 | "flags": "Flags (regex): ", 23 | } 24 | 25 | def run( 26 | self, 27 | find: str | None = None, 28 | replace: str | None = None, 29 | flags: str | None = None, 30 | ) -> None: 31 | fr = FindReplacePair(find, replace, flags) 32 | self._ask_attr_and_replace(fr) 33 | 34 | def _ask_attr_and_replace(self, fr: FindReplacePair) -> None: 35 | for attr in self._input_captions.keys(): 36 | if getattr(fr, attr, None) is None: 37 | return self._ask_user_input(attr, fr) 38 | self._do_replace(fr) 39 | 40 | def _ask_user_input(self, attr: str, fr: FindReplacePair) -> None: 41 | self.window.show_input_panel( 42 | self._input_captions[attr], 43 | "", 44 | on_done=functools.partial(self._user_input_done, attr=attr, fr=fr), 45 | on_change=None, 46 | on_cancel=None, 47 | ) 48 | 49 | def _user_input_done(self, user_input: str, attr: str, fr: FindReplacePair) -> None: 50 | setattr(fr, attr, user_input) 51 | self._ask_attr_and_replace(fr) 52 | 53 | def _do_replace(self, fr: FindReplacePair) -> None: 54 | if not (v := self.window.active_view()): 55 | return 56 | 57 | v.run_command( 58 | "find_and_replace_worker", 59 | { 60 | "find": fr.find, 61 | "replace": fr.replace, 62 | "flags": fr.flags, 63 | }, 64 | ) 65 | 66 | 67 | class FindAndReplaceWorkerCommand(sublime_plugin.TextCommand): 68 | def run(self, edit: sublime.Edit, find: str, replace: str, flags: str = "") -> None: 69 | whole_region = sublime.Region(0, self.view.size()) 70 | 71 | try: 72 | new_text = re.sub( 73 | find, 74 | replace, 75 | self.view.substr(whole_region), 76 | 0, 77 | self._parse_regex_flags(flags), 78 | ) 79 | except re.error as e: 80 | return sublime.error_message(str(e)) 81 | 82 | sel = self.view.sel() 83 | seletions = list(sel) 84 | self.view.replace(edit, whole_region, new_text) 85 | sel.clear() 86 | sel.add_all(seletions) 87 | 88 | @staticmethod 89 | def _parse_regex_flags(flags: str) -> int: 90 | """ 91 | Parse string regex flags into an int value. 92 | 93 | Valid flags are: 94 | `A (ASCII)`, `I (IGNORECASE)`, `L (LOCALE)`, `M (MULTILINE)`, 95 | `S (DOTALL)`, `X (VERBOSE)`, `U (UNICODE)`. 96 | 97 | @see https://docs.python.org/3.8/library/re.html#re.A 98 | """ 99 | return functools.reduce(lambda c, el: c | el, (getattr(re, flag, 0) for flag in flags), 0) 100 | -------------------------------------------------------------------------------- /Packages/my_plugin_38/focus_active_output_panel_command.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | import sublime_plugin 4 | 5 | 6 | class FocusActiveOutputPanelCommand(sublime_plugin.WindowCommand): 7 | def run(self) -> None: 8 | if not (panel_name := self.window.active_panel()): 9 | return 10 | 11 | self.window.run_command("show_panel", {"panel": panel_name}) 12 | 13 | if not panel_name.startswith("output."): 14 | return 15 | 16 | panel_name = panel_name[len("output.") :] 17 | panel = self.window.find_output_panel(panel_name) 18 | assert panel 19 | self.window.focus_view(panel) 20 | -------------------------------------------------------------------------------- /Packages/my_plugin_38/goto_symbol_command.py: -------------------------------------------------------------------------------- 1 | """ 2 | This command allows to navigate between symbols, which are listed in Ctrl+R. 3 | 4 | Example keybindings: 5 | 6 | ```json 7 | { "keys": ["ctrl+shift+,"], "command": "goto_symbol", "args": {"step": -1, "cycle": false} }, 8 | { "keys": ["ctrl+shift+."], "command": "goto_symbol", "args": {"step": 1, "cycle": false} }, 9 | ``` 10 | """ 11 | 12 | from __future__ import annotations 13 | 14 | import bisect 15 | from collections.abc import Sequence 16 | from typing import Literal 17 | 18 | import sublime 19 | import sublime_plugin 20 | 21 | 22 | class GotoSymbolCommand(sublime_plugin.TextCommand): 23 | def run(self, edit: sublime.Edit, *, step: Literal[-1, 1] = -1, cycle: bool = False) -> None: 24 | if not ((sel := self.view.sel()) and (sym_regions := self.view.symbol_regions())): 25 | return 26 | caret = sel[0].b 27 | 28 | found_idx = self._find_symbol_region_index(caret, sym_regions, step) 29 | if cycle: 30 | found_idx %= len(sym_regions) 31 | if not (0 <= found_idx < len(sym_regions)): 32 | return 33 | 34 | self._goto_symbol_region(sym_regions[found_idx]) 35 | 36 | def _find_symbol_region_index(self, point: int, sym_regions: Sequence[sublime.SymbolRegion], step: int) -> int: 37 | """ 38 | Finds a symbol region index. 39 | 40 | :param point: The point to find the symbol region index for. 41 | :param sym_regions: The symbol regions. 42 | :param step: The step value. `-1` for the previous symbol region, `1` for the next symbol region. 43 | 44 | :returns: The symbol region index. Ranged from `-1` to `len(sym_regions)`. 45 | 46 | :raises ValueError: If `step` is invalid. 47 | """ 48 | symbol_points = tuple(r.region.a for r in sym_regions) 49 | 50 | # prev 51 | if step == -1: 52 | return bisect.bisect_left(symbol_points, point) - 1 53 | # next 54 | if step == 1: 55 | return bisect.bisect_right(symbol_points, point) 56 | 57 | raise ValueError(f"Invalid step value: {step}") 58 | 59 | def _goto_symbol_region(self, sym_region: sublime.SymbolRegion) -> None: 60 | point = sym_region.region.a 61 | 62 | self.view.sel().clear() 63 | self.view.sel().add(point) 64 | self.view.show_at_center(point) 65 | -------------------------------------------------------------------------------- /Packages/my_plugin_38/just_one_space_command.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | from collections.abc import Generator, Iterable 4 | 5 | import sublime 6 | import sublime_plugin 7 | 8 | 9 | class JustOneSpaceCommand(sublime_plugin.TextCommand): 10 | def run(self, edit: sublime.Edit, *, space_chars: str = " ", replacement: str = " ") -> None: 11 | sel = self.view.sel() 12 | 13 | space_regions = list(self.extend_space_regions(regions=sel, space_chars=space_chars)) 14 | 15 | sel.clear() 16 | for region in reversed(space_regions): 17 | if region: 18 | self.view.replace(edit, region, replacement) 19 | sel.add(region.a) 20 | 21 | def extend_space_regions( 22 | self, 23 | *, 24 | regions: Iterable[sublime.Region], 25 | space_chars: str, 26 | ) -> Generator[sublime.Region, None, None]: 27 | def extend_space_region(region: sublime.Region) -> sublime.Region: 28 | view_size = self.view.size() 29 | pt_l = pt_r = region.b # the visual caret position 30 | while pt_l > 0 and self.view.substr(pt_l - 1) in space_chars: 31 | pt_l -= 1 32 | while pt_r < view_size and self.view.substr(pt_r) in space_chars: 33 | pt_r += 1 34 | return sublime.Region(pt_l, pt_r) 35 | 36 | yield from self.merge_overlapped_regions(sorted(map(extend_space_region, regions))) 37 | 38 | @staticmethod 39 | def merge_overlapped_regions(regions: Iterable[sublime.Region]) -> Generator[sublime.Region, None, None]: 40 | # assume `regions` is sorted and regions in it are normalized (.a <= .b) 41 | prev_ = next_ = None 42 | 43 | for region in regions: 44 | next_ = region 45 | 46 | if prev_ is not None: 47 | if prev_.intersects(next_): 48 | prev_ = sublime.Region(prev_.a, next_.b) 49 | continue 50 | yield prev_ 51 | 52 | prev_ = next_ 53 | 54 | if prev_ is not None: 55 | yield prev_ 56 | -------------------------------------------------------------------------------- /Packages/my_plugin_38/pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.basedpyright] 2 | pythonVersion = "3.8" 3 | 4 | [tool.pyright] 5 | pythonVersion = "3.8" 6 | 7 | [tool.ruff] 8 | preview = true 9 | line-length = 120 10 | target-version = "py38" 11 | exclude = [ 12 | "*/libs/*", 13 | ".git", 14 | ".mypy_cache", 15 | ".venv", 16 | ".venv-*", 17 | "branch-*", 18 | "stubs", 19 | "tests/files", 20 | "typings", 21 | "vendor", 22 | "venv", 23 | "venv-*", 24 | ] 25 | 26 | [tool.ruff.lint] 27 | select = ["E", "F", "W", "I", "UP"] 28 | ignore = ["E203"] 29 | -------------------------------------------------------------------------------- /Packages/my_plugin_38/run_async_command.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | import sublime 4 | import sublime_plugin 5 | 6 | 7 | class RunAsyncCommand(sublime_plugin.WindowCommand): 8 | """Run a given command asynchronously.""" 9 | 10 | def run(self, command: str, args: dict | None = None, timeout_ms: float = 0) -> None: 11 | sublime.set_timeout_async(lambda: self.window.run_command(command, args or {}), timeout_ms) 12 | -------------------------------------------------------------------------------- /Packages/my_plugin_38/selection_to_top_command.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | import sublime 4 | import sublime_plugin 5 | 6 | 7 | class SelectionToTopCommand(sublime_plugin.TextCommand): 8 | """ 9 | Jump the viewport in the file so that the selection is at the top of the 10 | file display area. Handy while conducting reviews. 11 | 12 | @see https://stackoverflow.com/a/70942374/4643765 13 | """ 14 | 15 | def run(self, edit: sublime.Edit) -> None: 16 | region = self.view.sel()[0] 17 | 18 | offs = self.view.rowcol(region.begin())[0] * self.view.line_height() 19 | self.view.set_viewport_position((0.0, offs), True) 20 | 21 | self.view.sel().clear() 22 | self.view.sel().add(region) 23 | -------------------------------------------------------------------------------- /Packages/my_plugin_38/step_tab_cycle_command.py: -------------------------------------------------------------------------------- 1 | """ 2 | Modified from https://github.com/ahuff44/sublime-better-tab-cycling 3 | 4 | Keybinding example: 5 | 6 | // go to the previous tab sheet 7 | { "keys": ["ctrl+super+j"], "command": "step_tab_cycle", "args": { "steps": -1 } }, 8 | // go to the next tab sheet 9 | { "keys": ["ctrl+super+l"], "command": "step_tab_cycle", "args": { "steps": 1 } }, 10 | """ 11 | 12 | from __future__ import annotations 13 | 14 | import sublime_plugin 15 | 16 | 17 | class StepTabCycleCommand(sublime_plugin.WindowCommand): 18 | """ 19 | Switch to the next tab in the active pane. 20 | Like sublime's builtin next_sheet, but stays within the active pane 21 | """ 22 | 23 | def run(self, steps: int) -> None: 24 | window = self.window 25 | 26 | if not (sheet := window.active_sheet()): 27 | return 28 | 29 | group_index, sheet_index = window.get_sheet_index(sheet) 30 | sheets = window.sheets_in_group(group_index) 31 | sheet_index_focus = (sheet_index + steps) % len(sheets) 32 | window.focus_sheet(sheets[sheet_index_focus]) 33 | -------------------------------------------------------------------------------- /Packages/my_plugin_38/toggle_all_inline_diffs_command.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | import sublime 4 | import sublime_plugin 5 | 6 | 7 | class ToggleAllInlineDiffsCommand(sublime_plugin.TextCommand): 8 | """A command to toggle all inline diffs in a view.""" 9 | 10 | def run(self, edit: sublime.Edit) -> None: 11 | sel = self.view.sel() 12 | regions_backup: tuple[sublime.Region, ...] = tuple(sel) 13 | 14 | # toggle the whole file inline diff 15 | sel.clear() 16 | sel.add(sublime.Region(0, self.view.size())) 17 | self.view.run_command("toggle_inline_diff", {"args": {"prefer_hide": True}}) 18 | 19 | # add back previous selection 20 | sel.clear() 21 | sel.add_all(regions_backup) 22 | -------------------------------------------------------------------------------- /Packages/my_plugin_38/toggle_readonly_command.py: -------------------------------------------------------------------------------- 1 | from __future__ import annotations 2 | 3 | from typing import Any 4 | 5 | import sublime 6 | import sublime_plugin 7 | 8 | STATUS_KEY = __file__ 9 | 10 | 11 | def update_status_bar(view: sublime.View) -> None: 12 | if view.is_read_only(): 13 | view.set_status(STATUS_KEY, "🔒") 14 | else: 15 | view.erase_status(STATUS_KEY) 16 | 17 | 18 | class ToggleReadOnlyCommand(sublime_plugin.TextCommand): 19 | def run(self, edit: sublime.Edit, *, value: Any = None) -> None: 20 | if value is None: 21 | self.view.set_read_only(not self.view.is_read_only()) 22 | else: 23 | self.view.set_read_only(bool(value)) 24 | 25 | 26 | class ReadOnlyStatusListener(sublime_plugin.ViewEventListener): 27 | def on_activated(self) -> None: 28 | update_status_bar(self.view) 29 | 30 | def on_post_text_command(self, command_name: str, args: dict[str, Any] | None) -> None: 31 | # why "revert" command makes the view read-only for a moment? 32 | if command_name not in {"revert"}: 33 | update_status_bar(self.view) 34 | -------------------------------------------------------------------------------- /my_dependencies/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "dependencies": { 4 | "@babel/eslint-parser": "^7", 5 | "diagnostic-languageserver": "^1", 6 | "eslint": "^9", 7 | "eslint-config-prettier": "^10", 8 | "eslint-plugin-prettier": "^5", 9 | "less": "^4", 10 | "markdownlint-cli": "^0", 11 | "prettier": "^3", 12 | "sass": "^1" 13 | }, 14 | "packageManager": "yarn@1.22.22+sha256.c17d3797fb9a9115bf375e31bfd30058cac6bc9c3b8807a3d8cb2094794b51ca" 15 | } 16 | -------------------------------------------------------------------------------- /my_dependencies/requirements.txt: -------------------------------------------------------------------------------- 1 | certifi 2 | compdb 3 | compiledb 4 | httpie 5 | ipython 6 | 7 | build 8 | pip-tools 9 | setuptools 10 | vendorize -------------------------------------------------------------------------------- /my_dependencies/update.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" 4 | 5 | ( 6 | export UV_SYSTEM_PYTHON=1 7 | 8 | cd "${SCRIPT_DIR}" || exit 1 9 | 10 | uv self update 11 | uv pip install --upgrade -r requirements.txt 12 | ) 13 | 14 | ( 15 | yarn_dir="$(yarn global dir)" 16 | if [[ -d ${yarn_dir} ]]; then 17 | cd "${yarn_dir}" || exit 1 18 | yarn upgrade 19 | fi 20 | ) 21 | -------------------------------------------------------------------------------- /scripts/.gitignore: -------------------------------------------------------------------------------- 1 | /LSP/ 2 | -------------------------------------------------------------------------------- /scripts/mirror_official_docs.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" 4 | NOW="$(date +'%Y/%m/%d %H:%M:%S')" 5 | TODAY="$(date +'%Y%m%d')" 6 | 7 | # ------ # 8 | # colors # 9 | # ------ # 10 | 11 | if [[ ${FORCE_COLOR} == "0" ]]; then 12 | C_RESET="" 13 | H_DEBUG="[DEBUG]" 14 | H_INFO="[INFO]" 15 | H_WARNING="[WARNING]" 16 | H_ERROR="[ERROR]" 17 | else 18 | C_RESET="\e[0m" 19 | H_DEBUG="[\e[0;30;47mDEBUG${C_RESET}]" 20 | H_INFO="[\e[0;37;44mINFO${C_RESET}]" 21 | H_WARNING="[\e[0;30;43mWARNING${C_RESET}]" 22 | H_ERROR="[\e[0;37;41mERROR${C_RESET}]" 23 | fi 24 | 25 | #---------# 26 | # configs # 27 | #---------# 28 | 29 | HTTRACK=${HTTRACK:-"httrack"} 30 | USER_AGENT=${USER_AGENT-"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36"} 31 | FOOTER=${FOOTER-"
Snapshot on ${NOW}
"} 32 | 33 | function mirror() { 34 | local output_dir="$1" 35 | local start_url="$2" 36 | 37 | rm -rf "${output_dir}" 38 | 39 | pushd "${SCRIPT_DIR}" || exit 40 | 41 | echo -e "${H_INFO} ⌛ Downloading..." 42 | 43 | "${HTTRACK}" \ 44 | --path "${output_dir}" \ 45 | --user-agent "${USER_AGENT}" \ 46 | --referer "${start_url}" \ 47 | --mirror "${start_url}" \ 48 | --footer "${FOOTER}" \ 49 | --stay-on-same-address \ 50 | --display \ 51 | --quiet \ 52 | --max-rate=0 \ 53 | +*.png +*.gif +*.jpg +*.jpeg +*.webp +*.svg +*.css +*.js \ 54 | -ad.doubleclick.net/* 55 | 56 | # redirect index page to website index 57 | index_file="${output_dir}/index.html" 58 | if [ -f "${index_file}" ]; then 59 | index_url=$(sed -zE 's/.* HREF="([^"]+)".*/\1/g' "${index_file}") 60 | echo "" \ 61 | >"${output_dir}/index.html" 62 | fi 63 | 64 | cleanup "${output_dir}" 65 | 66 | popd || exit 67 | } 68 | 69 | function cleanup() { 70 | local output_dir="$1" 71 | 72 | pushd "${output_dir}" || exit 73 | 74 | echo -e "${H_INFO} 🧹 Clean up..." 75 | 76 | rm -rf \ 77 | hts-cache/ \ 78 | hts-log.txt \ 79 | ./*.gif 80 | 81 | popd || exit 82 | } 83 | 84 | mirror \ 85 | "${SCRIPT_DIR}/docs/ST_official_docs_${TODAY}" \ 86 | "https://www.sublimetext.com/docs/index.html" 87 | 88 | mirror \ 89 | "${SCRIPT_DIR}/docs/SM_official_docs_${TODAY}" \ 90 | "https://www.sublimemerge.com/docs/index.html" 91 | -------------------------------------------------------------------------------- /scripts/update_lsp.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" 4 | 5 | ST_LSP_PACKAGE_PATH="${SCRIPT_DIR}/../Installed Packages/LSP.sublime-package" 6 | INTERESTED_REF=${1:-main} 7 | TMP_DIR="${SCRIPT_DIR}/tmp" 8 | 9 | cleanup() { 10 | rm -rf "${TMP_DIR}" 11 | } 12 | 13 | if [ ! -f "${ST_LSP_PACKAGE_PATH}" ]; then 14 | echo "LSP package not found..." 15 | exit 1 16 | fi 17 | 18 | cleanup 19 | mkdir -p "${TMP_DIR}" 20 | 21 | git clone "https://github.com/sublimelsp/LSP.git" \ 22 | --single-branch \ 23 | --branch="${INTERESTED_REF}" \ 24 | --depth=1 \ 25 | "${TMP_DIR}/LSP" 26 | 27 | if [[ $? != "0" ]]; then 28 | echo "Failed to clone LSP with ref: ${INTERESTED_REF}" 29 | exit 1 30 | fi 31 | 32 | pushd "${TMP_DIR}/LSP" || exit 33 | 34 | # create package 35 | git archive HEAD -o out.zip 36 | 7za x -aoa "${ST_LSP_PACKAGE_PATH}" "package-metadata.json" 37 | 7za a -aoa out.zip "package-metadata.json" 38 | 39 | # replace ST's package 40 | mv -f out.zip "${ST_LSP_PACKAGE_PATH}" 41 | 42 | popd || exit 43 | 44 | cleanup 45 | --------------------------------------------------------------------------------