diff options
Diffstat (limited to 'rc/core/python.kak')
| -rw-r--r-- | rc/core/python.kak | 45 |
1 files changed, 29 insertions, 16 deletions
diff --git a/rc/core/python.kak b/rc/core/python.kak index 4891f200..f378d7a6 100644 --- a/rc/core/python.kak +++ b/rc/core/python.kak @@ -12,8 +12,8 @@ hook global BufCreate .*[.](py) %{ set buffer filetype python } -# Highlighters -# ‾‾‾‾‾‾‾‾‾‾‾‾ +# Highlighters & Completion +# ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ addhl -group / regions -default code python \ double_string '"""' '"""' '' \ @@ -26,22 +26,36 @@ addhl -group /python/double_string fill string addhl -group /python/single_string fill string addhl -group /python/comment fill comment -addhl -group /python/code regex \<(True|False|None)\> 0:value -addhl -group /python/code regex \<(import|from)\> 0:meta +%sh{ + # Grammar + values="True|False|None" + meta="import|from" + # Keyword list is collected using `keyword.kwlist` from `keyword` + keywords="and|as|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|global|if|in|is|lambda|not|or|pass|print|raise|return|try|while|with|yield" + types="bool|buffer|bytearray|complex|dict|file|float|frozenset|int|list|long|memoryview|object|set|str|tuple|unicode|xrange" -# Keyword list is collected using `keyword.kwlist` from `keyword` -addhl -group /python/code regex \<(and|as|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|global|if|in|is|lambda|not|or|pass|print|raise|return|try|while|with|yield)\> 0:keyword -# Highlight types, when they are not used as constructors -addhl -group /python/code regex \<(bool|buffer|bytearray|complex|dict|file|float|frozenset|int|list|long|memoryview|object|set|str|tuple|unicode|xrange)\>[^(] 1:type + # Add the language's grammar to the static completion list + printf %s "hook global WinSetOption filetype=python %{ + set window static_words '${values}' + set -add window static_words '${meta}' + set -add window static_words '${keywords}' + set -add window static_words '${types}' + }" | sed 's,|,:,g' -# Commands -# ‾‾‾‾‾‾‾‾ + # Highlight keywords + printf %s " + addhl -group /python/code regex '\<(${values})\>' 0:value + addhl -group /python/code regex '\<(${meta})\>' 0:meta + addhl -group /python/code regex '\<(${keywords})\>' 0:keyword + " -def -hidden _python_filter_around_selections %{ - # remove trailing white spaces - try %{ exec -draft -itersel <a-x> s \h+$ <ret> d } + # Highlight types, when they are not used as constructors + printf %s "addhl -group /python/code regex '\<(${types})\>[^(]' 1:type" } +# Commands +# ‾‾‾‾‾‾‾‾ + def -hidden _python_indent_on_new_line %{ eval -draft -itersel %{ # preserve previous line indent @@ -60,13 +74,12 @@ def -hidden _python_indent_on_new_line %{ hook global WinSetOption filetype=python %{ addhl ref python - - hook window InsertEnd .* -group python-hooks _python_filter_around_selections hook window InsertChar \n -group python-indent _python_indent_on_new_line + + set window formatcmd "autopep8 -" } hook global WinSetOption filetype=(?!python).* %{ rmhl python rmhooks window python-indent - rmhooks window python-hooks } |
