From 7c524d8e209ea7b7f1a458ee90a0d27010329b60 Mon Sep 17 00:00:00 2001 From: Daniel Fichtinger Date: Wed, 21 May 2025 03:03:07 -0400 Subject: [PATCH] AutoYADM commit: 2025-05-21 03:03:07 --- .config/kak/autoload/filetype.kak | 57 +++++----- .config/kak/autoload/man.kak | 170 +++++++++++++++--------------- 2 files changed, 116 insertions(+), 111 deletions(-) diff --git a/.config/kak/autoload/filetype.kak b/.config/kak/autoload/filetype.kak index 2a5862a9..d6c79ddd 100644 --- a/.config/kak/autoload/filetype.kak +++ b/.config/kak/autoload/filetype.kak @@ -1,45 +1,50 @@ hook global WinSetOption filetype=python %{ - # set-option window expandtab true - # set-option window softtabstop 4 - set-option window formatcmd "ruff format -" - hook -group python-auto-format window BufWritePre .* format - hook -once -always WinSetOption filetype=.* %{ - unset-option window formatcmd - remove-hooks window python-auto-format - } + # set-option window expandtab true + # set-option window softtabstop 4 + set-option window formatcmd "ruff format -" + hook -group python-auto-format window BufWritePre .* format + hook -once -always WinSetOption filetype=.* %{ + unset-option window formatcmd + remove-hooks window python-auto-format + } } hook global WinSetOption filetype=go %{ - # set-option window expandtab false - # set-option window softtabstop 4 + # set-option window expandtab false + # set-option window softtabstop 4 } hook global WinSetOption filetype=kak %{ set-option window formatcmd "%val{config}/scripts/kakfmt.pl" - # set-option window expandtab false + # set-option window expandtab false } hook global WinSetOption filetype=typst %{ set-option buffer formatcmd "typstyle --wrap-text" - hook -group typst-auto-format window BufWritePre .* format - hook -once -always WinSetOption filetype=.* %{ - unset-option window formatcmd - remove-hooks window typst-auto-format - } + hook -group typst-auto-format window BufWritePre .* format + hook -once -always WinSetOption filetype=.* %{ + unset-option window formatcmd + remove-hooks window typst-auto-format + } } hook global WinSetOption filetype=fish %{ - set-option window formatcmd "fish_indent" + set-option window formatcmd "fish_indent" } hook global WinSetOption filetype=man %{ - try %{ - remove-highlighter window/number-lines - remove-highlighter window/show-whitespaces - ui-wrap-disable - } - execute-keys %sh{ - result=$((kak_window_height / 2 - 1)) - notify-send 'this' - printf '%d%s' "$result" 'j' + try %{ + remove-highlighter window/number-lines + remove-highlighter window/show-whitespaces + ui-wrap-disable + } + define-command mantest %{ + execute-keys %sh{ + result=$((kak_window_height / 2 - 1)) + notify-send 'this' + printf '%d%s' "$result" 'j' + } + } + hook window User manpageloaded %{ + mantest } } diff --git a/.config/kak/autoload/man.kak b/.config/kak/autoload/man.kak index 4c82c84a..4338ed2e 100644 --- a/.config/kak/autoload/man.kak +++ b/.config/kak/autoload/man.kak @@ -1,98 +1,99 @@ declare-option -docstring "name of the client in which documentation is to be displayed" \ - str docsclient +str docsclient declare-option -hidden str-list manpage hook -group man-highlight global WinSetOption filetype=man %{ - add-highlighter window/man-highlight group - # Sections - add-highlighter window/man-highlight/ regex ^\S.*?$ 0:title - # Subsections - add-highlighter window/man-highlight/ regex '^ {3}\S.*?$' 0:default+b - # Command line options - add-highlighter window/man-highlight/ regex '^ {7}-[^\s,]+(,\s+-[^\s,]+)*' 0:list - # References to other manpages - add-highlighter window/man-highlight/ regex [-a-zA-Z0-9_.]+\([a-z0-9]+\) 0:header + add-highlighter window/man-highlight group + # Sections + add-highlighter window/man-highlight/ regex ^\S.*?$ 0:title + # Subsections + add-highlighter window/man-highlight/ regex '^ {3}\S.*?$' 0:default+b + # Command line options + add-highlighter window/man-highlight/ regex '^ {7}-[^\s,]+(,\s+-[^\s,]+)*' 0:list + # References to other manpages + add-highlighter window/man-highlight/ regex [-a-zA-Z0-9_.]+\([a-z0-9]+\) 0:header - map window normal :man-jump + map window normal :man-jump - hook -once -always window WinSetOption filetype=.* %{ - remove-highlighter window/man-highlight - unmap window normal - } + hook -once -always window WinSetOption filetype=.* %{ + remove-highlighter window/man-highlight + unmap window normal + } } hook global WinSetOption filetype=man %{ - hook -group man-hooks window WinResize .* %{ man-impl %opt{manpage} } - hook -once -always window WinSetOption filetype=.* %{ remove-hooks window man-hooks } + hook -group man-hooks window WinResize .* %{ man-impl %opt{manpage} } + hook -once -always window WinSetOption filetype=.* %{ remove-hooks window man-hooks } } -define-command -hidden -params ..3 man-impl %{ evaluate-commands %sh{ - buffer_name="$1" - if [ -z "${buffer_name}" ]; then - exit - fi - shift - manout=$(mktemp "${TMPDIR:-/tmp}"/kak-man.XXXXXX) - manerr=$(mktemp "${TMPDIR:-/tmp}"/kak-man.XXXXXX) - colout=$(mktemp "${TMPDIR:-/tmp}"/kak-man.XXXXXX) - env MANWIDTH=${kak_window_range##* } man "$@" > "$manout" 2> "$manerr" - retval=$? - if command -v col >/dev/null; then - col -b -x > ${colout} < ${manout} - else - sed 's/.//g' > ${colout} < ${manout} - fi - rm ${manout} +define-command -hidden -params ..3 man-impl %{ + evaluate-commands %sh{ + buffer_name="$1" + if [ -z "${buffer_name}" ]; then + exit + fi + shift + manout=$(mktemp "${TMPDIR:-/tmp}"/kak-man.XXXXXX) + manerr=$(mktemp "${TMPDIR:-/tmp}"/kak-man.XXXXXX) + colout=$(mktemp "${TMPDIR:-/tmp}"/kak-man.XXXXXX) + env MANWIDTH=${kak_window_range##* } man "$@" > "$manout" 2> "$manerr" + retval=$? + if command -v col >/dev/null; then + col -b -x > ${colout} < ${manout} + else + sed 's/.//g' > ${colout} < ${manout} + fi + rm ${manout} - if [ "${retval}" -eq 0 ]; then - printf %s\\n " - edit -scratch %{*$buffer_name ${*}*} - execute-keys '%|cat${colout}gk' - nop %sh{ rm ${colout}; rm ${manerr} } - set-option buffer filetype man - set-option window manpage $buffer_name $* - " - else - printf ' - fail %%{%s} - nop %%sh{ rm "%s"; rm "%s" } - ' "$(cat "$manerr")" "${colout}" "${manerr}" - fi -} } + if [ "${retval}" -eq 0 ]; then + printf %s\\n " + edit -scratch %{*$buffer_name ${*}*} + execute-keys '%|cat${colout}gk' + nop %sh{ rm ${colout}; rm ${manerr} } + set-option buffer filetype man + set-option window manpage $buffer_name $* + " + else + printf ' + fail %%{%s} + nop %%sh{ rm "%s"; rm "%s" } + ' "$(cat "$manerr")" "${colout}" "${manerr}" + fi + } + trigger-user-hook manpageloaded +} # MAN COMMAND # TODO: REMOVE number lines and show whitespace highlighters! define-command -params ..1 \ - -shell-script-candidates %{ - find /usr/share/man/ $(printf %s "${MANPATH}" | - sed 's/:/ /') -name '*.[1-8]*' | - sed 's,^.*/\(.*\)\.\([1-8][a-zA-Z]*\).*$,\1(\2),' - } \ - -docstring %{ - man []: manpage viewer wrapper - If no argument is passed to the command, the selection will be used as page - The page can be a word, or a word directly followed by a section number between parenthesis, e.g. kak(1) - } man %{ evaluate-commands %sh{ - subject=${1-$kak_selection} +-shell-script-candidates %{ + find /usr/share/man/ $(printf %s "${MANPATH}" | + sed 's/:/ /') -name '*.[1-8]*' | + sed 's,^.*/\(.*\)\.\([1-8][a-zA-Z]*\).*$,\1(\2),' +} \ +-docstring %{ + man []: manpage viewer wrapper + If no argument is passed to the command, the selection will be used as page + The page can be a word, or a word directly followed by a section number between parenthesis, e.g. kak(1) +} man %{ evaluate-commands %sh{ + subject=${1-$kak_selection} - ## The completion suggestions display the page number, strip them if present - case "${subject}" in - *\([1-8]*\)) - pagenum="${subject##*\(}" - pagenum="${pagenum%\)}" - subject="${subject%%\(*}" - ;; - *) - pagenum="" - ;; - esac + ## The completion suggestions display the page number, strip them if present + case "${subject}" in + *\([1-8]*\)) + pagenum="${subject##*\(}" + pagenum="${pagenum%\)}" + subject="${subject%%\(*}" + ;; + *) + pagenum="" + ;; + esac - printf %s\\n "evaluate-commands -try-client %opt{docsclient} man-impl man $pagenum $subject" + printf %s\\n "evaluate-commands -try-client %opt{docsclient} man-impl man $pagenum $subject" } } - - # The following section of code enables a user # to go to next or previous man page links and to follow man page links, # for example, apropos(1), that would normally appear in SEE ALSO sections. @@ -102,22 +103,22 @@ define-command -params ..1 \ # Regex pattern defining a man page link. # Used for determining if a selection, which may just be a link, is a link. declare-option -hidden regex man_link1 \ - [\w_.:-]+\(\d[a-z]*\) +[\w_.:-]+\(\d[a-z]*\) # Same as above but with lookbehind and lookahead patterns. # Used for searching for a man page link. declare-option -hidden regex man_link2 \ - "(?:^|(?<=\W))%opt{man_link1}(?=\W)" +"(?:^|(?<=\W))%opt{man_link1}(?=\W)" # Define a useful command sequence for searching a given regex # and a given sequence of search keys. define-command -hidden man-search -params 2 %{ - set-register / %arg[1] - try %{ - execute-keys %arg[2] - } catch %{ - fail "Could not find man page link" - } + set-register / %arg[1] + try %{ + execute-keys %arg[2] + } catch %{ + fail "Could not find man page link" + } } define-command -docstring 'Go to next man page link' \ @@ -128,8 +129,8 @@ man-link-prev %{ man-search %opt[man_link2] } define-command -docstring 'Try to jump to a man page' \ man-jump %{ - try %{ execute-keys s %opt[man_link1] } catch %{ fail 'Not a valid man page link' } - try %{ man } catch %{ fail 'No man page link to follow' } + try %{ execute-keys s %opt[man_link1] } catch %{ fail 'Not a valid man page link' } + try %{ man } catch %{ fail 'No man page link to follow' } } # Suggested keymaps for a user mode @@ -139,4 +140,3 @@ map global man 'g' -docstring 'Jump to a man page using selected man page link' map global man 'j' -docstring 'Go to next man page link' :man-link-next map global man 'k' -docstring 'Go to previous man page link' :man-link-prev map global man 'm' -docstring 'Look up a man page' :man -