Remove setg/setb/setw and use set <scope>
(with scope a prefix of global,buffer or window)
This commit is contained in:
parent
cc01aab8b8
commit
feff965ac6
|
@ -353,7 +353,7 @@ Options are typed, their type can be
|
|||
Options value can be changed using the +set+ commands:
|
||||
|
||||
--------------------------------------------------------------
|
||||
:set{b,w,g} <option> <value> # buffer, window, or global scope
|
||||
:set [global,buffer,window] <option> <value> # buffer, window, or global scope
|
||||
--------------------------------------------------------------
|
||||
|
||||
Option values can be different by scope, an option can have a global
|
||||
|
|
|
@ -70,7 +70,7 @@ This is a very simple example, most of the time, the echo command will as
|
|||
well contains
|
||||
|
||||
-----
|
||||
setb filetype <...>
|
||||
set buffer filetype <...>
|
||||
-----
|
||||
|
||||
and some hooks for this filetype will have been written
|
||||
|
@ -101,7 +101,7 @@ decl str plugin_filename
|
|||
%sh{
|
||||
# ask Kakoune to write current buffer to temporary file
|
||||
filename=$(mktemp -t kak-temp.XXXXXXXX)
|
||||
echo "setb plugin_filename '$filename'
|
||||
echo "set buffer plugin_filename '$filename'
|
||||
write '$filename'"
|
||||
}
|
||||
# End the %sh{} so that it's output gets executed by Kakoune.
|
||||
|
@ -117,7 +117,7 @@ nop %sh{ ( # launch a detached shell
|
|||
# generate completion option value
|
||||
completions="$line.$column@$kak_timestamp:$candidates"
|
||||
# write to Kakoune socket for the buffer that triggered the completion
|
||||
echo "setb -buffer '${kak_bufname}' completions '$completions'" |
|
||||
echo "set buffer=${kak_bufname} completions '$completions'" |
|
||||
socat stdin UNIX-SOCKET:/tmp/kak-${kak_session}
|
||||
) >& /dev/null < /dev/null & }
|
||||
-----
|
||||
|
|
|
@ -460,47 +460,30 @@ void exec_commands_in_file(CommandParameters params,
|
|||
CommandManager::instance().execute(file_content, context);
|
||||
}
|
||||
|
||||
void set_global_option(CommandParameters params, Context& context)
|
||||
static OptionManager& get_options(const String& scope, const Context& context)
|
||||
{
|
||||
if (prefix_match("global", scope))
|
||||
return GlobalOptions::instance();
|
||||
else if (prefix_match("buffer", scope))
|
||||
return context.buffer().options();
|
||||
else if (prefix_match("window", scope))
|
||||
return context.window().options();
|
||||
else if (prefix_match(scope, "buffer="))
|
||||
return BufferManager::instance().get_buffer(scope.substr(7_byte)).options();
|
||||
throw runtime_error("error: no such option container " + scope);
|
||||
}
|
||||
|
||||
void set_option(CommandParameters params, Context& context)
|
||||
{
|
||||
ParametersParser parser(params, { { "add", false } },
|
||||
ParametersParser::Flags::OptionsOnlyAtStart,
|
||||
2, 2);
|
||||
3, 3);
|
||||
|
||||
Option& opt = GlobalOptions::instance().get_local_option(parser[0]);
|
||||
Option& opt = get_options(parser[0], context).get_local_option(parser[1]);
|
||||
if (parser.has_option("add"))
|
||||
opt.add_from_string(parser[1]);
|
||||
opt.add_from_string(parser[2]);
|
||||
else
|
||||
opt.set_from_string(parser[1]);
|
||||
}
|
||||
|
||||
void set_buffer_option(CommandParameters params, Context& context)
|
||||
{
|
||||
ParametersParser parser(params, { { "buffer", true}, { "add", false } },
|
||||
ParametersParser::Flags::OptionsOnlyAtStart,
|
||||
2, 2);
|
||||
|
||||
OptionManager& options = parser.has_option("buffer") ?
|
||||
BufferManager::instance().get_buffer(parser.option_value("buffer")).options()
|
||||
: context.buffer().options();
|
||||
|
||||
Option& opt = options.get_local_option(parser[0]);
|
||||
if (parser.has_option("add"))
|
||||
opt.add_from_string(parser[1]);
|
||||
else
|
||||
opt.set_from_string(parser[1]);
|
||||
}
|
||||
|
||||
void set_window_option(CommandParameters params, Context& context)
|
||||
{
|
||||
ParametersParser parser(params, { { "add", false } },
|
||||
ParametersParser::Flags::OptionsOnlyAtStart,
|
||||
2, 2);
|
||||
|
||||
Option& opt = context.window().options().get_local_option(parser[0]);
|
||||
if (parser.has_option("add"))
|
||||
opt.add_from_string(parser[1]);
|
||||
else
|
||||
opt.set_from_string(parser[1]);
|
||||
opt.set_from_string(parser[2]);
|
||||
}
|
||||
|
||||
void declare_option(CommandParameters params, Context& context)
|
||||
|
@ -873,21 +856,26 @@ void register_commands()
|
|||
cm.register_command("echo", echo_message);
|
||||
cm.register_command("debug", write_debug_message);
|
||||
|
||||
cm.register_commands({ "setg", "setglobal" }, set_global_option,
|
||||
PerArgumentCommandCompleter({
|
||||
[](const Context& context, const String& prefix, ByteCount cursor_pos)
|
||||
{ return GlobalOptions::instance().complete_option_name(prefix, cursor_pos); }
|
||||
}));
|
||||
cm.register_commands({ "setb", "setbuffer" }, set_buffer_option,
|
||||
PerArgumentCommandCompleter({
|
||||
[](const Context& context, const String& prefix, ByteCount cursor_pos)
|
||||
{ return context.buffer().options().complete_option_name(prefix, cursor_pos); }
|
||||
}));
|
||||
cm.register_commands({ "setw", "setwindow" }, set_window_option,
|
||||
PerArgumentCommandCompleter({
|
||||
[](const Context& context, const String& prefix, ByteCount cursor_pos)
|
||||
{ return context.window().options().complete_option_name(prefix, cursor_pos); }
|
||||
}));
|
||||
cm.register_command("set", set_option,
|
||||
[](const Context& context, CommandParameters params, size_t token_to_complete, ByteCount pos_in_token)
|
||||
{
|
||||
if (token_to_complete == 0)
|
||||
{
|
||||
CandidateList res;
|
||||
for (auto scope : { "global", "buffer", "window" })
|
||||
{
|
||||
if (params.size() == 0 or prefix_match(scope, params[0].substr(0_byte, pos_in_token)))
|
||||
res.emplace_back(scope);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
else if (token_to_complete == 1)
|
||||
{
|
||||
OptionManager& options = get_options(params[0], context);
|
||||
return options.complete_option_name(params[1], pos_in_token);
|
||||
}
|
||||
return CandidateList{};
|
||||
} );
|
||||
|
||||
cm.register_commands({"ca", "colalias"}, define_color_alias);
|
||||
cm.register_commands({"nc", "nameclient"}, set_client_name);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
hook global BufCreate .*\.asciidoc %{ setb filetype asciidoc }
|
||||
hook global BufCreate .*\.asciidoc %{ set buffer filetype asciidoc }
|
||||
|
||||
hook global WinSetOption filetype=asciidoc %{
|
||||
addhl group asciidoc-highlight
|
||||
|
|
|
@ -4,7 +4,7 @@ decl str clang_options
|
|||
def clang-complete %{
|
||||
%sh{
|
||||
filename=$(mktemp -d -t kak-clang.XXXXXXXX)/buffer.cpp
|
||||
echo "setb clang_filename $filename"
|
||||
echo "set buffer clang_filename $filename"
|
||||
echo "write $filename"
|
||||
}
|
||||
# end the previous %sh{} so that its output gets interpreted by kakoune
|
||||
|
@ -23,7 +23,7 @@ def clang-complete %{
|
|||
for cmp in ${output}; do
|
||||
completions="${completions}:${cmp}"
|
||||
done
|
||||
echo "eval -client $kak_client %[ echo completed; setb completions '${completions}' ]" | socat -u stdin UNIX-CONNECT:/tmp/kak-${kak_session}
|
||||
echo "eval -client $kak_client %[ echo completed; set buffer completions '${completions}' ]" | socat -u stdin UNIX-CONNECT:/tmp/kak-${kak_session}
|
||||
) >& /dev/null < /dev/null &
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
hook global BufCreate .*\.(c|cc|cpp|cxx|C|h|hh|hpp|hxx|H) %{
|
||||
setb filetype cpp
|
||||
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 setb filetype cpp;
|
||||
echo set buffer filetype cpp;
|
||||
fi
|
||||
} }
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
hook global BufCreate .*\.(diff|patch) %{
|
||||
setb filetype diff
|
||||
set buffer filetype diff
|
||||
}
|
||||
|
||||
hook global WinSetOption filetype=diff %{
|
||||
|
|
|
@ -27,7 +27,7 @@ def -shell-params git %{ %sh{
|
|||
echo "edit! -scratch *git*
|
||||
exec |cat<space>${tmpfile}<ret>gk
|
||||
nop %sh{rm ${tmpfile}}
|
||||
setb filetype '${filetype}'"
|
||||
set buffer filetype '${filetype}'"
|
||||
|
||||
[[ -n "$kak_opt_docsclient" ]] && echo "}"
|
||||
else
|
||||
|
@ -40,7 +40,7 @@ def -shell-params git %{ %sh{
|
|||
(
|
||||
echo "eval -client '$kak_client' %{
|
||||
try %{ addhl flag_lines magenta git_blame_flags } catch %{}
|
||||
setb -buffer '$kak_bufname' git_blame_flags ''
|
||||
set buffer=$kak_bufname git_blame_flags ''
|
||||
}" | socat -u stdin UNIX-CONNECT:/tmp/kak-${kak_session}
|
||||
declare -A authors
|
||||
declare -A dates
|
||||
|
@ -51,7 +51,7 @@ def -shell-params git %{ %sh{
|
|||
for (( i=1; $i < $count; i++ )); do
|
||||
flag="$flag:$(($line+$i))|black|$text"
|
||||
done
|
||||
echo "setb -add -buffer '$kak_bufname' git_blame_flags %{${flag}}" | socat -u stdin UNIX-CONNECT:/tmp/kak-${kak_session}
|
||||
echo "set buffer -add buffer=$kak_bufname git_blame_flags %{${flag}}" | socat -u stdin UNIX-CONNECT:/tmp/kak-${kak_session}
|
||||
}
|
||||
git blame --incremental $kak_bufname | ( while read blame_line; do
|
||||
if [[ $blame_line =~ ([0-9a-f]{40}).([0-9]+).([0-9]+).([0-9]+) ]]; then
|
||||
|
@ -84,7 +84,7 @@ def -shell-params git %{ %sh{
|
|||
flags="$flags:$line|red|-"
|
||||
fi
|
||||
done
|
||||
echo "setb git_diff_flags '$flags'"
|
||||
echo "set buffer git_diff_flags '$flags'"
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
hook global BufCreate .*COMMIT_EDITMSG %{
|
||||
setb filetype git-commit
|
||||
set buffer filetype git-commit
|
||||
}
|
||||
|
||||
hook global WinSetOption filetype=git-commit %{
|
||||
|
@ -13,7 +13,7 @@ hook global WinSetOption filetype=(?!git-commit).* %{
|
|||
}
|
||||
|
||||
hook global BufCreate .*git-rebase-todo %{
|
||||
setb filetype git-rebase
|
||||
set buffer filetype git-rebase
|
||||
}
|
||||
|
||||
hook global WinSetOption filetype=git-rebase %{
|
||||
|
|
|
@ -14,7 +14,7 @@ def -shell-params -file-completion \
|
|||
[[ -n "$kak_opt_toolsclient" ]] && echo "eval -client '$kak_opt_toolsclient' %{"
|
||||
|
||||
echo "edit! -fifo ${output} *grep*
|
||||
setb filetype grep
|
||||
set buffer filetype grep
|
||||
hook buffer BufClose .* %{ nop %sh{ rm -r $(dirname ${output}) } }"
|
||||
|
||||
[[ -n "$kak_opt_toolsclient" ]] && echo "}"
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
hook global BufCreate (.*/)?(kakrc|.*.kak) %{
|
||||
setb filetype kak
|
||||
set buffer filetype kak
|
||||
}
|
||||
|
||||
hook global WinSetOption filetype=kak %{
|
||||
addhl group kak-highlight
|
||||
addhl -group kak-highlight regex \<(hook|rmhooks|addhl|rmhl|addfilter|rmfilter|exec|eval|source|runtime|def|decl|echo|edit|set[gbw])\> 0:keyword
|
||||
addhl -group kak-highlight regex \<(hook|rmhooks|addhl|rmhl|addfilter|rmfilter|exec|eval|source|runtime|def|decl|echo|edit|set)\> 0:keyword
|
||||
addhl -group kak-highlight regex \<(default|black|red|green|yellow|blue|magenta|cyan|white)\> 0:value
|
||||
addhl -group kak-highlight regex (?<=\<hook)\h+((global|buffer|window)|(\S+))\h+(\S+)\h+(\H+) 2:attribute 3:error 4:identifier 5:string
|
||||
addhl -group kak-highlight regex (?<=\<set)\h+((global|buffer|window)|(\S+))\h+(\S+)\h+(\H+) 2:attribute 3:error 4:identifier 5:value
|
||||
addhl -group kak-highlight regex (?<=\<regex)\h+(\S+) 1:string
|
||||
addhl -group kak-highlight regex (["'])(?:\\\1|.)*?\1 0:string
|
||||
addhl -group kak-highlight regex (?<=\<set[gbw])\h+(\S+)\h+(\S+) 1:identifier 2:value
|
||||
addhl -group kak-highlight regex (^|\h)\#[^\n]*\n 0:comment
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
hook global BufOpen .* %{ %sh{
|
||||
mimetype="$(file -b --mime-type ${kak_bufname})"
|
||||
if [[ "${mimetype}" == "message/rfc822" ]]; then
|
||||
echo setb filetype mail;
|
||||
echo set buffer filetype mail;
|
||||
fi
|
||||
} }
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ def -shell-params make %{ %sh{
|
|||
[[ -n "$kak_opt_toolsclient" ]] && echo "eval -client '$kak_opt_toolsclient' %{"
|
||||
|
||||
echo "edit! -fifo ${output} *make*
|
||||
setb filetype make
|
||||
set buffer filetype make
|
||||
hook buffer BufClose .* %{ nop %sh{ rm -r $(dirname ${output}) } }"
|
||||
|
||||
[[ -n "$kak_opt_toolsclient" ]] && echo "}"
|
||||
|
|
|
@ -6,7 +6,7 @@ hook global WinSetOption filetype=man %{
|
|||
addhl -group man-highlight regex ^\h+-+[-a-zA-Z_]+ 0:yellow
|
||||
addhl -group man-highlight regex [-a-zA-Z_.]+\(\d\) 0:green
|
||||
hook window -id man-hooks NormalKey <c-m> man
|
||||
setb tabstop 8
|
||||
set buffer tabstop 8
|
||||
}
|
||||
|
||||
hook global WinSetOption filetype=(?!man).* %{
|
||||
|
@ -28,7 +28,7 @@ def -shell-params man %{ %sh{
|
|||
echo "edit! -scratch '*man*'
|
||||
exec |cat<space>${tmpfile}<ret>gk
|
||||
nop %sh{rm ${tmpfile}}
|
||||
setb filetype man"
|
||||
set buffer filetype man"
|
||||
else
|
||||
echo "echo %{man '$@' failed: see *debug* buffer for details }"
|
||||
rm ${tmpfile}
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
hook global BufCreate .*\.(sh) %{
|
||||
setb filetype sh
|
||||
set buffer filetype sh
|
||||
}
|
||||
|
||||
hook global BufOpen .* %{ %sh{
|
||||
mimetype="$(file -b --mime-type ${kak_bufname})"
|
||||
if [[ "${mimetype}" == "text/x-shellscript" ]]; then
|
||||
echo setb filetype sh;
|
||||
echo set buffer filetype sh;
|
||||
fi
|
||||
} }
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user