tmux:textobjs: Fix faulty UTF-8 handling by cut
This commit is contained in:
@@ -28,18 +28,17 @@ motion="$(command_prompt "(operator-pending)")"
|
|||||||
|
|
||||||
case "$motion" in
|
case "$motion" in
|
||||||
w)
|
w)
|
||||||
# TODO: fix for non-ascii symbols
|
|
||||||
copy_x="$(get_var copy_cursor_x)"
|
copy_x="$(get_var copy_cursor_x)"
|
||||||
: "$((copy_x += 1))"
|
|
||||||
copy_line="$(get_var copy_cursor_line)"
|
copy_line="$(get_var copy_cursor_line)"
|
||||||
|
|
||||||
# Do nothing if the cursor sits on a space
|
# Do nothing if the cursor sits on a space
|
||||||
# TODO: Do the same for other non-word characters
|
# TODO: Do the same for other non-word characters
|
||||||
char_curr="$(printf %s "$copy_line" | cut -c$((copy_x + 1)))"
|
# NOTE: Using grep here, as cut does not support UTF-8
|
||||||
|
char_curr="$(printf %s "$copy_line" | grep -Po "^.{$copy_x}\\K.")"
|
||||||
[ "$char_curr" != " " ] || return 0
|
[ "$char_curr" != " " ] || return 0
|
||||||
|
|
||||||
copy_line_post="$(printf %s "$copy_line" | cut -c"${copy_x}"-)"
|
copy_line_post="$(printf %s "$copy_line" | grep -Po "^.{$copy_x}\\K.*")"
|
||||||
copy_line_pre="$(printf %s "$copy_line" | cut -c-"${copy_x}")"
|
copy_line_pre="$(printf %s "$copy_line" | grep -Po "^..{$copy_x}")"
|
||||||
copy_word="$(get_var copy_cursor_word)"
|
copy_word="$(get_var copy_cursor_word)"
|
||||||
|
|
||||||
# send "boe"
|
# send "boe"
|
||||||
@@ -60,12 +59,11 @@ case "$motion" in
|
|||||||
copy_line="$(get_var copy_cursor_line)"
|
copy_line="$(get_var copy_cursor_line)"
|
||||||
|
|
||||||
# Do nothing if the cursor sits on the space
|
# Do nothing if the cursor sits on the space
|
||||||
char_curr="$(printf %s "$copy_line" | cut -c$((copy_x + 1)))"
|
char_curr="$(printf %s "$copy_line" | grep -Po "^.{$copy_x}\\K.")"
|
||||||
[ "$char_curr" != " " ] || return 0
|
[ "$char_curr" != " " ] || return 0
|
||||||
|
|
||||||
# NOTE: cut will print an error on index 0
|
char_pre="$(printf %s "$copy_line" | grep -Po "^.{$((copy_x - 1))}\\K.")"
|
||||||
char_pre="$(printf %s "$copy_line" | cut -c"$copy_x" 2>/dev/null)"
|
char_post="$(printf %s "$copy_line" | grep -Po "^..{$copy_x}\\K.")"
|
||||||
char_post="$(printf %s "$copy_line" | cut -c$((copy_x + 2)))"
|
|
||||||
|
|
||||||
# default to a space if the cursor is at the beginning or end of
|
# default to a space if the cursor is at the beginning or end of
|
||||||
# the line
|
# the line
|
||||||
|
|||||||
Reference in New Issue
Block a user