diff options
| author | Akshay Nair <phenax5@gmail.com> | 2025-10-25 14:17:48 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2025-10-25 14:17:48 +0530 |
| commit | aded6f2aebaacfd2face07831a76b7a91f76127a (patch) | |
| tree | d8e97e99d56f8918f3dae54da2e4a3ce558d7260 /autoload/orgmode.kak | |
| parent | d8acf7b147b180c2333eb4122f28a4dd972cd402 (diff) | |
| download | kakoune-config-aded6f2aebaacfd2face07831a76b7a91f76127a.tar.gz kakoune-config-aded6f2aebaacfd2face07831a76b7a91f76127a.zip | |
Move orgmode out + faces changes
Diffstat (limited to 'autoload/orgmode.kak')
| -rw-r--r-- | autoload/orgmode.kak | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/autoload/orgmode.kak b/autoload/orgmode.kak new file mode 100644 index 0000000..7c44039 --- /dev/null +++ b/autoload/orgmode.kak @@ -0,0 +1,61 @@ +declare-user-mode org +hook global BufSetOption filetype=org %{ + map buffer normal <ret> ': orgmode-jump-link<ret>' -docstring 'Jump to link' + map buffer user o ': enter-user-mode org<ret>' -docstring 'Org mode' + map buffer org <tab> ': orgmode-toggle<ret>' -docstring 'Toggle checkbox/task' +} + +define-command orgmode-toggle %{ + evaluate-commands -save-regs '#/' %{ + try %{ orgmode-toggle-checkbox } catch %{ orgmode-toggle-task-state } catch %{ } + } +} + +define-command orgmode-jump-link %{ + # TODO: support multiple links in single line + evaluate-commands %{ try %{ + execute-keys ',xs\[\[([^\n\]]+)\]<ret>' + evaluate-commands %sh{ + [ -z "$kak_reg_1" ] && exit 0 + case "$kak_reg_1" in + https://*|http://*) xdg-open "$kak_reg_1" >/dev/null 2>&1 ;; + /*|~/*) echo "edit %{$kak_reg_1}" ;; + *) + current_path="${kak_buffile:-"$kak_bufname"}" + path="$(realpath -s "$(dirname "$kak_buffile")/$kak_reg_1")" + echo "edit %{$path}" + ;; + esac + } + } } +} + +define-command orgmode-toggle-checkbox %{ + evaluate-commands %{ + execute-keys ',xs^(\h*-\h+)\[([Xx\- ])\]<ret>' + evaluate-commands %sh{ + next="$kak_reg_2" + case "$kak_reg_2" in + X|x) next=" " ;; + -) next="X" ;; + *) next="-" ;; + esac + echo "execute-keys 'c<c-r>1[$next]<esc>'" + } + } +} + +define-command orgmode-toggle-task-state %{ + evaluate-commands %{ + execute-keys ',xs^(\*+\h+)(TODO|ACTIVE|DONE)?<ret>' + evaluate-commands %sh{ + next="TODO " # Add space at end when no state + case "$kak_reg_2" in + TODO) next="ACTIVE" ;; + ACTIVE) next="DONE" ;; + DONE) next="TODO" ;; + esac + echo "execute-keys 'c<c-r>1$next<esc>'" + } + } +} |
