1
0
mirror of https://github.com/gryf/python-syntax.git synced 2025-12-19 20:38:07 +01:00

9 Commits

Author SHA1 Message Date
Dmitry Vasiliev
6f6f10ff54 Clean up boolean highlighting 2013-08-11 17:25:39 +02:00
Yuri Habrusiev
a0d21acc1c add pythonBoolean syntax 2013-08-01 17:49:49 +03:00
Dmitry Vasiliev
ebbdd093b7 Revision 3.3.3 2013-06-02 13:52:27 +02:00
Will Gray
fc6a66bf80 Reload local syntax only
Turning syntax off and back on is more than what's necessary to reload the syntax for the current buffer.
2013-06-01 14:53:27 -05:00
Dmitry Vasiliev
e344f212b6 Fix behaviour of b:python_version_2 variable 2013-06-01 17:18:56 +02:00
Dmitry Vasiliev
91eaa32bea Update CHANGES.txt 2013-05-12 22:30:15 +02:00
Dmitry Vasiliev
2860070a9d Update script version 2013-05-12 22:19:36 +02:00
Dmitry Vasiliev
40456e7708 Add README file 2013-05-12 22:12:04 +02:00
Dmitry Vasiliev
16f0987559 Move python.vim into syntax directory 2013-05-12 22:11:32 +02:00
3 changed files with 187 additions and 21 deletions

View File

@@ -1,3 +1,20 @@
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): Revision 3.3.0 (2013-03-10):
- Merge Python 2 and Python 3 script versions into the single python.vim - Merge Python 2 and Python 3 script versions into the single python.vim

139
README.rst Normal file
View File

@@ -0,0 +1,139 @@
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
<http://www.vim.org/scripts/script.php?script_id=790>`_.
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
<https://twitter.com/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
<https://github.com/hdima/python-syntax/blob/master/syntax/python.vim>`_ script
into your ``~/.vim/syntax/`` directory.
You can also use `Pathogen <https://github.com/tpope/vim-pathogen>`_ or `Vundle
<https://github.com/gmarik/vundle>`_ plugin managers in which case you can
install the whole `python.vim repository
<https://github.com/hdima/python-syntax>`_ 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). Can also 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_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
- Caleb Adamantine
- Jeroen Ruigrok van der Werven
- John Eikenberry
- Marc Weber
- Pedro Algarvio
- Will Gray
- Yuri Habrusiev

View File

@@ -1,33 +1,36 @@
" Vim syntax file " Vim syntax file
" Language: Python " Language: Python
" Maintainer: Dmitry Vasiliev <dima at hlabs dot org> " Maintainer: Dmitry Vasiliev <dima at hlabs dot org>
" URL: https://github.com/hdima/vim-scripts/blob/master/syntax/python/python.vim " URL: https://github.com/hdima/python-syntax
" Last Change: 2013-03-10 " Last Change: 2013-08-11
" Filenames: *.py " Filenames: *.py
" Version: 3.3.0 " Version: 3.3.4
" "
" Based on python.vim (from Vim 6.1 distribution) " Based on python.vim (from Vim 6.1 distribution)
" by Neil Schemenauer <nas at python dot ca> " by Neil Schemenauer <nas at python dot ca>
" "
" Bugs and feature requests can be reported through email " Please use the following channels for reporting bugs, offering suggestions or
" <dima at hlabs dot org>, GitHub at: " feedback:
"
" https://github.com/hdima/vim-scripts/issues " - python.vim issue tracker: https://github.com/hdima/python-syntax/issues
" " - Email: Dmitry Vasiliev (dima at hlabs.org)
" , or Twitter: " - Send a message or follow me for updates on Twitter: `@hdima
" " <https://twitter.com/hdima>`__
" https://twitter.com/hdima
" "
" Contributors " Contributors
" ============ " ============
" "
" Jeroen Ruigrok van der Werven " List of the contributors in alphabetical order:
" Pedro Algarvio "
" John Eikenberry
" Caleb Adamantine
" Andrea Riciputi " Andrea Riciputi
" Anton Butanaev " Anton Butanaev
" Caleb Adamantine
" Jeroen Ruigrok van der Werven
" John Eikenberry
" Marc Weber " Marc Weber
" Pedro Algarvio
" Will Gray
" Yuri Habrusiev
" "
" Options " Options
" ======= " =======
@@ -88,8 +91,8 @@ endif
" "
" Commands " Commands
" "
command! -buffer Python2Syntax let b:python_version_2 = 1 | if exists("g:syntax_on") | syn off | endif | syn enable command! -buffer Python2Syntax let b:python_version_2 = 1 | let &syntax=&syntax
command! -buffer Python3Syntax let b:python_version_2 = 0 | if exists("g:syntax_on") | syn off | endif | syn enable command! -buffer Python3Syntax let b:python_version_2 = 0 | let &syntax=&syntax
" Enable option if it's not defined " Enable option if it's not defined
function! s:EnableByDefault(name) function! s:EnableByDefault(name)
@@ -100,12 +103,15 @@ endfunction
" Check if option is enabled " Check if option is enabled
function! s:Enabled(name) function! s:Enabled(name)
return exists(a:name) && {a:name} != 0 return exists(a:name) && {a:name}
endfunction endfunction
" Is it Python 2 syntax? " Is it Python 2 syntax?
function! s:Python2Syntax() function! s:Python2Syntax()
return s:Enabled("b:python_version_2") || s:Enabled("g:python_version_2") if exists("b:python_version_2")
return b:python_version_2
endif
return s:Enabled("g:python_version_2")
endfunction endfunction
" "
@@ -154,7 +160,8 @@ if s:Python2Syntax()
syn keyword pythonPreCondit as syn keyword pythonPreCondit as
syn match pythonFunction "[a-zA-Z_][a-zA-Z0-9_]*" display contained syn match pythonFunction "[a-zA-Z_][a-zA-Z0-9_]*" display contained
else else
syn keyword pythonStatement as nonlocal False None True syn keyword pythonStatement as nonlocal None
syn keyword pythonBoolean True False
syn match pythonFunction "\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*" display contained syn match pythonFunction "\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*" display contained
endif endif
@@ -365,7 +372,8 @@ syn match pythonFloat "\<\d\+\.\d*\%([eE][+-]\=\d\+\)\=[jJ]\=" display
if s:Enabled("g:python_highlight_builtin_objs") if s:Enabled("g:python_highlight_builtin_objs")
if s:Python2Syntax() if s:Python2Syntax()
syn keyword pythonBuiltinObj True False None syn keyword pythonBuiltinObj None
syn keyword pythonBoolean True False
endif endif
syn keyword pythonBuiltinObj Ellipsis NotImplemented syn keyword pythonBuiltinObj Ellipsis NotImplemented
syn keyword pythonBuiltinObj __debug__ __doc__ __file__ __name__ __package__ syn keyword pythonBuiltinObj __debug__ __doc__ __file__ __name__ __package__
@@ -518,6 +526,8 @@ if version >= 508 || !exists("did_python_syn_inits")
HiLink pythonHexError Error HiLink pythonHexError Error
HiLink pythonBinError Error HiLink pythonBinError Error
HiLink pythonBoolean Boolean
HiLink pythonBuiltinObj Structure HiLink pythonBuiltinObj Structure
HiLink pythonBuiltinFunc Function HiLink pythonBuiltinFunc Function