diff --git a/dotfiles/.vim/plugged/python-syntax/.gitrepo b/dotfiles/.vim/plugged/python-syntax/.gitrepo new file mode 100644 index 00000000..60fa150d --- /dev/null +++ b/dotfiles/.vim/plugged/python-syntax/.gitrepo @@ -0,0 +1,12 @@ +; DO NOT EDIT (unless you know what you are doing) +; +; This subdirectory is a git "subrepo", and this file is maintained by the +; git-subrepo command. See https://github.com/git-commands/git-subrepo#readme +; +[subrepo] + remote = https://github.com/hdima/python-syntax.git + branch = master + commit = 69760cb3accce488cc072772ca918ac2cbf384ba + parent = 20b4a91fbb679235d5e0765d748bf6d74b0b6422 + method = merge + cmdver = 0.4.3 diff --git a/dotfiles/.vim/plugged/python-syntax/CHANGES.txt b/dotfiles/.vim/plugged/python-syntax/CHANGES.txt new file mode 100644 index 00000000..2d3b520f --- /dev/null +++ b/dotfiles/.vim/plugged/python-syntax/CHANGES.txt @@ -0,0 +1,224 @@ +Revision 3.6.0 (2015-11-XX): + + - Fix 'async def' highlighting. Patch by Joongi Kim + - Add dummy 'pythonInclude' group to avoid crashing standard pyrex.vim. + Patch by Antony Lee + +Revision 3.5.0 (2015-06-10): + + - Add support for 'async ...' and 'await' keywords introduced in + Python 3.5. Patch by Ihor Gorobets + +Revision 3.3.7 (2014-12-27): + + - Add support for Python 3 non-ASCII decorator names. + Patch by Victor Salgado + +Revision 3.3.6 (2013-11-18): + + - Highlight 'yield from' statement introduced in Python 3.3. Reported by + Elizabeth Myers. + +Revision 3.3.5 (2013-08-31): + + - Highlight 'import', 'from' and 'as' as include statements. + Patch by David Briscoe + - Added new option 'python_highlight_file_headers_as_comments' (disabled by + default) to highlight shebang and coding file headers as comments. + Proposed by David Briscoe. + +Revision 3.3.4 (2013-08-11): + + - Highlight True and False as booleans. Patch by Yuri Habrusiev. + +Revision 3.3.3 (2013-06-02): + + - More lightweight syntax reloading. Patch by Will Gray. + +Revision 3.3.2 (2013-06-01): + + - Fixed behaviour of b:python_version_2 variable. Reported by Will Gray. + +Revision 3.3.1 (2013-05-12): + + - The script was moved to its own repository at + https://github.com/hdima/python-syntax + +Revision 3.3.0 (2013-03-10): + + - Merge Python 2 and Python 3 script versions into the single python.vim + script + +Revision 3.0.7 (2012-02-11): + + - Updated email and URL + +Revision 2.6.7 (2012-02-11): + + - Updated email and URL + +Revision 3.0.6 (2010-11-14): + + - Fixed highlighting for str.format syntax. Patch by Anton Butanaev. + +Revision 3.0.5 (2010-11-11): + + - Fixed highlighting for bytes. Patch by Anton Butanaev. + - Fixed highlighting for numbers. + +Revision 3.0.4 (2010-11-09): + + - Fixed highlighting for raw bytes literals. Patch by Anton Butanaev. + +Revision 3.0.3 (2010-04-09): + + - Applied patch by Andrea Riciputi with new configuration options + "python_highlight_builtin_objs" and "python_highlight_builtin_funcs" + +Revision 3.0.2 (2009-07-24): + + - Applied patch by Caleb Adamantine which fixes highlighting for decorators + +Revision 3.0.1 (2009-05-03): + + - Fixed compatibility with pyrex.vim + +Revision 3.0.0 (2008-12-07): + + - Added support for non-ASCII identifiers; + - Added support for new text strings and binary data (bytes); + - Updated support for numeric literals; + - Updated support for str.format; + - Added new builtins introduced in Python 2.6: "ascii", "exec", + "memoryview", "print"; + - Added new keyword "nonlocal"; + - Removed exception "StandardError"; + - Removed builtins: "apply", "basestring", "buffer", "callable", "coerce", + "execfile", "file", "help", "intern", "long", "raw_input", "reduce", + "reload", "unichr", "unicode", "xrange"; + +Revision 2.6.6 (2010-04-09): + + - Applied patch by Andrea Riciputi with new configuration options + "python_highlight_builtin_objs" and "python_highlight_builtin_funcs" + +Revision 2.6.5 (2009-07-24): + + - Applied patch by Caleb Adamantine which fixes highlighting for decorators + +Revision 2.6.4 (2009-05-03): + + - Fixed compatibility with pyrex.vim + +Revision 2.6.3 (2008-09-29): + + - Return back trailing 'L' support for numbers. Actually it was changed for + future Python 3.0 syntax but in wrong file; + +Revision 2.6.2 (2008-09-22): + + - Added "VMSError" exception; + - Added support for b"..." syntax; + - Added support for str.format brace escaping; + +Revision 2.6.1 (2008-09-21): + + - Added new builtins and exceptions introduced in Python 2.6: "bin", + "bytearray", "bytes", "format", "next", "BufferError", "BytesWarning"; + - Added builtin "__debug__"; + - Added global variables: "__doc__", "__file__", "__name__", "__package__"; + - Removed "OverflowWarning" (removed in Python 2.5); + - Added option "python_print_as_function" for highlight "print" as a + function; + - Added support for new integer literal syntax "0o" and "0b"; + - Added support for string.Template syntax controlled by + "python_highlight_string_templates" option; + - Added support for str.format syntax controlled by + "python_highlight_string_format" option; + - Removed highlighting for "--" and "++" because it's a valid Python + expressions which can be interpreted as "a + +b"; + +Revision 2.5.6 (2007-02-04): + + - Applied patch by Pedro Algarvio to enable spell checking only for + the right spots (strings and comments); + +Revision 2.5.5 (2006-09-26): + + - added new warnings (ImportWarning, UnicodeWarning) + introduced in Python 2.5; + +Revision 2.5.4 (2006-05-11): + + - added highlighting for erroneous operators: &&, ||, ++, --, === + (inspired by http://www.vim.org/tips/tip.php?tip_id=969, thanks + Jeroen Ruigrok van der Werven for the link); + - added highlighting for new 'with' statement and 'BaseException', + 'GeneratorExit' exceptions introduced in Python 2.5; + - added highlighting for 'OverflowWarning' exception which had been + forgotten; + - returned more robust recognition for function names; + +Revision 2.5.3: + + - fixed %-formatting highlighting for raw unicode strings; + +Revision 2.5.2: + + - slightly simplified option handling; + - fixed regexp for indentation errors; + - fixed highlighting for backslashed symbols inside strings; + - added highlighting for trailing-space errors (triggered by new + option: python_highlight_space_errors); + - added highlighting for variable name errors; + - added highlighting for hex number errors; + +Revision 2.5.1 (2005-03-13): + + - added new builtins 'all' and 'any' (Python 2.5a0) + +Revision 2.4.2 (2004-08-05): + + - added highlighting for new @decorator syntax introduced in python 2.4a2 + +Revision 2.4.1 (2004-03-17): + + - new versioning scheme (based on python version numbers); + - added highlighting for new types/builtins introduced in python 2.4 + (set, frozenset, reversed, sorted); + - new option added: python_slow_sync (set this for slow but more + robust syntax synchronization); + - added highlighting for doctests; + +Revision 1.19: + + - new option added: python_highlight_indent_errors; + - python_highlight_all now not override previously set options, + for example code: + let python_highlight_indent_errors = 0 + let python_highlight_all = 1 + set all highlight options except indentation errors highlighting option; + +Revision 1.17: + + - changed header, "Based on..." string added; + +Revision 1.16: + + - added basestring builtin; + +Revision 1.15 (first public revision). + + The changes since the original (vim6.1) python.vim are: + + - changed string highlighting; + - enhanced special symbols highlighting inside strings; + - enhanced constant numbers highlighting; + - added optional highlighting for %-formatting inside strings; + - added highlighting for error conditions (wrong symbols in source file, + mixing spaces and tabs, wrong number values, + wrong %-formatting inside strings); + - added highlighting for magic comments: source code encoding + and #! (executable) strings; + - added highlighting for new exceptions and builtins introduced + in python 2.3; diff --git a/dotfiles/.vim/plugged/python-syntax/LICENSE b/dotfiles/.vim/plugged/python-syntax/LICENSE new file mode 100644 index 00000000..348583e4 --- /dev/null +++ b/dotfiles/.vim/plugged/python-syntax/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2002-2014 Dmitry Vasiliev + +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: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +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. diff --git a/dotfiles/.vim/plugged/python-syntax/README.rst b/dotfiles/.vim/plugged/python-syntax/README.rst new file mode 100644 index 00000000..f9cd20d5 --- /dev/null +++ b/dotfiles/.vim/plugged/python-syntax/README.rst @@ -0,0 +1,147 @@ +Python syntax highlighting script for Vim +========================================= + +.. contents:: + +About +----- + +Enhanced version of the original Python syntax highlighting script. Based on +``python.vim`` from Vim 6.1 distribution by Neil Schemenauer (nas at python dot +ca). Check also `python.vim page on vim.org +`_. + +Please use the following channels for reporting bugs, offering suggestions or +feedback: + +- python.vim issue tracker: https://github.com/hdima/python-syntax/issues +- Email: Dmitry Vasiliev (dima at hlabs.org) +- Send a message or follow me for updates on Twitter: `@hdima + `__ + +Features +-------- + +Changes from the original ``python.vim`` are: + +- Added support for Python 3 syntax highlighting +- Added ``:Python2Syntax`` and ``:Python3Syntax`` commands which allow to + switch between Python 2 and Python 3 syntaxes respectively without + reloads/restarts +- Updated strings highlighting +- Enhanced special symbols highlighting inside strings +- Enhanced highlighting of numeric constants +- Added optional highlighting for %-formatting inside strings +- Added highlighting for magic comments: source code encoding and #! + (executable) strings +- Added highlighting for new exceptions and builtins +- Added highlighting for doctests +- Added highlighting for new ``@decorator`` syntax introduced in Python 2.4a2 +- Added highlighting for the following errors: + + - invalid symbols in source file + - mixing spaces and tabs + - invalid numeric constants + - invalid %-formatting inside strings + - invalid variable names + - trailing spaces (triggered by the ``python_highlight_space_errors`` option) + +Some of these features was later backported into the original ``python.vim``. + +How to install +-------------- + +The easiest installation method is to place `syntax/python.vim +`_ script +into your ``~/.vim/syntax/`` directory. + +You can also use `Pathogen `_ or `Vundle +`_ plugin managers in which case you can +install the whole `python.vim repository +`_ into the corresponding plugins +directory. + +Script options +-------------- + +There are two commands to enable or disable an option: + +``:let OPTION_NAME = 1`` + Enable option +``:let OPTION_NAME = 0`` + Disable option + +For example to enable all syntax highlighting features you can place the +following command in your ``~/.vimrc`` script:: + + let python_highlight_all = 1 + +Option and commands to select Python version +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +``python_version_2`` + Enable highlighting for Python 2 (Python 3 highlighting is enabled by + default). Also can be set as a local to buffer ``b:python_version_2`` + variable. + +The following local to buffer commands can be used to switch between two +highlighting modes: + +``:Python2Syntax`` + Switch to Python 2 highlighting mode +``:Python3Syntax`` + Switch to Python 3 highlighting mode + +Options used by the script +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +``python_highlight_builtins`` + Highlight builtin functions and objects +``python_highlight_builtin_objs`` + Highlight builtin objects only +``python_highlight_builtin_funcs`` + Highlight builtin functions only +``python_highlight_exceptions`` + Highlight standard exceptions +``python_highlight_string_formatting`` + Highlight ``%`` string formatting +``python_highlight_string_format`` + Highlight syntax of ``str.format`` syntax +``python_highlight_string_templates`` + Highlight syntax of ``string.Template`` +``python_highlight_indent_errors`` + Highlight indentation errors +``python_highlight_space_errors`` + Highlight trailing spaces +``python_highlight_doctests`` + Highlight doc-tests +``python_print_as_function`` + Highlight ``print`` statement as function for Python 2 +``python_highlight_file_headers_as_comments`` + Highlight shebang and coding headers as comments +``python_highlight_all`` + Enable all the options above. *NOTE: This option don't override any + previously set options* +``python_slow_sync`` + Can be set to 0 for slow machines + +Contributors +------------ + +List of the contributors in alphabetical order: + +- `Andrea Riciputi `_ +- Anton Butanaev +- `Antony Lee `_ +- Caleb Adamantine +- `David Briscoe `_ +- `Elizabeth Myers `_ +- `Ihor Gorobets `_ +- `Jeroen Ruigrok van der Werven `_ +- `John Eikenberry `_ +- `Joongi Kim `_ +- `Marc Weber `_ +- `Pedro Algarvio `_ +- `Victor Salgado `_ +- `Will Gray `_ +- `Yuri Habrusiev `_ diff --git a/dotfiles/.vim/plugged/python-syntax/TODO.txt b/dotfiles/.vim/plugged/python-syntax/TODO.txt new file mode 100644 index 00000000..605c45ad --- /dev/null +++ b/dotfiles/.vim/plugged/python-syntax/TODO.txt @@ -0,0 +1,26 @@ +Now +=== + +- It seems python.vim doesn't highlight special characters inside strings by + default but only when reloaded? Or maybe only when set to Python 2 + by default? + +- Add support for slice syntax: + http://img155.imageshack.us/img155/7767/screenshotgs.png + +- When we check spelling we don't need to check the whole strings only the + content. For example we don't need to check 'u' for spelling in strings + like this: u"Some text"; + +Later +===== + +- Need more accurate way to handle indentation errors. For example + mixing spaces and tabs may be used for pretty formatting; + +- Need more checks for errors like: absent brackets, absent quotes, + back slash at the end of strings; + +- pythonError tips from + http://blog.sontek.net/2008/05/11/python-with-a-modular-ide-vim/ (reported by + Giuliani Deon Sanches) diff --git a/dotfiles/.vim/plugged/python-syntax/folding-ideas/python.vim.1.13 b/dotfiles/.vim/plugged/python-syntax/folding-ideas/python.vim.1.13 new file mode 100644 index 00000000..e5ea6685 --- /dev/null +++ b/dotfiles/.vim/plugged/python-syntax/folding-ideas/python.vim.1.13 @@ -0,0 +1,237 @@ +" Vim syntax file +" Language: Python +" Maintainer: Neil Schemenauer +" Updated: $Date: 2003/01/12 14:17:34 $ +" Updated by: Dmitry Vasiliev +" Filenames: *.py +" $Revision: 1.13 $ +" +" Options: +" For folded functions and classes: +" +" let python_folding = 1 +" +" For highlighted builtin functions: +" +" let python_highlight_builtins = 1 +" +" For highlighted standard exceptions: +" +" let python_highlight_exceptions = 1 +" +" For highlighted string formatting: +" +" let python_highlight_string_formatting = 1 +" +" If you want all possible Python highlighting: +" +" let python_highlight_all = 1 +" +" TODO: Check more errors? + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +if exists("python_highlight_all") + let python_folding = 1 + let python_highlight_builtins = 1 + let python_highlight_exceptions = 1 + let python_highlight_string_formatting = 1 +endif + +" Keywords +syn keyword pythonStatement break continue del +syn keyword pythonStatement exec return +syn keyword pythonStatement pass print raise +syn keyword pythonStatement global assert +syn keyword pythonStatement lambda yield +if exists("python_folding") && has("folding") + syn match pythonStatement "\<\(def\|class\)\>" display nextgroup=pythonFunction skipwhite +else + syn keyword pythonStatement def class nextgroup=pythonFunction skipwhite +endif +syn match pythonFunction "\h\w*" display contained +syn keyword pythonRepeat for while +syn keyword pythonConditional if elif else +syn keyword pythonImport import from as +syn keyword pythonException try except finally +syn keyword pythonOperator and in is not or + +" Comments +syn match pythonComment "#.*$" display contains=pythonTodo +syn keyword pythonTodo TODO FIXME XXX contained + +" Erroneous characters that cannont be in a python program +syn match pythonError "[@$?]" display +" Mixing spaces and tabs is bad +syn match pythonIndentError "^\s*\(\t \| \t\)\s*" display + +" Strings +syn region pythonString start=+'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ contains=pythonEscape,pythonEscapeError +syn region pythonString start=+"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ contains=pythonEscape,pythonEscapeError +syn region pythonString start=+"""+ end=+"""+ contains=pythonEscape,pythonEscapeError +syn region pythonString start=+'''+ end=+'''+ contains=pythonEscape,pythonEscapeError + +syn match pythonEscape +\\[abfnrtv'"\\]+ display contained +syn match pythonEscapeError +\\[^abfnrtv'"\\]+ display contained +syn match pythonEscape "\\\o\o\=\o\=" display contained +syn match pythonEscapeError "\\\o\{,2}[89]" display contained +syn match pythonEscape "\\x\x\{2}" display contained +syn match pythonEscapeError "\\x\x\=\X" display contained +syn match pythonEscape "\\$" + +" Unicode strings +syn region pythonUniString start=+[uU]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ contains=pythonEscape,pythonUniEscape,pythonEscapeError,pythonUniEscapeError +syn region pythonUniString start=+[uU]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ contains=pythonEscape,pythonUniEscape,pythonEscapeError,pythonUniEscapeError +syn region pythonUniString start=+[uU]"""+ end=+"""+ contains=pythonEscape,pythonUniEscape,pythonEscapeError,pythonUniEscapeError +syn region pythonUniString start=+[uU]'''+ end=+'''+ contains=pythonEscape,pythonUniEscape,pythonEscapeError,pythonUniEscapeError + +syn match pythonUniEscape "\\u\x\{4}" display contained +syn match pythonUniEscapeError "\\u\x\{,3}\X" display contained +syn match pythonUniEscape "\\U\x\{8}" display contained +syn match pythonUniEscapeError "\\U\x\{,7}\X" display contained +syn match pythonUniEscape "\\N{[A-Z ]\+}" display contained +syn match pythonUniEscapeError "\\N{[^A-Z ]\+}" display contained + +" Raw strings +syn region pythonRawString start=+[rR]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ contains=pythonRawEscape +syn region pythonRawString start=+[rR]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ contains=pythonRawEscape +syn region pythonRawString start=+[rR]"""+ end=+"""+ +syn region pythonRawString start=+[rR]'''+ end=+'''+ + +syn match pythonRawEscape +\\['"]+ display transparent contained + +" Unicode raw strings +syn region pythonUniRawString start=+[uU][rR]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ contains=pythonRawEscape,pythonUniRawEscape,pythonUniRawEscapeError +syn region pythonUniRawString start=+[uU][rR]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ contains=pythonRawEscape,pythonUniRawEscape,pythonUniRawEscapeError +syn region pythonUniRawString start=+[uU][rR]"""+ end=+"""+ contains=pythonUniRawEscape,pythonUniRawEscapeError +syn region pythonUniRawString start=+[uU][rR]'''+ end=+'''+ contains=pythonUniRawEscape,pythonUniRawEscapeError + +syn match pythonUniRawEscape "\([^\\]\(\\\\\)*\)\@<=\\u\x\{4}" display contained +syn match pythonUniRawEscapeError "\([^\\]\(\\\\\)*\)\@<=\\u\x\{,3}\X" display contained + +if exists("python_highlight_string_formatting") + " String formatting + syn match pythonStrFormat "%\(([^)]\+)\)\=[-#0 +]\=\d*\(\.\d\+\)\=[hlL]\=[diouxXeEfFgGcrs%]" contained containedin=pythonString,pythonUniString,pythonRawString + syn match pythonStrFormat "%[-#0 +]\=\(\*\|\d\+\)\=\(\.\(\*\|\d\+\)\)\=[hlL]\=[diouxXeEfFgGcrs%]" contained containedin=pythonString,pythonUniString,pythonRawString +endif + +" Numbers (ints, longs, floats, complex) +syn match pythonNumber "\<0[xX]\x\+[lL]\=\>" display +syn match pythonNumber "\<\d\+[lLjJ]\=\>" display +syn match pythonFloat "\.\d\+\([eE][+-]\=\d\+\)\=[jJ]\=\>" display +syn match pythonFloat "\<\d\+[eE][+-]\=\d\+[jJ]\=\>" display +syn match pythonFloat "\<\d\+\.\d*\([eE][+-]\=\d\+\)\=[jJ]\=" display +syn match pythonOctalError "\<0\o*[89]\d*[lLjJ]\=\>" display + +if exists("python_highlight_builtins") + " Builtin functions, types and objects, not really part of the syntax + syn keyword pythonBuiltinObj True False Ellipsis None NotImplemented + syn keyword pythonBuiltinFunc bool __import__ abs + syn keyword pythonBuiltinFunc apply buffer callable chr classmethod cmp + syn keyword pythonBuiltinFunc coerce compile complex delattr dict dir divmod + syn keyword pythonBuiltinFunc eval execfile file filter float getattr globals + syn keyword pythonBuiltinFunc hasattr hash hex id input int intern isinstance + syn keyword pythonBuiltinFunc issubclass iter len list locals long map max + syn keyword pythonBuiltinFunc min object oct open ord pow property range + syn keyword pythonBuiltinFunc raw_input reduce reload repr round setattr + syn keyword pythonBuiltinFunc slice staticmethod str super tuple type unichr + syn keyword pythonBuiltinFunc unicode vars xrange zip +endif + +if exists("python_highlight_exceptions") + " Builtin exceptions and warnings + syn keyword pythonExClass ArithmeticError AssertionError AttributeError + syn keyword pythonExClass DeprecationWarning EOFError EnvironmentError + syn keyword pythonExClass Exception FloatingPointError IOError + syn keyword pythonExClass ImportError IndentiationError IndexError + syn keyword pythonExClass KeyError KeyboardInterrupt LookupError + syn keyword pythonExClass MemoryError NameError NotImplementedError + syn keyword pythonExClass OSError OverflowError OverflowWarning + syn keyword pythonExClass ReferenceError RuntimeError RuntimeWarning + syn keyword pythonExClass StandardError StopIteration SyntaxError + syn keyword pythonExClass SyntaxWarning SystemError SystemExit TabError + syn keyword pythonExClass TypeError UnboundLocalError UnicodeError + syn keyword pythonExClass UserWarning ValueError Warning WindowsError + syn keyword pythonExClass ZeroDivisionError +endif + +syn sync clear +if exists("python_folding") && has("folding") + syn sync fromstart + + "syn match pythonFold "^\(\s*\)\(class\|def\)\s.*\(\(\n\s*\)*\n\1\s\+\S.*\)\+" transparent fold + syn region pythonFold start="^\z(\s*\)\(class\|def\)\s" skip="^\z1\s\+\S" end="^\s*\S"me=s-1 transparent fold + syn region pythonFold start="{" end="}" transparent fold + syn region pythonFold start="\[" end="\]" transparent fold +else + " This is fast but code inside triple quoted strings screws it up. It + " is impossible to fix because the only way to know if you are inside a + " triple quoted string is to start from the beginning of the file. If + " you have a fast machine you can try uncommenting the "sync minlines" + " and commenting out the rest. + syn sync match pythonSync grouphere NONE "):$" + syn sync maxlines=200 + "syn sync minlines=2000 +endif + +if version >= 508 || !exists("did_python_syn_inits") + if version <= 508 + let did_python_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink pythonStatement Statement + HiLink pythonImport Statement + HiLink pythonFunction Function + HiLink pythonConditional Conditional + HiLink pythonRepeat Repeat + HiLink pythonException Exception + HiLink pythonOperator Operator + + HiLink pythonComment Comment + HiLink pythonTodo Todo + + HiLink pythonError Error + HiLink pythonIndentError Error + + HiLink pythonString String + HiLink pythonUniString String + HiLink pythonRawString String + HiLink pythonUniRawString String + + HiLink pythonEscape Special + HiLink pythonEscapeError Error + HiLink pythonUniEscape Special + HiLink pythonUniEscapeError Error + HiLink pythonUniRawEscape Special + HiLink pythonUniRawEscapeError Error + + if exists("python_highlight_string_formatting") + HiLink pythonStrFormat Special + endif + + HiLink pythonNumber Number + HiLink pythonFloat Float + HiLink pythonOctalError Error + + if exists("python_highlight_builtins") + HiLink pythonBuiltinObj Structure + HiLink pythonBuiltinFunc Function + endif + + if exists("python_highlight_exceptions") + HiLink pythonExClass Structure + endif + + delcommand HiLink +endif + +let b:current_syntax = "python" diff --git a/dotfiles/.vim/plugged/python-syntax/folding-ideas/python.vim.1.14 b/dotfiles/.vim/plugged/python-syntax/folding-ideas/python.vim.1.14 new file mode 100644 index 00000000..90278389 --- /dev/null +++ b/dotfiles/.vim/plugged/python-syntax/folding-ideas/python.vim.1.14 @@ -0,0 +1,236 @@ +" Vim syntax file +" Language: Python +" Maintainer: Neil Schemenauer +" Updated: $Date: 2003/01/12 15:35:02 $ +" Updated by: Dmitry Vasiliev +" Filenames: *.py +" $Revision: 1.14 $ +" +" Options: +" For folded functions and classes: +" +" let python_folding = 1 +" +" For highlighted builtin functions: +" +" let python_highlight_builtins = 1 +" +" For highlighted standard exceptions: +" +" let python_highlight_exceptions = 1 +" +" For highlighted string formatting: +" +" let python_highlight_string_formatting = 1 +" +" If you want all possible Python highlighting: +" +" let python_highlight_all = 1 +" +" TODO: Check more errors? + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +if exists("python_highlight_all") + let python_folding = 1 + let python_highlight_builtins = 1 + let python_highlight_exceptions = 1 + let python_highlight_string_formatting = 1 +endif + +" Keywords +syn keyword pythonStatement break continue del +syn keyword pythonStatement exec return +syn keyword pythonStatement pass print raise +syn keyword pythonStatement global assert +syn keyword pythonStatement lambda yield +if exists("python_folding") && has("folding") + syn match pythonStatement "\<\(def\|class\)\>" display nextgroup=pythonFunction skipwhite +else + syn keyword pythonStatement def class nextgroup=pythonFunction skipwhite +endif +syn match pythonFunction "\h\w*" display contained +syn keyword pythonRepeat for while +syn keyword pythonConditional if elif else +syn keyword pythonImport import from as +syn keyword pythonException try except finally +syn keyword pythonOperator and in is not or + +" Comments +syn match pythonComment "#.*$" display contains=pythonTodo +syn keyword pythonTodo TODO FIXME XXX contained + +" Erroneous characters that cannont be in a python program +syn match pythonError "[@$?]" display +" Mixing spaces and tabs is bad +syn match pythonError "^\s*\(\t \| \t\)\s*" display + +" Strings +syn region pythonString start=+'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ contains=pythonEscape,pythonEscapeError +syn region pythonString start=+"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ contains=pythonEscape,pythonEscapeError +syn region pythonString start=+"""+ end=+"""+ contains=pythonEscape,pythonEscapeError +syn region pythonString start=+'''+ end=+'''+ contains=pythonEscape,pythonEscapeError + +syn match pythonEscape +\\[abfnrtv'"\\]+ display contained +syn match pythonEscapeError +\\[^abfnrtv'"\\]+ display contained +syn match pythonEscape "\\\o\o\=\o\=" display contained +syn match pythonEscapeError "\\\o\{,2}[89]" display contained +syn match pythonEscape "\\x\x\{2}" display contained +syn match pythonEscapeError "\\x\x\=\X" display contained +syn match pythonEscape "\\$" + +" Unicode strings +syn region pythonUniString start=+[uU]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ contains=pythonEscape,pythonUniEscape,pythonEscapeError,pythonUniEscapeError +syn region pythonUniString start=+[uU]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ contains=pythonEscape,pythonUniEscape,pythonEscapeError,pythonUniEscapeError +syn region pythonUniString start=+[uU]"""+ end=+"""+ contains=pythonEscape,pythonUniEscape,pythonEscapeError,pythonUniEscapeError +syn region pythonUniString start=+[uU]'''+ end=+'''+ contains=pythonEscape,pythonUniEscape,pythonEscapeError,pythonUniEscapeError + +syn match pythonUniEscape "\\u\x\{4}" display contained +syn match pythonUniEscapeError "\\u\x\{,3}\X" display contained +syn match pythonUniEscape "\\U\x\{8}" display contained +syn match pythonUniEscapeError "\\U\x\{,7}\X" display contained +syn match pythonUniEscape "\\N{[A-Z ]\+}" display contained +syn match pythonUniEscapeError "\\N{[^A-Z ]\+}" display contained + +" Raw strings +syn region pythonRawString start=+[rR]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ contains=pythonRawEscape +syn region pythonRawString start=+[rR]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ contains=pythonRawEscape +syn region pythonRawString start=+[rR]"""+ end=+"""+ +syn region pythonRawString start=+[rR]'''+ end=+'''+ + +syn match pythonRawEscape +\\['"]+ display transparent contained + +" Unicode raw strings +syn region pythonUniRawString start=+[uU][rR]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ contains=pythonRawEscape,pythonUniRawEscape,pythonUniRawEscapeError +syn region pythonUniRawString start=+[uU][rR]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ contains=pythonRawEscape,pythonUniRawEscape,pythonUniRawEscapeError +syn region pythonUniRawString start=+[uU][rR]"""+ end=+"""+ contains=pythonUniRawEscape,pythonUniRawEscapeError +syn region pythonUniRawString start=+[uU][rR]'''+ end=+'''+ contains=pythonUniRawEscape,pythonUniRawEscapeError + +syn match pythonUniRawEscape "\([^\\]\(\\\\\)*\)\@<=\\u\x\{4}" display contained +syn match pythonUniRawEscapeError "\([^\\]\(\\\\\)*\)\@<=\\u\x\{,3}\X" display contained + +if exists("python_highlight_string_formatting") + " String formatting + syn match pythonStrFormat "%\(([^)]\+)\)\=[-#0 +]\=\d*\(\.\d\+\)\=[hlL]\=[diouxXeEfFgGcrs%]" contained containedin=pythonString,pythonUniString,pythonRawString + syn match pythonStrFormat "%[-#0 +]\=\(\*\|\d\+\)\=\(\.\(\*\|\d\+\)\)\=[hlL]\=[diouxXeEfFgGcrs%]" contained containedin=pythonString,pythonUniString,pythonRawString +endif + +" Numbers (ints, longs, floats, complex) +syn match pythonNumber "\<0[xX]\x\+[lL]\=\>" display +syn match pythonNumber "\<\d\+[lLjJ]\=\>" display +syn match pythonFloat "\.\d\+\([eE][+-]\=\d\+\)\=[jJ]\=\>" display +syn match pythonFloat "\<\d\+[eE][+-]\=\d\+[jJ]\=\>" display +syn match pythonFloat "\<\d\+\.\d*\([eE][+-]\=\d\+\)\=[jJ]\=" display +syn match pythonOctalError "\<0\o*[89]\d*[lLjJ]\=\>" display + +if exists("python_highlight_builtins") + " Builtin functions, types and objects, not really part of the syntax + syn keyword pythonBuiltinObj True False Ellipsis None NotImplemented + syn keyword pythonBuiltinFunc bool __import__ abs + syn keyword pythonBuiltinFunc apply buffer callable chr classmethod cmp + syn keyword pythonBuiltinFunc coerce compile complex delattr dict dir divmod + syn keyword pythonBuiltinFunc eval execfile file filter float getattr globals + syn keyword pythonBuiltinFunc hasattr hash hex id input int intern isinstance + syn keyword pythonBuiltinFunc issubclass iter len list locals long map max + syn keyword pythonBuiltinFunc min object oct open ord pow property range + syn keyword pythonBuiltinFunc raw_input reduce reload repr round setattr + syn keyword pythonBuiltinFunc slice staticmethod str super tuple type unichr + syn keyword pythonBuiltinFunc unicode vars xrange zip +endif + +if exists("python_highlight_exceptions") + " Builtin exceptions and warnings + syn keyword pythonExClass ArithmeticError AssertionError AttributeError + syn keyword pythonExClass DeprecationWarning EOFError EnvironmentError + syn keyword pythonExClass Exception FloatingPointError IOError + syn keyword pythonExClass ImportError IndentiationError IndexError + syn keyword pythonExClass KeyError KeyboardInterrupt LookupError + syn keyword pythonExClass MemoryError NameError NotImplementedError + syn keyword pythonExClass OSError OverflowError OverflowWarning + syn keyword pythonExClass ReferenceError RuntimeError RuntimeWarning + syn keyword pythonExClass StandardError StopIteration SyntaxError + syn keyword pythonExClass SyntaxWarning SystemError SystemExit TabError + syn keyword pythonExClass TypeError UnboundLocalError UnicodeError + syn keyword pythonExClass UserWarning ValueError Warning WindowsError + syn keyword pythonExClass ZeroDivisionError +endif + +syn sync clear +if exists("python_folding") && has("folding") + syn sync fromstart + + "syn match pythonFold "^\(\s*\)\(class\|def\)\s.*\(\(\n\s*\)*\n\1\s\+\S.*\)\+" transparent fold + syn region pythonFold start="^\z(\s*\)\(class\|def\)\s" skip="\(\s*\n\)\+\z1\s\+\(\S\|\%$\)" end="\(\s*\n\)\+\s*\(\S\|\%$\)"me=s-1 transparent fold + syn region pythonFold start="{" end="}" transparent fold + syn region pythonFold start="\[" end="\]" transparent fold +else + " This is fast but code inside triple quoted strings screws it up. It + " is impossible to fix because the only way to know if you are inside a + " triple quoted string is to start from the beginning of the file. If + " you have a fast machine you can try uncommenting the "sync minlines" + " and commenting out the rest. + syn sync match pythonSync grouphere NONE "):$" + syn sync maxlines=200 + "syn sync minlines=2000 +endif + +if version >= 508 || !exists("did_python_syn_inits") + if version <= 508 + let did_python_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink pythonStatement Statement + HiLink pythonImport Statement + HiLink pythonFunction Function + HiLink pythonConditional Conditional + HiLink pythonRepeat Repeat + HiLink pythonException Exception + HiLink pythonOperator Operator + + HiLink pythonComment Comment + HiLink pythonTodo Todo + + HiLink pythonError Error + + HiLink pythonString String + HiLink pythonUniString String + HiLink pythonRawString String + HiLink pythonUniRawString String + + HiLink pythonEscape Special + HiLink pythonEscapeError Error + HiLink pythonUniEscape Special + HiLink pythonUniEscapeError Error + HiLink pythonUniRawEscape Special + HiLink pythonUniRawEscapeError Error + + if exists("python_highlight_string_formatting") + HiLink pythonStrFormat Special + endif + + HiLink pythonNumber Number + HiLink pythonFloat Float + HiLink pythonOctalError Error + + if exists("python_highlight_builtins") + HiLink pythonBuiltinObj Structure + HiLink pythonBuiltinFunc Function + endif + + if exists("python_highlight_exceptions") + HiLink pythonExClass Structure + endif + + delcommand HiLink +endif + +let b:current_syntax = "python" diff --git a/dotfiles/.vim/plugged/python-syntax/syntax.txt b/dotfiles/.vim/plugged/python-syntax/syntax.txt new file mode 100644 index 00000000..294b11aa --- /dev/null +++ b/dotfiles/.vim/plugged/python-syntax/syntax.txt @@ -0,0 +1,65 @@ +PYTHON *python.vim* *ft-python-syntax* + +There are two commands to enable or disable an option for python.vim + + Enable option: > + :let option_name = 1 +< + Disable option: > + :let option_name = 0 +< +For example to enable all syntax highlighting features you can place the +following command in your `~/.vimrc` script: > + + let python_highlight_all = 1 +< +Option and commands to select Python version: > + + :let python_version_2 = 1 +< + Enable highlighting for Python 2 (Python 3 highlighting is enabled by + default). Also can be set as a local to buffer `b:python_version_2` + variable. + +The following local to buffer commands can be used to switch between two +highlighting modes: + + Switch to Python 2 highlighting mode > + :Python2Syntax +< + Switch to Python 3 highlighting mode > + :Python3Syntax +< +Options used by the script + + Highlight builtin functions and objects > + :let python_highlight_builtins = 1 +< Highlight builtin objects only > + :let python_highlight_builtin_objs = 1 +< Highlight builtin functions only > + :let python_highlight_builtin_funcs = 1 +< Highlight standard exceptions > + :let python_highlight_exceptions = 1 +< Highlight `%` string formatting > + :let python_highlight_string_formatting = 1 +< Highlight syntax of `str.format` syntax > + :let python_highlight_string_format = 1 +< Highlight syntax of `string.Template` > + :let python_highlight_string_templates = 1 +< Highlight indentation errors > + :let python_highlight_indent_errors = 1 +< Highlight trailing spaces > + :let python_highlight_space_errors = 1 +< Highlight doc-tests > + :let python_highlight_doctests = 1 +< Highlight `print` statement as function for Python 2 > + :let python_print_as_function = 1 +< Highlight shebang and coding headers as comments > + :let python_highlight_file_headers_as_comments = 1 +< Enable all the options above. NOTE: This option don't override any + previously set options > + :let python_highlight_all = 1 +< Can be set to 0 for slow machines > + :let python_slow_sync = 1 +< + vim:tw=78:sw=4:ts=8:ft=help:norl: diff --git a/dotfiles/.vim/plugged/python-syntax/syntax/python.vim b/dotfiles/.vim/plugged/python-syntax/syntax/python.vim new file mode 100644 index 00000000..e9636282 --- /dev/null +++ b/dotfiles/.vim/plugged/python-syntax/syntax/python.vim @@ -0,0 +1,568 @@ +" Vim syntax file +" Language: Python +" Current Maintainer: Dmitry Vasiliev +" Previous Maintainer: Neil Schemenauer +" URL: https://github.com/hdima/python-syntax +" Last Change: 2015-11-01 +" Filenames: *.py +" Version: 3.6.0 +" +" Based on python.vim (from Vim 6.1 distribution) +" by Neil Schemenauer +" +" Please use the following channels for reporting bugs, offering suggestions or +" feedback: + +" - python.vim issue tracker: https://github.com/hdima/python-syntax/issues +" - Email: Dmitry Vasiliev (dima at hlabs.org) +" - Send a message or follow me for updates on Twitter: `@hdima +" `__ +" +" Contributors +" ============ +" +" List of the contributors in alphabetical order: +" +" Andrea Riciputi +" Anton Butanaev +" Antony Lee +" Caleb Adamantine +" David Briscoe +" Elizabeth Myers +" Ihor Gorobets +" Jeroen Ruigrok van der Werven +" John Eikenberry +" Joongi Kim +" Marc Weber +" Pedro Algarvio +" Victor Salgado +" Will Gray +" Yuri Habrusiev +" +" Options +" ======= +" +" :let OPTION_NAME = 1 Enable option +" :let OPTION_NAME = 0 Disable option +" +" +" Option to select Python version +" ------------------------------- +" +" python_version_2 Enable highlighting for Python 2 +" (Python 3 highlighting is enabled +" by default). Can also be set as +" a buffer (b:python_version_2) +" variable. +" +" You can also use the following local to buffer commands to switch +" between two highlighting modes: +" +" :Python2Syntax Switch to Python 2 highlighting +" mode +" :Python3Syntax Switch to Python 3 highlighting +" mode +" +" Option names used by the script +" ------------------------------- +" +" python_highlight_builtins Highlight builtin functions and +" objects +" python_highlight_builtin_objs Highlight builtin objects only +" python_highlight_builtin_funcs Highlight builtin functions only +" python_highlight_exceptions Highlight standard exceptions +" python_highlight_string_formatting Highlight % string formatting +" python_highlight_string_format Highlight str.format syntax +" python_highlight_string_templates Highlight string.Template syntax +" python_highlight_indent_errors Highlight indentation errors +" python_highlight_space_errors Highlight trailing spaces +" python_highlight_doctests Highlight doc-tests +" python_print_as_function Highlight 'print' statement as +" function for Python 2 +" python_highlight_file_headers_as_comments +" Highlight shebang and coding +" headers as comments +" +" python_highlight_all Enable all the options above +" NOTE: This option don't override +" any previously set options +" +" python_slow_sync Can be set to 0 for slow machines +" + +" For version 5.x: Clear all syntax items +" For versions greater than 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +" +" Commands +" +command! -buffer Python2Syntax let b:python_version_2 = 1 | let &syntax=&syntax +command! -buffer Python3Syntax let b:python_version_2 = 0 | let &syntax=&syntax + +" Enable option if it's not defined +function! s:EnableByDefault(name) + if !exists(a:name) + let {a:name} = 1 + endif +endfunction + +" Check if option is enabled +function! s:Enabled(name) + return exists(a:name) && {a:name} +endfunction + +" Is it Python 2 syntax? +function! s:Python2Syntax() + if exists("b:python_version_2") + return b:python_version_2 + endif + return s:Enabled("g:python_version_2") +endfunction + +" +" Default options +" + +call s:EnableByDefault("g:python_slow_sync") + +if s:Enabled("g:python_highlight_all") + call s:EnableByDefault("g:python_highlight_builtins") + if s:Enabled("g:python_highlight_builtins") + call s:EnableByDefault("g:python_highlight_builtin_objs") + call s:EnableByDefault("g:python_highlight_builtin_funcs") + endif + call s:EnableByDefault("g:python_highlight_exceptions") + call s:EnableByDefault("g:python_highlight_string_formatting") + call s:EnableByDefault("g:python_highlight_string_format") + call s:EnableByDefault("g:python_highlight_string_templates") + call s:EnableByDefault("g:python_highlight_indent_errors") + call s:EnableByDefault("g:python_highlight_space_errors") + call s:EnableByDefault("g:python_highlight_doctests") + call s:EnableByDefault("g:python_print_as_function") +endif + +" +" Keywords +" + +syn keyword pythonStatement break continue del +syn keyword pythonStatement exec return +syn keyword pythonStatement pass raise +syn keyword pythonStatement global assert +syn keyword pythonStatement lambda +syn keyword pythonStatement with +syn keyword pythonStatement def class nextgroup=pythonFunction skipwhite +syn keyword pythonRepeat for while +syn keyword pythonConditional if elif else +" The standard pyrex.vim unconditionally removes the pythonInclude group, so +" we provide a dummy group here to avoid crashing pyrex.vim. +syn keyword pythonInclude import +syn keyword pythonImport import +syn keyword pythonException try except finally +syn keyword pythonOperator and in is not or + +syn match pythonStatement "\" display +syn match pythonImport "\" display + +if s:Python2Syntax() + if !s:Enabled("g:python_print_as_function") + syn keyword pythonStatement print + endif + syn keyword pythonImport as + syn match pythonFunction "[a-zA-Z_][a-zA-Z0-9_]*" display contained +else + syn keyword pythonStatement as nonlocal None + syn match pythonStatement "\" display + syn keyword pythonBoolean True False + syn match pythonFunction "\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*" display contained + syn keyword pythonStatement await + syn match pythonStatement "\" nextgroup=pythonFunction skipwhite + syn match pythonStatement "\" display + syn match pythonStatement "\" display +endif + +" +" Decorators (new in Python 2.4) +" + +syn match pythonDecorator "@" display nextgroup=pythonDottedName skipwhite +if s:Python2Syntax() + syn match pythonDottedName "[a-zA-Z_][a-zA-Z0-9_]*\%(\.[a-zA-Z_][a-zA-Z0-9_]*\)*" display contained +else + syn match pythonDottedName "\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\%(\.\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\)*" display contained +endif +syn match pythonDot "\." display containedin=pythonDottedName + +" +" Comments +" + +syn match pythonComment "#.*$" display contains=pythonTodo,@Spell +if !s:Enabled("g:python_highlight_file_headers_as_comments") + syn match pythonRun "\%^#!.*$" + syn match pythonCoding "\%^.*\%(\n.*\)\?#.*coding[:=]\s*[0-9A-Za-z-_.]\+.*$" +endif +syn keyword pythonTodo TODO FIXME XXX contained + +" +" Errors +" + +syn match pythonError "\<\d\+\D\+\>" display +syn match pythonError "[$?]" display +syn match pythonError "[&|]\{2,}" display +syn match pythonError "[=]\{3,}" display + +" Mixing spaces and tabs also may be used for pretty formatting multiline +" statements +if s:Enabled("g:python_highlight_indent_errors") + syn match pythonIndentError "^\s*\%( \t\|\t \)\s*\S"me=e-1 display +endif + +" Trailing space errors +if s:Enabled("g:python_highlight_space_errors") + syn match pythonSpaceError "\s\+$" display +endif + +" +" Strings +" + +if s:Python2Syntax() + " Python 2 strings + syn region pythonString start=+[bB]\='+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,@Spell + syn region pythonString start=+[bB]\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,@Spell + syn region pythonString start=+[bB]\="""+ end=+"""+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,pythonDocTest2,pythonSpaceError,@Spell + syn region pythonString start=+[bB]\='''+ end=+'''+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,pythonDocTest,pythonSpaceError,@Spell +else + " Python 3 byte strings + syn region pythonBytes start=+[bB]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonBytesError,pythonBytesContent,@Spell + syn region pythonBytes start=+[bB]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonBytesError,pythonBytesContent,@Spell + syn region pythonBytes start=+[bB]"""+ end=+"""+ keepend contains=pythonBytesError,pythonBytesContent,pythonDocTest2,pythonSpaceError,@Spell + syn region pythonBytes start=+[bB]'''+ end=+'''+ keepend contains=pythonBytesError,pythonBytesContent,pythonDocTest,pythonSpaceError,@Spell + + syn match pythonBytesError ".\+" display contained + syn match pythonBytesContent "[\u0000-\u00ff]\+" display contained contains=pythonBytesEscape,pythonBytesEscapeError +endif + +syn match pythonBytesEscape +\\[abfnrtv'"\\]+ display contained +syn match pythonBytesEscape "\\\o\o\=\o\=" display contained +syn match pythonBytesEscapeError "\\\o\{,2}[89]" display contained +syn match pythonBytesEscape "\\x\x\{2}" display contained +syn match pythonBytesEscapeError "\\x\x\=\X" display contained +syn match pythonBytesEscape "\\$" + +syn match pythonUniEscape "\\u\x\{4}" display contained +syn match pythonUniEscapeError "\\u\x\{,3}\X" display contained +syn match pythonUniEscape "\\U\x\{8}" display contained +syn match pythonUniEscapeError "\\U\x\{,7}\X" display contained +syn match pythonUniEscape "\\N{[A-Z ]\+}" display contained +syn match pythonUniEscapeError "\\N{[^A-Z ]\+}" display contained + +if s:Python2Syntax() + " Python 2 Unicode strings + syn region pythonUniString start=+[uU]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,@Spell + syn region pythonUniString start=+[uU]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,@Spell + syn region pythonUniString start=+[uU]"""+ end=+"""+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,pythonDocTest2,pythonSpaceError,@Spell + syn region pythonUniString start=+[uU]'''+ end=+'''+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,pythonDocTest,pythonSpaceError,@Spell +else + " Python 3 strings + syn region pythonString start=+'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,@Spell + syn region pythonString start=+"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,@Spell + syn region pythonString start=+"""+ end=+"""+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,pythonDocTest2,pythonSpaceError,@Spell + syn region pythonString start=+'''+ end=+'''+ keepend contains=pythonBytesEscape,pythonBytesEscapeError,pythonUniEscape,pythonUniEscapeError,pythonDocTest,pythonSpaceError,@Spell +endif + +if s:Python2Syntax() + " Python 2 Unicode raw strings + syn region pythonUniRawString start=+[uU][rR]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonRawEscape,pythonUniRawEscape,pythonUniRawEscapeError,@Spell + syn region pythonUniRawString start=+[uU][rR]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonRawEscape,pythonUniRawEscape,pythonUniRawEscapeError,@Spell + syn region pythonUniRawString start=+[uU][rR]"""+ end=+"""+ keepend contains=pythonUniRawEscape,pythonUniRawEscapeError,pythonDocTest2,pythonSpaceError,@Spell + syn region pythonUniRawString start=+[uU][rR]'''+ end=+'''+ keepend contains=pythonUniRawEscape,pythonUniRawEscapeError,pythonDocTest,pythonSpaceError,@Spell + + syn match pythonUniRawEscape "\([^\\]\(\\\\\)*\)\@<=\\u\x\{4}" display contained + syn match pythonUniRawEscapeError "\([^\\]\(\\\\\)*\)\@<=\\u\x\{,3}\X" display contained +endif + +" Python 2/3 raw strings +if s:Python2Syntax() + syn region pythonRawString start=+[bB]\=[rR]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonRawEscape,@Spell + syn region pythonRawString start=+[bB]\=[rR]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonRawEscape,@Spell + syn region pythonRawString start=+[bB]\=[rR]"""+ end=+"""+ keepend contains=pythonDocTest2,pythonSpaceError,@Spell + syn region pythonRawString start=+[bB]\=[rR]'''+ end=+'''+ keepend contains=pythonDocTest,pythonSpaceError,@Spell +else + syn region pythonRawString start=+[rR]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonRawEscape,@Spell + syn region pythonRawString start=+[rR]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonRawEscape,@Spell + syn region pythonRawString start=+[rR]"""+ end=+"""+ keepend contains=pythonDocTest2,pythonSpaceError,@Spell + syn region pythonRawString start=+[rR]'''+ end=+'''+ keepend contains=pythonDocTest,pythonSpaceError,@Spell + + syn region pythonRawBytes start=+[bB][rR]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonRawEscape,@Spell + syn region pythonRawBytes start=+[bB][rR]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonRawEscape,@Spell + syn region pythonRawBytes start=+[bB][rR]"""+ end=+"""+ keepend contains=pythonDocTest2,pythonSpaceError,@Spell + syn region pythonRawBytes start=+[bB][rR]'''+ end=+'''+ keepend contains=pythonDocTest,pythonSpaceError,@Spell +endif + +syn match pythonRawEscape +\\['"]+ display transparent contained + +if s:Enabled("g:python_highlight_string_formatting") + " % operator string formatting + if s:Python2Syntax() + syn match pythonStrFormatting "%\%(([^)]\+)\)\=[-#0 +]*\d*\%(\.\d\+\)\=[hlL]\=[diouxXeEfFgGcrs%]" contained containedin=pythonString,pythonUniString,pythonUniRawString,pythonRawString + syn match pythonStrFormatting "%[-#0 +]*\%(\*\|\d\+\)\=\%(\.\%(\*\|\d\+\)\)\=[hlL]\=[diouxXeEfFgGcrs%]" contained containedin=pythonString,pythonUniString,pythonUniRawString,pythonRawString + else + syn match pythonStrFormatting "%\%(([^)]\+)\)\=[-#0 +]*\d*\%(\.\d\+\)\=[hlL]\=[diouxXeEfFgGcrs%]" contained containedin=pythonString,pythonRawString + syn match pythonStrFormatting "%[-#0 +]*\%(\*\|\d\+\)\=\%(\.\%(\*\|\d\+\)\)\=[hlL]\=[diouxXeEfFgGcrs%]" contained containedin=pythonString,pythonRawString + endif +endif + +if s:Enabled("g:python_highlight_string_format") + " str.format syntax + if s:Python2Syntax() + syn match pythonStrFormat "{{\|}}" contained containedin=pythonString,pythonUniString,pythonUniRawString,pythonRawString + syn match pythonStrFormat "{\%(\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\|\d\+\)\=\%(\.\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\|\[\%(\d\+\|[^!:\}]\+\)\]\)*\%(![rsa]\)\=\%(:\%({\%(\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\|\d\+\)}\|\%([^}]\=[<>=^]\)\=[ +-]\=#\=0\=\d*,\=\%(\.\d\+\)\=[bcdeEfFgGnosxX%]\=\)\=\)\=}" contained containedin=pythonString,pythonUniString,pythonUniRawString,pythonRawString + else + syn match pythonStrFormat "{{\|}}" contained containedin=pythonString,pythonRawString + syn match pythonStrFormat "{\%(\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\|\d\+\)\=\%(\.\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\|\[\%(\d\+\|[^!:\}]\+\)\]\)*\%(![rsa]\)\=\%(:\%({\%(\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*\|\d\+\)}\|\%([^}]\=[<>=^]\)\=[ +-]\=#\=0\=\d*,\=\%(\.\d\+\)\=[bcdeEfFgGnosxX%]\=\)\=\)\=}" contained containedin=pythonString,pythonRawString + endif +endif + +if s:Enabled("g:python_highlight_string_templates") + " string.Template format + if s:Python2Syntax() + syn match pythonStrTemplate "\$\$" contained containedin=pythonString,pythonUniString,pythonUniRawString,pythonRawString + syn match pythonStrTemplate "\${[a-zA-Z_][a-zA-Z0-9_]*}" contained containedin=pythonString,pythonUniString,pythonUniRawString,pythonRawString + syn match pythonStrTemplate "\$[a-zA-Z_][a-zA-Z0-9_]*" contained containedin=pythonString,pythonUniString,pythonUniRawString,pythonRawString + else + syn match pythonStrTemplate "\$\$" contained containedin=pythonString,pythonRawString + syn match pythonStrTemplate "\${[a-zA-Z_][a-zA-Z0-9_]*}" contained containedin=pythonString,pythonRawString + syn match pythonStrTemplate "\$[a-zA-Z_][a-zA-Z0-9_]*" contained containedin=pythonString,pythonRawString + endif +endif + +if s:Enabled("g:python_highlight_doctests") + " DocTests + syn region pythonDocTest start="^\s*>>>" end=+'''+he=s-1 end="^\s*$" contained + syn region pythonDocTest2 start="^\s*>>>" end=+"""+he=s-1 end="^\s*$" contained +endif + +" +" Numbers (ints, longs, floats, complex) +" + +if s:Python2Syntax() + syn match pythonHexError "\<0[xX]\x*[g-zG-Z]\+\x*[lL]\=\>" display + syn match pythonOctError "\<0[oO]\=\o*\D\+\d*[lL]\=\>" display + syn match pythonBinError "\<0[bB][01]*\D\+\d*[lL]\=\>" display + + syn match pythonHexNumber "\<0[xX]\x\+[lL]\=\>" display + syn match pythonOctNumber "\<0[oO]\o\+[lL]\=\>" display + syn match pythonBinNumber "\<0[bB][01]\+[lL]\=\>" display + + syn match pythonNumberError "\<\d\+\D[lL]\=\>" display + syn match pythonNumber "\<\d[lL]\=\>" display + syn match pythonNumber "\<[0-9]\d\+[lL]\=\>" display + syn match pythonNumber "\<\d\+[lLjJ]\>" display + + syn match pythonOctError "\<0[oO]\=\o*[8-9]\d*[lL]\=\>" display + syn match pythonBinError "\<0[bB][01]*[2-9]\d*[lL]\=\>" display +else + syn match pythonHexError "\<0[xX]\x*[g-zG-Z]\x*\>" display + syn match pythonOctError "\<0[oO]\=\o*\D\+\d*\>" display + syn match pythonBinError "\<0[bB][01]*\D\+\d*\>" display + + syn match pythonHexNumber "\<0[xX]\x\+\>" display + syn match pythonOctNumber "\<0[oO]\o\+\>" display + syn match pythonBinNumber "\<0[bB][01]\+\>" display + + syn match pythonNumberError "\<\d\+\D\>" display + syn match pythonNumberError "\<0\d\+\>" display + syn match pythonNumber "\<\d\>" display + syn match pythonNumber "\<[1-9]\d\+\>" display + syn match pythonNumber "\<\d\+[jJ]\>" display + + syn match pythonOctError "\<0[oO]\=\o*[8-9]\d*\>" display + syn match pythonBinError "\<0[bB][01]*[2-9]\d*\>" display +endif + +syn match pythonFloat "\.\d\+\%([eE][+-]\=\d\+\)\=[jJ]\=\>" display +syn match pythonFloat "\<\d\+[eE][+-]\=\d\+[jJ]\=\>" display +syn match pythonFloat "\<\d\+\.\d*\%([eE][+-]\=\d\+\)\=[jJ]\=" display + +" +" Builtin objects and types +" + +if s:Enabled("g:python_highlight_builtin_objs") + if s:Python2Syntax() + syn keyword pythonBuiltinObj None + syn keyword pythonBoolean True False + endif + syn keyword pythonBuiltinObj Ellipsis NotImplemented + syn keyword pythonBuiltinObj __debug__ __doc__ __file__ __name__ __package__ +endif + +" +" Builtin functions +" + +if s:Enabled("g:python_highlight_builtin_funcs") + if s:Python2Syntax() + syn keyword pythonBuiltinFunc apply basestring buffer callable coerce + syn keyword pythonBuiltinFunc execfile file help intern long raw_input + syn keyword pythonBuiltinFunc reduce reload unichr unicode xrange + if s:Enabled("g:python_print_as_function") + syn keyword pythonBuiltinFunc print + endif + else + syn keyword pythonBuiltinFunc ascii exec memoryview print + endif + syn keyword pythonBuiltinFunc __import__ abs all any + syn keyword pythonBuiltinFunc bin bool bytearray bytes + syn keyword pythonBuiltinFunc chr classmethod cmp compile complex + syn keyword pythonBuiltinFunc delattr dict dir divmod enumerate eval + syn keyword pythonBuiltinFunc filter float format frozenset getattr + syn keyword pythonBuiltinFunc globals hasattr hash hex id + syn keyword pythonBuiltinFunc input int isinstance + syn keyword pythonBuiltinFunc issubclass iter len list locals map max + syn keyword pythonBuiltinFunc min next object oct open ord + syn keyword pythonBuiltinFunc pow property range + syn keyword pythonBuiltinFunc repr reversed round set setattr + syn keyword pythonBuiltinFunc slice sorted staticmethod str sum super tuple + syn keyword pythonBuiltinFunc type vars zip +endif + +" +" Builtin exceptions and warnings +" + +if s:Enabled("g:python_highlight_exceptions") + if s:Python2Syntax() + syn keyword pythonExClass StandardError + else + syn keyword pythonExClass BlockingIOError ChildProcessError + syn keyword pythonExClass ConnectionError BrokenPipeError + syn keyword pythonExClass ConnectionAbortedError ConnectionRefusedError + syn keyword pythonExClass ConnectionResetError FileExistsError + syn keyword pythonExClass FileNotFoundError InterruptedError + syn keyword pythonExClass IsADirectoryError NotADirectoryError + syn keyword pythonExClass PermissionError ProcessLookupError TimeoutError + + syn keyword pythonExClass ResourceWarning + endif + syn keyword pythonExClass BaseException + syn keyword pythonExClass Exception ArithmeticError + syn keyword pythonExClass LookupError EnvironmentError + + syn keyword pythonExClass AssertionError AttributeError BufferError EOFError + syn keyword pythonExClass FloatingPointError GeneratorExit IOError + syn keyword pythonExClass ImportError IndexError KeyError + syn keyword pythonExClass KeyboardInterrupt MemoryError NameError + syn keyword pythonExClass NotImplementedError OSError OverflowError + syn keyword pythonExClass ReferenceError RuntimeError StopIteration + syn keyword pythonExClass SyntaxError IndentationError TabError + syn keyword pythonExClass SystemError SystemExit TypeError + syn keyword pythonExClass UnboundLocalError UnicodeError + syn keyword pythonExClass UnicodeEncodeError UnicodeDecodeError + syn keyword pythonExClass UnicodeTranslateError ValueError VMSError + syn keyword pythonExClass WindowsError ZeroDivisionError + + syn keyword pythonExClass Warning UserWarning BytesWarning DeprecationWarning + syn keyword pythonExClass PendingDepricationWarning SyntaxWarning + syn keyword pythonExClass RuntimeWarning FutureWarning + syn keyword pythonExClass ImportWarning UnicodeWarning +endif + +if s:Enabled("g:python_slow_sync") + syn sync minlines=2000 +else + " This is fast but code inside triple quoted strings screws it up. It + " is impossible to fix because the only way to know if you are inside a + " triple quoted string is to start from the beginning of the file. + syn sync match pythonSync grouphere NONE "):$" + syn sync maxlines=200 +endif + +if version >= 508 || !exists("did_python_syn_inits") + if version <= 508 + let did_python_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink pythonStatement Statement + HiLink pythonImport Include + HiLink pythonFunction Function + HiLink pythonConditional Conditional + HiLink pythonRepeat Repeat + HiLink pythonException Exception + HiLink pythonOperator Operator + + HiLink pythonDecorator Define + HiLink pythonDottedName Function + HiLink pythonDot Normal + + HiLink pythonComment Comment + if !s:Enabled("g:python_highlight_file_headers_as_comments") + HiLink pythonCoding Special + HiLink pythonRun Special + endif + HiLink pythonTodo Todo + + HiLink pythonError Error + HiLink pythonIndentError Error + HiLink pythonSpaceError Error + + HiLink pythonString String + HiLink pythonRawString String + + HiLink pythonUniEscape Special + HiLink pythonUniEscapeError Error + + if s:Python2Syntax() + HiLink pythonUniString String + HiLink pythonUniRawString String + HiLink pythonUniRawEscape Special + HiLink pythonUniRawEscapeError Error + else + HiLink pythonBytes String + HiLink pythonRawBytes String + HiLink pythonBytesContent String + HiLink pythonBytesError Error + HiLink pythonBytesEscape Special + HiLink pythonBytesEscapeError Error + endif + + HiLink pythonStrFormatting Special + HiLink pythonStrFormat Special + HiLink pythonStrTemplate Special + + HiLink pythonDocTest Special + HiLink pythonDocTest2 Special + + HiLink pythonNumber Number + HiLink pythonHexNumber Number + HiLink pythonOctNumber Number + HiLink pythonBinNumber Number + HiLink pythonFloat Float + HiLink pythonNumberError Error + HiLink pythonOctError Error + HiLink pythonHexError Error + HiLink pythonBinError Error + + HiLink pythonBoolean Boolean + + HiLink pythonBuiltinObj Structure + HiLink pythonBuiltinFunc Function + + HiLink pythonExClass Structure + + delcommand HiLink +endif + +let b:current_syntax = "python" diff --git a/dotfiles/.vim/plugged/python-syntax/test.py b/dotfiles/.vim/plugged/python-syntax/test.py new file mode 100644 index 00000000..df81a9a9 --- /dev/null +++ b/dotfiles/.vim/plugged/python-syntax/test.py @@ -0,0 +1,143 @@ +#! /usr/bin/env python +# -*- coding: utf-8 -*- +# Above the run-comment and file encoding comment. + +# Comments. + +# TODO FIXME XXX + +# Keywords. + +with break continue del exec return pass print raise global assert lambda yield +for while if elif else import from as try except finally and in is not or + +yield from + +def functionname +class Classname +def функция +class Класс + +await +async def Test +async with +async for + +# Builtin objects. + +True False Ellipsis None NotImplemented + +# Builtin function and types. + +__import__ abs all any apply basestring bool buffer callable chr classmethod +cmp coerce compile complex delattr dict dir divmod enumerate eval execfile file +filter float frozenset getattr globals hasattr hash help hex id input int +intern isinstance issubclass iter len list locals long map max min object oct +open ord pow property range raw_input reduce reload repr reversed round set +setattr slice sorted staticmethod str sum super tuple type unichr unicode vars +xrange zip + +# Builtin exceptions and warnings. + +BaseException Exception StandardError ArithmeticError LookupError +EnvironmentError + +AssertionError AttributeError EOFError FloatingPointError GeneratorExit IOError +ImportError IndexError KeyError KeyboardInterrupt MemoryError NameError +NotImplementedError OSError OverflowError ReferenceError RuntimeError +StopIteration SyntaxError IndentationError TabError SystemError SystemExit +TypeError UnboundLocalError UnicodeError UnicodeEncodeError UnicodeDecodeError +UnicodeTranslateError ValueError WindowsError ZeroDivisionError + +Warning UserWarning DeprecationWarning PendingDepricationWarning SyntaxWarning +RuntimeWarning FutureWarning ImportWarning UnicodeWarning + +# Decorators. + +@ decoratorname +@ object.__init__(arg1, arg2) +@ декоратор +@ декоратор.décorateur + +# Numbers + +0 1 2 9 10 0x1f .3 12.34 0j 0j 34.2E-3 0b10 0o77 1023434 0x0 + +# Erroneous numbers + +077 100L 0xfffffffL 0L 08 0xk 0x 0b102 0o78 0o123LaB + +# Strings + +" test " ' test ' +""" + test +""" +''' + test +''' + +" \a\b\c\"\'\n\r \x34\077 \08 \xag" +r" \" \' " + +"testтест" + +b"test" + +b"test\r\n\xffff" + +b"тестtest" + +br"test" + +br"\a\b\n\r" + +# Formattings + +" %f " +b" %f " + +"{0.name!r:b} {0[n]} {name!s: } {{test}} {{}} {} {.__len__:s}" +b"{0.name!r:b} {0[n]} {name!s: } {{test}} {{}} {} {.__len__:s}" + +"${test} ${test ${test}aname $$$ $test+nope" +b"${test} ${test ${test}aname $$$ $test+nope" + +# Doctests. + +""" + Test: + >>> a = 5 + >>> a + 5 + + Test +""" + +''' + Test: + >>> a = 5 + >>> a + 5 + + Test +''' + +# Erroneous symbols or bad variable names. + +$ ? 6xav + +&& || === + +# Indentation errors. + + break + +# Trailing space errors. + + + break +""" + + test +"""