From 194b08cdcc238d1d926a20e0b789f1089450dbd5 Mon Sep 17 00:00:00 2001 From: Mathieu Ablasou Date: Wed, 25 Nov 2020 02:08:01 +0100 Subject: Add an :edit-search command --- rc/connect/commands/:edit-search | 25 +++++++++++++++++++++++++ rc/connect/modules/dmenu/commands/:dmenu-grep | 11 ++--------- rc/connect/modules/fzf/commands/:fzf-grep | 11 ++--------- rc/connect/modules/fzy/commands/:fzy-grep | 11 ++--------- rc/connect/modules/rofi/commands/:rofi-grep | 11 ++--------- rc/connect/modules/wofi/commands/:wofi-grep | 11 ++--------- 6 files changed, 35 insertions(+), 45 deletions(-) create mode 100755 rc/connect/commands/:edit-search diff --git a/rc/connect/commands/:edit-search b/rc/connect/commands/:edit-search new file mode 100755 index 0000000..903bd79 --- /dev/null +++ b/rc/connect/commands/:edit-search @@ -0,0 +1,25 @@ +#!/bin/sh + +# Open files from search result. +# +# Input format: ::: + +# Execute the following Kakoune commands. +# +# Input: ::: +# Output: +select_each_line='_' +select_search_fields='s^(.+):(\d+):(\d+):(.+)$' +save_selections='Z' +select_file_save_and_restore='1s"fZz' +select_line_save_and_restore='2s"faz' +select_column_save_and_restore='3s"faz' +select_data='"fz' +prepare_output='y%a' +delete_end_of_file='ged' + +kak -f "${select_each_line}${select_search_fields}${save_selections}${select_file_save_and_restore}${select_line_save_and_restore}${select_column_save_and_restore}${select_data}${prepare_output}${delete_end_of_file}" | + +while read file; read line; read column; do + :edit "$file" "+$line:$column" +done diff --git a/rc/connect/modules/dmenu/commands/:dmenu-grep b/rc/connect/modules/dmenu/commands/:dmenu-grep index cb02ed4..d6634ba 100755 --- a/rc/connect/modules/dmenu/commands/:dmenu-grep +++ b/rc/connect/modules/dmenu/commands/:dmenu-grep @@ -6,13 +6,6 @@ # Dependencies: # – ripgrep (https://github.com/BurntSushi/ripgrep) -rg --line-number --with-filename '.+' "$@" | +rg --column --with-filename '.+' "$@" | dmenu -l 20 -i -p 'Open files (search by content)' | - -while read line; do - # Output format: :: - file=${line%%:*} - line_number=${line#*:}; line_number=${line_number%%:*} - - :edit "$file" "+$line_number" -done +:edit-search diff --git a/rc/connect/modules/fzf/commands/:fzf-grep b/rc/connect/modules/fzf/commands/:fzf-grep index 41b1f89..8a1d52b 100755 --- a/rc/connect/modules/fzf/commands/:fzf-grep +++ b/rc/connect/modules/fzf/commands/:fzf-grep @@ -6,13 +6,6 @@ # Dependencies: # – ripgrep (https://github.com/BurntSushi/ripgrep) -rg --line-number --with-filename '.+' "$@" | +rg --column --with-filename '.+' "$@" | fzf --prompt='(g)>' | - -while read line; do - # Output format: :: - file=${line%%:*} - line_number=${line#*:}; line_number=${line_number%%:*} - - :edit "$file" "+$line_number" -done +:edit-search diff --git a/rc/connect/modules/fzy/commands/:fzy-grep b/rc/connect/modules/fzy/commands/:fzy-grep index 788a774..e6d17d4 100755 --- a/rc/connect/modules/fzy/commands/:fzy-grep +++ b/rc/connect/modules/fzy/commands/:fzy-grep @@ -6,13 +6,6 @@ # Dependencies: # – ripgrep (https://github.com/BurntSushi/ripgrep) -rg --line-number --with-filename '.+' "$@" | +rg --column --with-filename '.+' "$@" | fzy --prompt='(g)>' | - -while read line; do - # Output format: :: - file=${line%%:*} - line_number=${line#*:}; line_number=${line_number%%:*} - - :edit "$file" "+$line_number" -done +:edit-search diff --git a/rc/connect/modules/rofi/commands/:rofi-grep b/rc/connect/modules/rofi/commands/:rofi-grep index f0215a2..c4adb7b 100755 --- a/rc/connect/modules/rofi/commands/:rofi-grep +++ b/rc/connect/modules/rofi/commands/:rofi-grep @@ -6,13 +6,6 @@ # Dependencies: # – ripgrep (https://github.com/BurntSushi/ripgrep) -rg --line-number --with-filename '.+' "$@" | +rg --column --with-filename '.+' "$@" | rofi -dmenu -i -p 'Open files (search by content)' | - -while read line; do - # Output format: :: - file=${line%%:*} - line_number=${line#*:}; line_number=${line_number%%:*} - - :edit "$file" "+$line_number" -done +:edit-search diff --git a/rc/connect/modules/wofi/commands/:wofi-grep b/rc/connect/modules/wofi/commands/:wofi-grep index a8c80fe..e5ccc3b 100755 --- a/rc/connect/modules/wofi/commands/:wofi-grep +++ b/rc/connect/modules/wofi/commands/:wofi-grep @@ -6,13 +6,6 @@ # Dependencies: # – ripgrep (https://github.com/BurntSushi/ripgrep) -rg --line-number --with-filename '.+' "$@" | +rg --column --with-filename '.+' "$@" | wofi --dmenu --prompt 'Open files (search by content)' | - -while read line; do - # Output format: :: - file=${line%%:*} - line_number=${line#*:}; line_number=${line_number%%:*} - - :edit "$file" "+$line_number" -done +:edit-search -- cgit v1.2.3