summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2013-11-12 20:38:00 +0000
committerMaxime Coste <frrrwww@gmail.com>2013-11-12 20:38:00 +0000
commitb2cb5b421cc22ec4454fb5984f9d756badf9f3e4 (patch)
tree90db704f4d056f8b6bd4de195391a62c514f9a36 /src
parentdb5050fab0718d9f446a9af3f4507e30b29bbc83 (diff)
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.
Diffstat (limited to 'src')
-rw-r--r--src/Makefile2
-rw-r--r--src/rc/cpp.kak11
-rw-r--r--src/rc/mail.kak7
-rw-r--r--src/rc/mime.kak5
-rw-r--r--src/rc/sh.kak9
5 files changed, 15 insertions, 19 deletions
diff --git a/src/Makefile b/src/Makefile
index 5d6a85d8..de2cb889 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -41,6 +41,6 @@ XDG_CONFIG_HOME ?= $(HOME)/.config
userconfig:
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
diff --git a/src/rc/cpp.kak b/src/rc/cpp.kak
index 5da7e844..50556b97 100644
--- a/src/rc/cpp.kak
+++ b/src/rc/cpp.kak
@@ -2,12 +2,9 @@ hook global BufCreate .*\.(c|cc|cpp|cxx|C|h|hh|hpp|hxx|H) %{
set buffer filetype cpp
}
-hook global BufOpen .* %{ %sh{
- mimetype="$(file -b --mime-type ${kak_bufname})"
- if [[ "${mimetype}" == "text/x-c++" || "${mimetype}" == "text/x-c" ]]; then
- echo set buffer filetype cpp;
- fi
-} }
+hook global BufSetOption mimetype=text/x-c(\+\+)? %{
+ set buffer filetype cpp
+}
hook global WinSetOption filetype=cpp %~
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 }
# indent after visibility specifier
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 %[
diff --git a/src/rc/mail.kak b/src/rc/mail.kak
index abf5364a..cdc537ea 100644
--- a/src/rc/mail.kak
+++ b/src/rc/mail.kak
@@ -1,9 +1,4 @@
-hook global BufOpen .* %{ %sh{
- mimetype="$(file -b --mime-type ${kak_bufname})"
- if [[ "${mimetype}" == "message/rfc822" ]]; then
- echo set buffer filetype mail;
- fi
-} }
+hook global BufSetOption mimetype=message/rfc822 %{ set buffer filetype mail }
hook global WinSetOption filetype=mail %~
addhl group mail-highlight
diff --git a/src/rc/mime.kak b/src/rc/mime.kak
new file mode 100644
index 00000000..e0801a18
--- /dev/null
+++ b/src/rc/mime.kak
@@ -0,0 +1,5 @@
+decl str mimetype "text/plain"
+
+hook global BufOpen .* %{
+ set buffer mimetype %sh{file -b --mime-type ${kak_bufname} }
+}
diff --git a/src/rc/sh.kak b/src/rc/sh.kak
index d558d0a9..f2240f9b 100644
--- a/src/rc/sh.kak
+++ b/src/rc/sh.kak
@@ -2,12 +2,9 @@ hook global BufCreate .*\.(sh) %{
set buffer filetype sh
}
-hook global BufOpen .* %{ %sh{
- mimetype="$(file -b --mime-type ${kak_bufname})"
- if [[ "${mimetype}" == "text/x-shellscript" ]]; then
- echo set buffer filetype sh;
- fi
-} }
+hook global BufSetOption mimetype=text/x-shellscript %{
+ set buffer filetype sh
+}
hook global WinSetOption filetype=sh %~
addhl group sh-highlight