Centralize file mimetype detection in mime.kak
This way, 'file --mime-type $buffer' is called only once per file rather than once per filetype detection hook.
This commit is contained in:
parent
db5050fab0
commit
b2cb5b421c
|
@ -41,6 +41,6 @@ XDG_CONFIG_HOME ?= $(HOME)/.config
|
||||||
|
|
||||||
userconfig:
|
userconfig:
|
||||||
mkdir -p $(XDG_CONFIG_HOME)/kak/autoload
|
mkdir -p $(XDG_CONFIG_HOME)/kak/autoload
|
||||||
ln -s $(CURDIR)/rc/{asciidoc,client,cpp,diff,git,grep,kakrc,make,sh,mail,man}.kak $(XDG_CONFIG_HOME)/kak/autoload/
|
ln -s $(CURDIR)/rc/{asciidoc,client,cpp,diff,git,grep,kakrc,mime,make,sh,mail,man}.kak $(XDG_CONFIG_HOME)/kak/autoload/
|
||||||
|
|
||||||
.PHONY: tags userconfig
|
.PHONY: tags userconfig
|
||||||
|
|
|
@ -2,12 +2,9 @@ hook global BufCreate .*\.(c|cc|cpp|cxx|C|h|hh|hpp|hxx|H) %{
|
||||||
set buffer filetype cpp
|
set buffer filetype cpp
|
||||||
}
|
}
|
||||||
|
|
||||||
hook global BufOpen .* %{ %sh{
|
hook global BufSetOption mimetype=text/x-c(\+\+)? %{
|
||||||
mimetype="$(file -b --mime-type ${kak_bufname})"
|
set buffer filetype cpp
|
||||||
if [[ "${mimetype}" == "text/x-c++" || "${mimetype}" == "text/x-c" ]]; then
|
}
|
||||||
echo set buffer filetype cpp;
|
|
||||||
fi
|
|
||||||
} }
|
|
||||||
|
|
||||||
hook global WinSetOption filetype=cpp %~
|
hook global WinSetOption filetype=cpp %~
|
||||||
addhl group cpp-highlight
|
addhl group cpp-highlight
|
||||||
|
@ -35,6 +32,8 @@ hook global WinSetOption filetype=cpp %~
|
||||||
try %{ exec -draft <c-s>k<a-x>s^\h*\K(/{2,})<ret>y<c-o>P }
|
try %{ exec -draft <c-s>k<a-x>s^\h*\K(/{2,})<ret>y<c-o>P }
|
||||||
# indent after visibility specifier
|
# indent after visibility specifier
|
||||||
try %[ exec -draft k<a-x><a-k>^\h*(public|private|protected):\h*$<ret>j<a-gt> ]
|
try %[ exec -draft k<a-x><a-k>^\h*(public|private|protected):\h*$<ret>j<a-gt> ]
|
||||||
|
# indent after if|else|while|for
|
||||||
|
try %[ exec -draft <a-F>)MB<a-k>\`(if|else|while|for)\h*\(.*\)\n\h*\n\'<ret><a-space><space><a-gt> ]
|
||||||
_ @
|
_ @
|
||||||
|
|
||||||
hook window InsertChar \} -id cpp-indent %[
|
hook window InsertChar \} -id cpp-indent %[
|
||||||
|
|
|
@ -1,9 +1,4 @@
|
||||||
hook global BufOpen .* %{ %sh{
|
hook global BufSetOption mimetype=message/rfc822 %{ set buffer filetype mail }
|
||||||
mimetype="$(file -b --mime-type ${kak_bufname})"
|
|
||||||
if [[ "${mimetype}" == "message/rfc822" ]]; then
|
|
||||||
echo set buffer filetype mail;
|
|
||||||
fi
|
|
||||||
} }
|
|
||||||
|
|
||||||
hook global WinSetOption filetype=mail %~
|
hook global WinSetOption filetype=mail %~
|
||||||
addhl group mail-highlight
|
addhl group mail-highlight
|
||||||
|
|
5
src/rc/mime.kak
Normal file
5
src/rc/mime.kak
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
decl str mimetype "text/plain"
|
||||||
|
|
||||||
|
hook global BufOpen .* %{
|
||||||
|
set buffer mimetype %sh{file -b --mime-type ${kak_bufname} }
|
||||||
|
}
|
|
@ -2,12 +2,9 @@ hook global BufCreate .*\.(sh) %{
|
||||||
set buffer filetype sh
|
set buffer filetype sh
|
||||||
}
|
}
|
||||||
|
|
||||||
hook global BufOpen .* %{ %sh{
|
hook global BufSetOption mimetype=text/x-shellscript %{
|
||||||
mimetype="$(file -b --mime-type ${kak_bufname})"
|
set buffer filetype sh
|
||||||
if [[ "${mimetype}" == "text/x-shellscript" ]]; then
|
}
|
||||||
echo set buffer filetype sh;
|
|
||||||
fi
|
|
||||||
} }
|
|
||||||
|
|
||||||
hook global WinSetOption filetype=sh %~
|
hook global WinSetOption filetype=sh %~
|
||||||
addhl group sh-highlight
|
addhl group sh-highlight
|
||||||
|
|
Loading…
Reference in New Issue
Block a user