summaryrefslogtreecommitdiff
path: root/rc/core/python.kak
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2016-04-09 10:08:19 +0100
committerMaxime Coste <frrrwww@gmail.com>2016-04-09 10:08:19 +0100
commita49685d996cd76dc1b91c8872290ce8dc61f38dc (patch)
tree08c0e466d796b1bc59cf77c96b92d96e1b48f2ce /rc/core/python.kak
parent9711f7a3d63a66d0df2bdd1d5e09a0d60d27db6c (diff)
parent464007e33202c1b049b7c04b75df1f97b32de790 (diff)
Merge remote-tracking branch 'lenormf/fix-static-completion'
Diffstat (limited to 'rc/core/python.kak')
-rw-r--r--rc/core/python.kak45
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
}