Replace non POSIX calls to echo with printf %s

This commit is contained in:
Frank LENORMAND 2016-03-15 13:25:47 +02:00
parent e4b9e30b31
commit 84a21f8cfb
21 changed files with 108 additions and 97 deletions

View File

@ -34,7 +34,7 @@ def tag-complete -docstring "Insert completion candidates for the current select
%sh{ ( %sh{ (
compl=$(readtags -p "$kak_selection" | cut -f 1 | sort | uniq | sed -e 's/:/\\:/g' | sed -e 's/\n/:/g' ) compl=$(readtags -p "$kak_selection" | cut -f 1 | sort | uniq | sed -e 's/:/\\:/g' | sed -e 's/\n/:/g' )
compl="${kak_cursor_line}.${kak_cursor_column}+${#kak_selection}@${kak_timestamp}:${compl}" compl="${kak_cursor_line}.${kak_cursor_column}+${#kak_selection}@${kak_timestamp}:${compl}"
echo "set buffer=$kak_bufname ctags_completions '${compl}'" | kak -p ${kak_session} printf %s "set buffer=$kak_bufname ctags_completions '${compl}'" | kak -p ${kak_session}
) > /dev/null 2>&1 < /dev/null & } ) > /dev/null 2>&1 < /dev/null & }
}} }}
@ -45,7 +45,7 @@ def ctags-funcinfo -docstring "Display ctags information about a selected functi
%sh{ %sh{
sigs=$(readtags -e ${kak_selection%(} | grep kind:f | sed -re 's/^(\S+).*((class|struct|namespace):(\S+))?.*signature:(.*)$/\5 [\4::\1]/') sigs=$(readtags -e ${kak_selection%(} | grep kind:f | sed -re 's/^(\S+).*((class|struct|namespace):(\S+))?.*signature:(.*)$/\5 [\4::\1]/')
if [ -n "$sigs" ]; then if [ -n "$sigs" ]; then
echo "eval -client ${kak_client} %{info -anchor $kak_cursor_line.$kak_cursor_column -placement above '$sigs'}" printf %s "eval -client ${kak_client} %{info -anchor $kak_cursor_line.$kak_cursor_column -placement above '$sigs'}"
fi fi
} }
} }
@ -75,7 +75,7 @@ def ctags-generate -docstring 'Generate tag file asynchronously' %{
msg="tags generation failed" msg="tags generation failed"
fi fi
echo "eval -client $kak_client echo -color Information '${msg}'" | kak -p ${kak_session} printf %s "eval -client $kak_client echo -color Information '${msg}'" | kak -p ${kak_session}
) > /dev/null 2>&1 < /dev/null & } ) > /dev/null 2>&1 < /dev/null & }
} }

View File

@ -35,12 +35,12 @@ addhl -group /lua/code regex \b(and|break|do|else|elseif|end|false|for|function|
def lua-alternative-file -docstring 'Jump to the alternate file (implementation ↔ test)' %{ %sh{ def lua-alternative-file -docstring 'Jump to the alternate file (implementation ↔ test)' %{ %sh{
case $kak_buffile in case $kak_buffile in
*spec/*_spec.lua) *spec/*_spec.lua)
altfile=$(eval echo $(echo $kak_buffile | sed s+spec/+'*'/+';'s/_spec//)) altfile=$(eval printf %s $(printf %s $kak_buffile | sed s+spec/+'*'/+';'s/_spec//))
[ ! -f $altfile ] && echo "echo -color Error 'implementation file not found'" && exit [ ! -f $altfile ] && printf %s "echo -color Error 'implementation file not found'" && exit
;; ;;
*.lua) *.lua)
path=$kak_buffile path=$kak_buffile
dirs=$(while [ $path ]; do echo $path; path=${path%/*}; done | tail -n +2) dirs=$(while [ $path ]; do printf %s $path; path=${path%/*}; done | tail -n +2)
for dir in $dirs; do for dir in $dirs; do
altdir=$dir/spec altdir=$dir/spec
if [ -d $altdir ]; then if [ -d $altdir ]; then
@ -48,13 +48,13 @@ def lua-alternative-file -docstring 'Jump to the alternate file (implementation
break break
fi fi
done done
[ ! -d $altdir ] && echo "echo -color Error 'spec/ not found'" && exit [ ! -d $altdir ] && printf %s "echo -color Error 'spec/ not found'" && exit
;; ;;
*) *)
echo "echo -color Error 'alternative file not found'" && exit printf %s "echo -color Error 'alternative file not found'" && exit
;; ;;
esac esac
echo "edit $altfile" printf %s "edit $altfile"
}} }}
def -hidden _lua_filter_around_selections %{ def -hidden _lua_filter_around_selections %{

View File

@ -5,13 +5,13 @@ def -params ..1 spell -docstring "Check spelling of the current buffer with aspe
try %{ addhl ranges 'spell_regions' } try %{ addhl ranges 'spell_regions' }
%sh{ %sh{
file=$(mktemp -d -t kak-spell.XXXXXXXX)/buffer file=$(mktemp -d -t kak-spell.XXXXXXXX)/buffer
echo "write ${file}" printf %s "write ${file}"
echo "set buffer spell_tmp_file ${file}" printf %s "set buffer spell_tmp_file ${file}"
} }
%sh{ %sh{
if [ $# -ge 1 ]; then if [ $# -ge 1 ]; then
if [ ${#1} -ne 2 -a ${#1} -ne 5 ]; then if [ ${#1} -ne 2 -a ${#1} -ne 5 ]; then
echo "echo -color Error Invalid language code (examples of expected format: en, en_US, en-US)" printf %s "echo -color Error Invalid language code (examples of expected format: en, en_US, en-US)"
rm -r $(dirname $kak_opt_spell_tmp_file) rm -r $(dirname $kak_opt_spell_tmp_file)
exit 1 exit 1
else else
@ -31,14 +31,14 @@ def -params ..1 spell -docstring "Check spelling of the current buffer with aspe
word=$(printf %s "$line" | cut -d ' ' -f 2) word=$(printf %s "$line" | cut -d ' ' -f 2)
begin=${begin:-$(printf %s "$line" | cut -d ' ' -f 3)} begin=${begin:-$(printf %s "$line" | cut -d ' ' -f 3)}
end=$((begin + ${#word})) end=$((begin + ${#word}))
# echo "echo -debug -- line: $line_num, word: $word, begin: $begin, end: $end" # printf %s "echo -debug -- line: $line_num, word: $word, begin: $begin, end: $end"
regions="$regions:$line_num.$begin,$line_num.$end|Error" regions="$regions:$line_num.$begin,$line_num.$end|Error"
;; ;;
'') ((++line_num)) ;; '') ((++line_num)) ;;
*) ;; *) ;;
esac esac
done done
echo "set buffer spell_regions %{$regions}" printf %s "set buffer spell_regions %{$regions}"
} }
rm -r $(dirname $kak_opt_spell_tmp_file) rm -r $(dirname $kak_opt_spell_tmp_file)
} }

View File

@ -218,10 +218,10 @@ def -hidden _c-family-insert-include-guards %{
%sh{ %sh{
case "${kak_opt_c_include_guard_style,,}" in case "${kak_opt_c_include_guard_style,,}" in
ifdef) ifdef)
echo "exec ggi<c-r>%<ret><esc>ggxs\.<ret>c_<esc><space>A_INCLUDED<esc>ggxyppI#ifndef<space><esc>jI#define<space><esc>jI#endif<space>//<space><esc>O<esc>" printf %s "exec ggi<c-r>%<ret><esc>ggxs\.<ret>c_<esc><space>A_INCLUDED<esc>ggxyppI#ifndef<space><esc>jI#define<space><esc>jI#endif<space>//<space><esc>O<esc>"
;; ;;
pragma) pragma)
echo "exec ggi#pragma<space>once<esc>" printf %s "exec ggi#pragma<space>once<esc>"
;; ;;
*);; *);;
esac esac
@ -257,13 +257,13 @@ def c-family-alternative-file -docstring "Jump to the alternate file (header/imp
done done
;; ;;
*) *)
echo "echo -color Error 'extension not recognized'" printf %s "echo -color Error 'extension not recognized'"
exit exit
;; ;;
esac esac
if [ -f ${altname} ]; then if [ -f ${altname} ]; then
echo "edit '${altname}'" printf %s "edit '${altname}'"
else else
echo "echo -color Error 'alternative file not found'" printf %s "echo -color Error 'alternative file not found'"
fi fi
}} }}

View File

@ -8,18 +8,18 @@ def comment-selection -docstring "Comment/uncomment the current selection" %{
%sh{ %sh{
function exec_proof { function exec_proof {
## Replace the '<' sign that is interpreted differently in `exec` ## Replace the '<' sign that is interpreted differently in `exec`
echo "$@" | sed -r 's,<,<lt>,g' printf %s "$@" | sed -r 's,<,<lt>,g'
} }
readonly opening=$(exec_proof "${kak_opt_comment_selection_chars%%:*}") readonly opening=$(exec_proof "${kak_opt_comment_selection_chars%%:*}")
readonly closing=$(exec_proof "${kak_opt_comment_selection_chars##*:}") readonly closing=$(exec_proof "${kak_opt_comment_selection_chars##*:}")
if [ -z "${opening}" -o -z "${closing}" ]; then if [ -z "${opening}" -o -z "${closing}" ]; then
echo "The \`comment_selection_chars\` variable is empty, couldn't comment the selection" >&2 printf %s "The \`comment_selection_chars\` variable is empty, couldn't comment the selection" >&2
exit exit
fi fi
echo "try %{ printf %s "try %{
## The selection is empty ## The selection is empty
exec -draft %{<a-K>\A[\h\v\n]*\z<ret>} exec -draft %{<a-K>\A[\h\v\n]*\z<ret>}
@ -43,11 +43,11 @@ def comment-line -docstring "Comment/uncomment the current line" %{
readonly opening_escaped="\Q${opening}\E" readonly opening_escaped="\Q${opening}\E"
if [ -z "${opening}" ]; then if [ -z "${opening}" ]; then
echo "The \`comment_line_chars\` variable is empty, couldn't comment the line" >&2 printf %s "The \`comment_line_chars\` variable is empty, couldn't comment the line" >&2
exit exit
fi fi
echo " printf %s "
## Select the content of the line, without indentation ## Select the content of the line, without indentation
exec %{I<esc><a-l>} exec %{I<esc><a-l>}

View File

@ -10,7 +10,7 @@ def -hidden -params 1..2 _doc-open %{
rm ${manout} rm ${manout}
if [ "${retval}" -eq 0 ]; then if [ "${retval}" -eq 0 ]; then
echo " printf %s "
edit! -scratch '*doc*' edit! -scratch '*doc*'
exec |cat<space>${colout}<ret>gg exec |cat<space>${colout}<ret>gg
nop %sh{rm ${colout}} nop %sh{rm ${colout}}
@ -19,10 +19,10 @@ def -hidden -params 1..2 _doc-open %{
if [ $# -gt 1 ]; then if [ $# -gt 1 ]; then
needle=$(printf %s "$2" | sed 's,<,<lt>,g') needle=$(printf %s "$2" | sed 's,<,<lt>,g')
echo "try %{ exec '%<a-s><a-k>(?i)^\h+[^\n]*?\Q${needle}\E<ret>\'' } catch %{ exec <space>gg }" printf %s "try %{ exec '%<a-s><a-k>(?i)^\h+[^\n]*?\Q${needle}\E<ret>\'' } catch %{ exec <space>gg }"
fi fi
else else
echo "echo -color Error %{doc '$@' failed: see *debug* buffer for details}" printf %s "echo -color Error %{doc '$@' failed: see *debug* buffer for details}"
rm ${colout} rm ${colout}
fi fi
} }
@ -31,7 +31,7 @@ def -hidden -params 1..2 _doc-open %{
def -params 1..2 \ def -params 1..2 \
-shell-completion %{ -shell-completion %{
find "${kak_runtime}/../doc/kak/manpages/" -type f -iname "*$@*.gz" -printf '%f\n' | while read l; do find "${kak_runtime}/../doc/kak/manpages/" -type f -iname "*$@*.gz" -printf '%f\n' | while read l; do
echo "${l%.*}" printf %s "${l%.*}"
done done
} \ } \
doc -docstring "Open a buffer containing the documentation about a given subject" %{ doc -docstring "Open a buffer containing the documentation about a given subject" %{
@ -40,10 +40,10 @@ def -params 1..2 \
shift shift
if [ ! -f "${PATH_DOC}" ]; then if [ ! -f "${PATH_DOC}" ]; then
echo "echo -color Error No such doc file: ${PATH_DOC}" printf %s "echo -color Error No such doc file: ${PATH_DOC}"
exit exit
fi fi
echo "eval -try-client %opt{docsclient} _doc-open ${PATH_DOC} $@" printf %s "eval -try-client %opt{docsclient} _doc-open ${PATH_DOC} $@"
} }
} }

View File

@ -6,9 +6,9 @@ def format -docstring "Format the entire buffer with an external utility" %{
readonly x=$((kak_cursor_column - 1)) readonly x=$((kak_cursor_column - 1))
readonly y="${kak_cursor_line}" readonly y="${kak_cursor_line}"
echo "exec -draft %{%|${kak_opt_formatcmd// /<space>}<ret>}" printf %s "exec -draft %{%|${kak_opt_formatcmd// /<space>}<ret>}"
## Try to restore the position of the cursor as it was prior to formatting ## Try to restore the position of the cursor as it was prior to formatting
echo "exec gg ${y}g ${x}l" printf %s "exec gg ${y}g ${x}l"
fi fi
} }
} }

View File

@ -12,7 +12,7 @@ def -params .. -file-completion \
( ${kak_opt_grepcmd} "${kak_selection}" | tr -d '\r' > ${output} 2>&1 ) > /dev/null 2>&1 < /dev/null & ( ${kak_opt_grepcmd} "${kak_selection}" | tr -d '\r' > ${output} 2>&1 ) > /dev/null 2>&1 < /dev/null &
fi fi
echo "eval -try-client '$kak_opt_toolsclient' %{ printf %s "eval -try-client '$kak_opt_toolsclient' %{
edit! -fifo ${output} -scroll *grep* edit! -fifo ${output} -scroll *grep*
set buffer filetype grep set buffer filetype grep
set buffer _grep_current_line 0 set buffer _grep_current_line 0

View File

@ -7,7 +7,7 @@ def -params .. make -docstring "Make utility wrapper" %{ %sh{
mkfifo ${output} mkfifo ${output}
( eval ${kak_opt_makecmd} "$@" > ${output} 2>&1 ) > /dev/null 2>&1 < /dev/null & ( eval ${kak_opt_makecmd} "$@" > ${output} 2>&1 ) > /dev/null 2>&1 < /dev/null &
echo "eval -try-client '$kak_opt_toolsclient' %{ printf %s "eval -try-client '$kak_opt_toolsclient' %{
edit! -fifo ${output} -scroll *make* edit! -fifo ${output} -scroll *make*
set buffer filetype make set buffer filetype make
set buffer _make_current_error_line 0 set buffer _make_current_error_line 0

View File

@ -25,25 +25,25 @@ def -hidden -params .. _man %{ %sh{
col -b -x > ${colout} < ${manout} col -b -x > ${colout} < ${manout}
rm ${manout} rm ${manout}
if [ "${retval}" -eq 0 ]; then if [ "${retval}" -eq 0 ]; then
echo "edit! -scratch '*man*' printf %s "edit! -scratch '*man*'
exec |cat<space>${colout}<ret>gk exec |cat<space>${colout}<ret>gk
nop %sh{rm ${colout}} nop %sh{rm ${colout}}
set buffer filetype man" set buffer filetype man"
else else
echo "echo -color Error %{man '$@' failed: see *debug* buffer for details }" printf %s "echo -color Error %{man '$@' failed: see *debug* buffer for details }"
rm ${colout} rm ${colout}
fi fi
} } } }
def -params .. \ def -params .. \
-shell-completion %{ -shell-completion %{
prefix=$(echo "$1" | cut -c1-${kak_pos_in_token} 2>/dev/null) prefix=$(printf %s "$1" | cut -c1-${kak_pos_in_token} 2>/dev/null)
for page in /usr/share/man/*/${prefix}*.[1-8]*; do for page in /usr/share/man/*/${prefix}*.[1-8]*; do
candidate=$(basename ${page%%.[1-8]*}) candidate=$(basename ${page%%.[1-8]*})
pagenum=$(printf %s "$page" | sed -r 's,^.+/.+\.([1-8][^.]*)\..+$,\1,') pagenum=$(printf %s "$page" | sed -r 's,^.+/.+\.([1-8][^.]*)\..+$,\1,')
case $candidate in case $candidate in
*\*) ;; *\*) ;;
*) echo $candidate\($pagenum\);; *) printf %s $candidate\($pagenum\);;
esac esac
done done
} \ } \
@ -56,5 +56,5 @@ def -params .. \
subject=${subject%%\(*} subject=${subject%%\(*}
fi fi
echo "eval -collapse-jumps -try-client %opt{docsclient} _man $pagenum $subject" printf %s "eval -collapse-jumps -try-client %opt{docsclient} _man $pagenum $subject"
} } } }

View File

@ -5,8 +5,8 @@
hook global KakBegin .* %{ hook global KakBegin .* %{
%sh{ %sh{
if [ -n "$TMUX" ]; then if [ -n "$TMUX" ]; then
echo "alias global focus tmux-focus" printf %s "alias global focus tmux-focus"
echo "alias global new tmux-new-horizontal" printf %s "alias global new tmux-new-horizontal"
fi fi
} }
} }
@ -15,7 +15,7 @@ hook global KakBegin .* %{
def -hidden -params 1.. tmux-new-impl %{ def -hidden -params 1.. tmux-new-impl %{
%sh{ %sh{
if [ -z "$TMUX" ]; then if [ -z "$TMUX" ]; then
echo "echo -color Error This command is only available in a tmux session" printf %s "echo -color Error This command is only available in a tmux session"
exit exit
fi fi
tmux_args="$1" tmux_args="$1"
@ -41,9 +41,9 @@ def -docstring "focus given client" \
-params 0..1 -client-completion \ -params 0..1 -client-completion \
tmux-focus %{ %sh{ tmux-focus %{ %sh{
if [ $# -gt 1 ]; then if [ $# -gt 1 ]; then
echo "echo -color Error 'too many arguments, use focus [client]'" printf %s "echo -color Error 'too many arguments, use focus [client]'"
elif [ $# -eq 1 ]; then elif [ $# -eq 1 ]; then
echo "eval -client '$1' focus" printf %s "eval -client '$1' focus"
elif [ -n "${kak_client_env_TMUX}" ]; then elif [ -n "${kak_client_env_TMUX}" ]; then
TMUX="${kak_client_env_TMUX}" tmux select-pane -t "${kak_client_env_TMUX_PANE}" > /dev/null TMUX="${kak_client_env_TMUX}" tmux select-pane -t "${kak_client_env_TMUX_PANE}" > /dev/null
fi fi

View File

@ -23,7 +23,7 @@ def -docstring 'create a new kak client for current session' \
-command-completion \ -command-completion \
x11-new %{ %sh{ x11-new %{ %sh{
if [ -z "${kak_opt_termcmd}" ]; then if [ -z "${kak_opt_termcmd}" ]; then
echo "echo -color Error 'termcmd option is not set'" printf %s "echo -color Error 'termcmd option is not set'"
exit exit
fi fi
if [ $# -ne 0 ]; then kakoune_params="-e '$@'"; fi if [ $# -ne 0 ]; then kakoune_params="-e '$@'"; fi
@ -34,9 +34,9 @@ def -docstring 'focus given client\'s window' \
-params 0..1 -client-completion \ -params 0..1 -client-completion \
x11-focus %{ %sh{ x11-focus %{ %sh{
if [ $# -gt 1 ]; then if [ $# -gt 1 ]; then
echo "echo -color Error 'too many arguments, use focus [client]'" printf %s "echo -color Error 'too many arguments, use focus [client]'"
elif [ $# -eq 1 ]; then elif [ $# -eq 1 ]; then
echo "eval -client '$1' focus" printf %s "eval -client '$1' focus"
else else
xdotool windowactivate $kak_client_env_WINDOWID > /dev/null xdotool windowactivate $kak_client_env_WINDOWID > /dev/null
fi fi

View File

@ -14,12 +14,12 @@ def autorestore-restore-buffer -docstring "Restore the backup for the current fi
latest_backup_path=$(find "${buffer_dirname}" -maxdepth 1 -type f -readable -newer "${kak_bufname}" -name "\.${buffer_basename}\.kak\.*" -printf '%A@/%p\n' 2>/dev/null \ latest_backup_path=$(find "${buffer_dirname}" -maxdepth 1 -type f -readable -newer "${kak_bufname}" -name "\.${buffer_basename}\.kak\.*" -printf '%A@/%p\n' 2>/dev/null \
| sort -n -t. -k1 | sed -nr 's/^[^\/]+\///;$p') | sort -n -t. -k1 | sed -nr 's/^[^\/]+\///;$p')
if [ -z "${latest_backup_path}" ]; then if [ -z "${latest_backup_path}" ]; then
echo "eval -draft %{ autorestore-purge-backups }"; printf %s "eval -draft %{ autorestore-purge-backups }";
exit; exit;
fi fi
## Replace the content of the buffer with the content of the backup file ## Replace the content of the buffer with the content of the backup file
echo " printf %s "
exec -draft %{ %d!cat<space>${latest_backup_path}<ret>d } exec -draft %{ %d!cat<space>${latest_backup_path}<ret>d }
echo -color Information 'Backup restored' echo -color Information 'Backup restored'
" "
@ -28,7 +28,7 @@ def autorestore-restore-buffer -docstring "Restore the backup for the current fi
## the current buffer has been saved ## the current buffer has been saved
## If the autorestore_purge_restored option has been unset right after the ## If the autorestore_purge_restored option has been unset right after the
## buffer was restored, do not remove the backup ## buffer was restored, do not remove the backup
echo " printf %s "
hook -group autorestore global BufWritePost (.+/)?${kak_bufname} %{ hook -group autorestore global BufWritePost (.+/)?${kak_bufname} %{
nop %sh{ nop %sh{
if [ \"\${kak_opt_autorestore_purge_restored}\" = true ]; then if [ \"\${kak_opt_autorestore_purge_restored}\" = true ]; then

View File

@ -9,14 +9,14 @@ def clang-parse -params 0..1 -docstring "Parse the contents of the current buffe
%sh{ %sh{
dir=$(mktemp -d -t kak-clang.XXXXXXXX) dir=$(mktemp -d -t kak-clang.XXXXXXXX)
mkfifo ${dir}/fifo mkfifo ${dir}/fifo
echo "set buffer clang_tmp_dir ${dir}" printf %s "set buffer clang_tmp_dir ${dir}"
echo "write ${dir}/buf" printf %s "write ${dir}/buf"
} }
# end the previous %sh{} so that its output gets interpreted by kakoune # end the previous %sh{} so that its output gets interpreted by kakoune
# before launching the following as a background task. # before launching the following as a background task.
%sh{ %sh{
dir=${kak_opt_clang_tmp_dir} dir=${kak_opt_clang_tmp_dir}
echo "eval -draft %{ printf %s "eval -draft %{
edit! -fifo ${dir}/fifo *clang-output* edit! -fifo ${dir}/fifo *clang-output*
set buffer filetype make set buffer filetype make
set buffer _make_current_error_line 0 set buffer _make_current_error_line 0
@ -72,11 +72,11 @@ def clang-parse -params 0..1 -docstring "Parse the contents of the current buffe
print id "|" docstrings[id] "|" menu print id "|" docstrings[id] "|" menu
} }
}' | paste -s -d ':' | sed -e "s/\\\\n/\\n/g; s/'/\\\\'/g") }' | paste -s -d ':' | sed -e "s/\\\\n/\\n/g; s/'/\\\\'/g")
echo "eval -client ${kak_client} echo 'clang completion done' printf %s "eval -client ${kak_client} echo 'clang completion done'
set 'buffer=${kak_buffile}' clang_completions '${header}:${compl}'" | kak -p ${kak_session} set 'buffer=${kak_buffile}' clang_completions '${header}:${compl}'" | kak -p ${kak_session}
else else
clang++ -x ${ft} -fsyntax-only ${kak_opt_clang_options} - < ${dir}/buf 2> ${dir}/stderr clang++ -x ${ft} -fsyntax-only ${kak_opt_clang_options} - < ${dir}/buf 2> ${dir}/stderr
echo "eval -client ${kak_client} echo 'clang parsing done'" | kak -p ${kak_session} printf %s "eval -client ${kak_client} echo 'clang parsing done'" | kak -p ${kak_session}
fi fi
flags=$(cat ${dir}/stderr | sed -rne " flags=$(cat ${dir}/stderr | sed -rne "
@ -90,7 +90,7 @@ def clang-parse -params 0..1 -docstring "Parse the contents of the current buffe
sed -e "s|<stdin>|${kak_bufname}|g" < ${dir}/stderr > ${dir}/fifo sed -e "s|<stdin>|${kak_bufname}|g" < ${dir}/stderr > ${dir}/fifo
echo "set 'buffer=${kak_buffile}' clang_flags %{${kak_timestamp}:${flags}} printf %s "set 'buffer=${kak_buffile}' clang_flags %{${kak_timestamp}:${flags}}
set 'buffer=${kak_buffile}' clang_errors '${errors}'" | kak -p ${kak_session} set 'buffer=${kak_buffile}' clang_errors '${errors}'" | kak -p ${kak_session}
) > /dev/null 2>&1 < /dev/null & ) > /dev/null 2>&1 < /dev/null &
} }
@ -102,9 +102,14 @@ def -hidden clang-show-completion-info %[ try %[
eval -draft %[ eval -draft %[
exec '<space>{(<a-k>^\(<ret>b' exec '<space>{(<a-k>^\(<ret>b'
%sh[ %sh[
<<<<<<< f877c388fea0e794f663d62e3508c5d11832601e
desc=$(echo "${kak_opt_clang_completions}" | sed -ne "{ s/\([^\\]\):/\1\n/g }; /^${kak_selection}@/ { s/^[^@]\+@//; s/@.*$//; s/\\\:/:/g; P }; D") desc=$(echo "${kak_opt_clang_completions}" | sed -ne "{ s/\([^\\]\):/\1\n/g }; /^${kak_selection}@/ { s/^[^@]\+@//; s/@.*$//; s/\\\:/:/g; P }; D")
=======
# desc=$(printf %s "${kak_opt_clang_completions}" | sed -e 's/\([^\\]\):/\1\n/g;' | sed -ne "/^${kak_selection}@/ { s/^[^@]\+@//; s/@.*$//; s/\\:/:/g; p }")
desc=$(printf %s "${kak_opt_clang_completions}" | sed -ne "{ s/\([^\\]\):/\1\n/g }; /^${kak_selection}@/ { s/^[^@]\+@//; s/@.*$//; s/\\\:/:/g; P }; D")
>>>>>>> Replace non POSIX calls to `echo` with `printf %s`
if [ -n "$desc" ]; then if [ -n "$desc" ]; then
echo "eval -client $kak_client %{info -anchor ${kak_cursor_line}.${kak_cursor_column} -placement above %{${desc}}}" printf %s "eval -client $kak_client %{info -anchor ${kak_cursor_line}.${kak_cursor_column} -placement above %{${desc}}}"
fi fi
] ] ] ]
] ] ] ]
@ -129,9 +134,15 @@ def clang-disable-autocomplete -docstring "Disable automatic clang completion" %
} }
def -hidden clang-show-error-info %{ %sh{ def -hidden clang-show-error-info %{ %sh{
<<<<<<< f877c388fea0e794f663d62e3508c5d11832601e
desc=$(printf %s "${kak_opt_clang_errors}" | sed -ne "/^${kak_cursor_line},.*/ { s/^[[:digit:]]\+,//g; s/'/\\\\'/g; p }") desc=$(printf %s "${kak_opt_clang_errors}" | sed -ne "/^${kak_cursor_line},.*/ { s/^[[:digit:]]\+,//g; s/'/\\\\'/g; p }")
if [ -n "$desc" ]; then if [ -n "$desc" ]; then
echo "info -anchor ${kak_cursor_line}.${kak_cursor_column} '${desc}'" echo "info -anchor ${kak_cursor_line}.${kak_cursor_column} '${desc}'"
=======
printf %s "${kak_opt_clang_errors}" | grep "^${kak_cursor_line},.*" | if read line; then
desc=$(printf %s "${line}" | sed -e "s/^[[:digit:]]\+,//g; s/'/\\\\'/g")
printf %s "info -anchor ${kak_cursor_line}.${kak_cursor_column} '${desc}'"
>>>>>>> Replace non POSIX calls to `echo` with `printf %s`
fi fi
} } } }
@ -158,9 +169,9 @@ def clang-diagnostics-next -docstring "Jump to the next line that contains an er
done done
line=$((line == -1 ? first_line : line)) line=$((line == -1 ? first_line : line))
if [ ${line} -ne -1 ]; then if [ ${line} -ne -1 ]; then
echo "exec ${line} g" printf %s "exec ${line} g"
else else
echo 'echo -color Error no next clang diagnostic' printf %s 'echo -color Error no next clang diagnostic'
fi fi
) )
} } } }

View File

@ -1,6 +1,6 @@
def editorconfig-load -docstring "Set indentation options according to editorconfig file" %{ def editorconfig-load -docstring "Set indentation options according to editorconfig file" %{
%sh{ %sh{
command -v editorconfig >/dev/null 2>&1 || { echo "echo -color Error The editorconfig tool could not be found"; exit 1; } command -v editorconfig >/dev/null 2>&1 || { printf %s "echo -color Error The editorconfig tool could not be found"; exit 1; }
editorconfig $kak_buffile | awk -F= -- \ editorconfig $kak_buffile | awk -F= -- \
'{ '{
if ($1 == "indent_style" && $2 == "tab") { if ($1 == "indent_style" && $2 == "tab") {

View File

@ -29,7 +29,7 @@ def -params 1.. \
-docstring %sh{printf "%%{Git wrapping helper\navailable commands:\n add\n rm\n blame\n commit\n checkout\n diff\n hide-blame\n log\n show\n show-diff\n status\n update-diff}"} \ -docstring %sh{printf "%%{Git wrapping helper\navailable commands:\n add\n rm\n blame\n commit\n checkout\n diff\n hide-blame\n log\n show\n show-diff\n status\n update-diff}"} \
-shell-completion %{ -shell-completion %{
shift $(expr ${kak_token_to_complete}) shift $(expr ${kak_token_to_complete})
prefix=$(echo "${1}" | cut -c1-${kak_pos_in_token} 2>/dev/null) prefix=$(printf %s "${1}" | cut -c1-${kak_pos_in_token} 2>/dev/null)
( (
for cmd in add rm blame commit checkout diff hide-blame log show show-diff status update-diff; do for cmd in add rm blame commit checkout diff hide-blame log show show-diff status update-diff; do
expr "${cmd}" : "^\(${prefix}.*\)$" expr "${cmd}" : "^\(${prefix}.*\)$"
@ -48,7 +48,7 @@ def -params 1.. \
mkfifo ${output} mkfifo ${output}
( git "$@" > ${output} 2>&1 ) > /dev/null 2>&1 < /dev/null & ( git "$@" > ${output} 2>&1 ) > /dev/null 2>&1 < /dev/null &
echo "eval -try-client '$kak_opt_docsclient' %{ printf %s "eval -try-client '$kak_opt_docsclient' %{
edit! -fifo ${output} *git* edit! -fifo ${output} *git*
set buffer filetype '${filetype}' set buffer filetype '${filetype}'
hook -group fifo buffer BufCloseFifo .* %{ hook -group fifo buffer BufCloseFifo .* %{
@ -60,7 +60,7 @@ def -params 1.. \
run_git_blame() { run_git_blame() {
( (
echo "eval -client '$kak_client' %{ printf %s "eval -client '$kak_client' %{
try %{ addhl flag_lines GitBlame git_blame_flags } try %{ addhl flag_lines GitBlame git_blame_flags }
set buffer=$kak_bufname git_blame_flags '$kak_timestamp' set buffer=$kak_bufname git_blame_flags '$kak_timestamp'
}" | kak -p ${kak_session} }" | kak -p ${kak_session}
@ -120,9 +120,9 @@ def -params 1.. \
# Handle case where message needs not to be edited # Handle case where message needs not to be edited
if grep -E -q -e "-m|-F|-C|--message=.*|--file=.*|--reuse-message=.*|--no-edit"; then if grep -E -q -e "-m|-F|-C|--message=.*|--file=.*|--reuse-message=.*|--no-edit"; then
if git commit "$@" > /dev/null 2>&1; then if git commit "$@" > /dev/null 2>&1; then
echo 'echo -color Information Commit succeeded' printf %s 'echo -color Information Commit succeeded'
else else
echo 'echo -color Error Commit failed' printf %s 'echo -color Error Commit failed'
fi fi
exit exit
fi <<-EOF fi <<-EOF
@ -132,13 +132,13 @@ def -params 1.. \
# fails, and generate COMMIT_EDITMSG # fails, and generate COMMIT_EDITMSG
GIT_EDITOR='' EDITOR='' git commit > /dev/null 2>&1 GIT_EDITOR='' EDITOR='' git commit > /dev/null 2>&1
msgfile="$(git rev-parse --git-dir)/COMMIT_EDITMSG" msgfile="$(git rev-parse --git-dir)/COMMIT_EDITMSG"
echo "edit '$msgfile' printf %s "edit '$msgfile'
hook buffer BufWritePost '.*\Q$msgfile\E' %{ %sh{ hook buffer BufWritePost '.*\Q$msgfile\E' %{ %sh{
if git commit -F '$msgfile' --cleanup=strip $@ > /dev/null; then if git commit -F '$msgfile' --cleanup=strip $@ > /dev/null; then
echo 'eval -client $kak_client echo -color Information Commit succeeded' printf %s 'eval -client $kak_client echo -color Information Commit succeeded'
echo 'delbuf' printf %s 'delbuf'
else else
echo 'eval -client $kak_client echo -color Error Commit failed' printf %s 'eval -client $kak_client echo -color Error Commit failed'
fi fi
} }" } }"
} }
@ -147,13 +147,13 @@ def -params 1.. \
show|log|diff|status) show_git_cmd_output "$@" ;; show|log|diff|status) show_git_cmd_output "$@" ;;
blame) shift; run_git_blame "$@" ;; blame) shift; run_git_blame "$@" ;;
hide-blame) hide-blame)
echo "try %{ printf %s "try %{
set buffer=$kak_bufname git_blame_flags '' set buffer=$kak_bufname git_blame_flags ''
rmhl hlflags_git_blame_flags rmhl hlflags_git_blame_flags
}" }"
;; ;;
show-diff) show-diff)
echo "try %{ addhl flag_lines default,black git_diff_flags }" printf %s "try %{ addhl flag_lines default,black git_diff_flags }"
update_diff update_diff
;; ;;
update-diff) update_diff ;; update-diff) update_diff ;;
@ -165,19 +165,19 @@ def -params 1.. \
add) add)
name="${2:-${kak_buffile}}" name="${2:-${kak_buffile}}"
if git add -- "${name}" > /dev/null 2>&1; then if git add -- "${name}" > /dev/null 2>&1; then
echo "echo -color Information 'git: added ${name}'" printf %s "echo -color Information 'git: added ${name}'"
else else
echo "echo -color Error 'git: unable to add ${name}'" printf %s "echo -color Error 'git: unable to add ${name}'"
fi fi
;; ;;
rm) rm)
name="${2:-${kak_buffile}}" name="${2:-${kak_buffile}}"
if git rm -- "${name}" > /dev/null 2>&1; then if git rm -- "${name}" > /dev/null 2>&1; then
echo "echo -color Information 'git: removed ${name}'" printf %s "echo -color Information 'git: removed ${name}'"
else else
echo "echo -color Error 'git: unable to remove ${name}'" printf %s "echo -color Error 'git: unable to remove ${name}'"
fi fi
;; ;;
*) echo "echo -color Error %{unknown git command '$1'}"; exit ;; *) printf %s "echo -color Error %{unknown git command '$1'}"; exit ;;
esac esac
}} }}

View File

@ -6,12 +6,12 @@ def jedi-complete -docstring "Complete the current selection with jedi" %{
%sh{ %sh{
dir=$(mktemp -d -t kak-jedi.XXXXXXXX) dir=$(mktemp -d -t kak-jedi.XXXXXXXX)
mkfifo ${dir}/fifo mkfifo ${dir}/fifo
echo "set buffer jedi_tmp_dir ${dir}" printf %s "set buffer jedi_tmp_dir ${dir}"
echo "write ${dir}/buf" printf %s "write ${dir}/buf"
} }
%sh{ %sh{
dir=${kak_opt_jedi_tmp_dir} dir=${kak_opt_jedi_tmp_dir}
echo "eval -draft %{ edit! -fifo ${dir}/fifo *jedi-output* }" printf %s "eval -draft %{ edit! -fifo ${dir}/fifo *jedi-output* }"
( (
cd $(dirname ${kak_buffile}) cd $(dirname ${kak_buffile})
header="${kak_cursor_line}.${kak_cursor_column}@${kak_timestamp}" header="${kak_cursor_line}.${kak_cursor_column}@${kak_timestamp}"

View File

@ -35,17 +35,17 @@ def -hidden _modeline-parse %{
case "${value}" in case "${value}" in
unix) tr="eolformat lf";; unix) tr="eolformat lf";;
dos) tr="eolformat crlf";; dos) tr="eolformat crlf";;
*) echo "Unsupported file format: ${value}" >&2;; *) printf %s "Unsupported file format: ${value}" >&2;;
esac esac
;; ;;
ft) ;& ft) ;&
filetype) tr="filetype ${value}";; filetype) tr="filetype ${value}";;
bomb) tr="BOM utf8";; bomb) tr="BOM utf8";;
nobomb) tr="BOM none";; nobomb) tr="BOM none";;
*) echo "Unsupported vim variable: ${key}" >&2;; *) printf %s "Unsupported vim variable: ${key}" >&2;;
esac esac
[ -n "${tr}" ] && echo "set buffer ${tr}" [ -n "${tr}" ] && printf %s "set buffer ${tr}"
} }
# Pass a few whitelisted options to kakoune directly # Pass a few whitelisted options to kakoune directly
@ -64,11 +64,11 @@ def -hidden _modeline-parse %{
) )
grep -qw "${key}" <<< "${OPTS_ALLOWED[@]}" || { grep -qw "${key}" <<< "${OPTS_ALLOWED[@]}" || {
echo "Unsupported kakoune variable: ${key}" >&2; printf %s "Unsupported kakoune variable: ${key}" >&2;
return; return;
} }
echo "set buffer ${key} ${value}" printf %s "set buffer ${key} ${value}"
} }
# The following subshell will keep the actual options of the modeline, and strip: # The following subshell will keep the actual options of the modeline, and strip:
@ -87,7 +87,7 @@ def -hidden _modeline-parse %{
*vim:*) type_selection="vim";; *vim:*) type_selection="vim";;
*kak:*) ;& *kak:*) ;&
*kakoune:*) type_selection="kakoune";; *kakoune:*) type_selection="kakoune";;
*) echo "echo -debug Unsupported modeline format";; *) printf %s "echo -debug Unsupported modeline format";;
esac esac
[ -n "${type_selection}" ] || exit 1 [ -n "${type_selection}" ] || exit 1
@ -100,7 +100,7 @@ def -hidden _modeline-parse %{
kakoune) tr=$(translate_opt_kakoune "${name_option}" "${value_option}");; kakoune) tr=$(translate_opt_kakoune "${name_option}" "${value_option}");;
esac esac
[ -n "${tr}" ] && echo "${tr}" [ -n "${tr}" ] && printf %s "${tr}"
done done
} }
} }

View File

@ -39,12 +39,12 @@ addhl -group /moon/code regex \b(and|break|catch|class|continue|do|else(if)?|exp
def moon-alternative-file -docstring 'Jump to the alternate file (implementation ↔ test)' %{ %sh{ def moon-alternative-file -docstring 'Jump to the alternate file (implementation ↔ test)' %{ %sh{
case $kak_buffile in case $kak_buffile in
*spec/*_spec.moon) *spec/*_spec.moon)
altfile=$(eval echo $(echo $kak_buffile | sed s+spec/+'*'/+';'s/_spec//)) altfile=$(eval printf %s $(printf %s $kak_buffile | sed s+spec/+'*'/+';'s/_spec//))
[ ! -f $altfile ] && echo "echo -color Error 'implementation file not found'" && exit [ ! -f $altfile ] && printf %s "echo -color Error 'implementation file not found'" && exit
;; ;;
*.moon) *.moon)
path=$kak_buffile path=$kak_buffile
dirs=$(while [ $path ]; do echo $path; path=${path%/*}; done | tail -n +2) dirs=$(while [ $path ]; do printf %s $path; path=${path%/*}; done | tail -n +2)
for dir in $dirs; do for dir in $dirs; do
altdir=$dir/spec altdir=$dir/spec
if [ -d $altdir ]; then if [ -d $altdir ]; then
@ -52,13 +52,13 @@ def moon-alternative-file -docstring 'Jump to the alternate file (implementation
break break
fi fi
done done
[ ! -d $altdir ] && echo "echo -color Error 'spec/ not found'" && exit [ ! -d $altdir ] && printf %s "echo -color Error 'spec/ not found'" && exit
;; ;;
*) *)
echo "echo -color Error 'alternative file not found'" && exit printf %s "echo -color Error 'alternative file not found'" && exit
;; ;;
esac esac
echo "edit $altfile" printf %s "edit $altfile"
}} }}
def -hidden _moon_filter_around_selections %{ def -hidden _moon_filter_around_selections %{

View File

@ -4,8 +4,8 @@
hook global KakBegin .* %{ hook global KakBegin .* %{
%sh{ %sh{
if [ -n "$TMUX" ]; then if [ -n "$TMUX" ]; then
echo "alias global repl tmux-repl-horizontal" printf %s "alias global repl tmux-repl-horizontal"
echo "alias global send-text tmux-send-text" printf %s "alias global send-text tmux-send-text"
fi fi
} }
} }
@ -13,7 +13,7 @@ hook global KakBegin .* %{
def -hidden -params 1..2 tmux-repl-impl %{ def -hidden -params 1..2 tmux-repl-impl %{
%sh{ %sh{
if [ -z "$TMUX" ]; then if [ -z "$TMUX" ]; then
echo "echo -color Error This command is only available in a tmux session" printf %s "echo -color Error This command is only available in a tmux session"
exit exit
fi fi
tmux_args="$1" tmux_args="$1"

View File

@ -4,7 +4,7 @@ def -docstring 'create a new window for repl interaction' \
-command-completion \ -command-completion \
x11-repl %{ %sh{ x11-repl %{ %sh{
if [ -z "${kak_opt_termcmd}" ]; then if [ -z "${kak_opt_termcmd}" ]; then
echo "echo -color Error 'termcmd option is not set'" printf %s "echo -color Error 'termcmd option is not set'"
exit exit
fi fi
if [ $# -eq 0 ]; then cmd="bash"; else cmd="$1"; fi if [ $# -eq 0 ]; then cmd="bash"; else cmd="$1"; fi
@ -13,7 +13,7 @@ def -docstring 'create a new window for repl interaction' \
def x11-send-text -docstring "send selected text to the repl window" %{ def x11-send-text -docstring "send selected text to the repl window" %{
nop %sh{ nop %sh{
echo "${kak_selection}" | xsel -i printf %s "${kak_selection}" | xsel -i
wid=$(xdotool getactivewindow) wid=$(xdotool getactivewindow)
xdotool search --name kak_repl_window windowactivate xdotool search --name kak_repl_window windowactivate
xdotool key --clearmodifiers "Shift+Insert" xdotool key --clearmodifiers "Shift+Insert"