diff --git a/blerc.template b/blerc.template index 9589310d..16fc666c 100644 --- a/blerc.template +++ b/blerc.template @@ -874,13 +874,20 @@ ## Keybindings -## The default mapping of is magic-space which performs history and -## sabbrev expansion before inserting a space. If you want to insert just a -## space without expansions as Bash's default, use the following setting: +## The default mapping of in ble.sh is magic-space which performs history +## and sabbrev expansion before inserting a space. If you want to insert just +## a space without expansions as Bash's default, use the following setting: #ble-bind -f 'SP' 'self-insert' +## The default mapping of `/' () in ble.sh is magic-slash which performs +## sabbrev expansions of the name ` ~*'. If you want to insert just a slash +## without expansions as Bash's default, use the following setting: + +#ble-bind -f '/' 'self-insert' + + ## If you want to search the already input string using and keys, ## use the following setting: diff --git a/docs/ChangeLog.md b/docs/ChangeLog.md index 7a602336..b9dd830e 100644 --- a/docs/ChangeLog.md +++ b/docs/ChangeLog.md @@ -136,6 +136,7 @@ - syntax: support new parameter transformation `"${arr@k}"` `#D1998` 1dd7e385 - edit: support a user command `ble append-line` (requested by mozirilla213) `#D2001` 2a524f34 - decode: accept isolated ESC \ (requested by mozirilla213) `#D2004` xxxxxxxx +- sabbrev: add widget `magic-slash` to approximate Zsh named directories (motivated by mozirilla213) `#D2008` xxxxxxxx ## Changes diff --git a/keymap/emacs.sh b/keymap/emacs.sh index 0a827e6d..3fb657d5 100644 --- a/keymap/emacs.sh +++ b/keymap/emacs.sh @@ -26,7 +26,7 @@ _ble_keymap_emacs_white_list=( self-insert batch-insert nop - magic-space + magic-space magic-slash copy{,-forward,-backward}-{c,f,s,u}word copy-region{,-or} clear-screen @@ -207,6 +207,7 @@ function ble-decode/keymap:emacs/define { # history ble-bind -f 'M-^' history-expand-line ble-bind -f 'SP' magic-space + ble-bind -f '/' magic-slash #---------------------------------------------------------------------------- diff --git a/keymap/vi.sh b/keymap/vi.sh index 0db31e45..223b4145 100644 --- a/keymap/vi.sh +++ b/keymap/vi.sh @@ -221,7 +221,7 @@ _ble_keymap_vi_imap_white_list=( self-insert batch-insert nop - magic-space + magic-space magic-slash delete-backward-{c,f,s,u}word copy{,-forward,-backward}-{c,f,s,u}word copy-region{,-or} @@ -7890,6 +7890,7 @@ function ble-decode/keymap:vi_imap/define { ble-bind -f 'C-d' 'delete-region-or delete-forward-char-or-exit' ble-bind -f 'SP' 'magic-space' + ble-bind -f '/' 'magic-slash' # ble-bind -f 'M-^' 'history-expand-line' # ble-bind -f 'C-c' 'discard-line' @@ -8187,6 +8188,7 @@ function ble-decode/keymap:vi_cmap/define { # command-history # ble-bind -f 'M-^' history-expand-line # ble-bind -f 'SP' magic-space + # ble-bind -f '/' magic-slash ble-bind -f 'C-\' bell ble-bind -f 'C-^' bell diff --git a/lib/core-complete.sh b/lib/core-complete.sh index 9ac7f82d..d284fa01 100644 --- a/lib/core-complete.sh +++ b/lib/core-complete.sh @@ -7922,7 +7922,7 @@ function ble/complete/auto-complete.idle { [[ $_ble_decode_keymap == emacs || $_ble_decode_keymap == vi_[ic]map ]] || return 0 case $_ble_decode_widget_last in - (ble/widget/self-insert|ble/widget/magic-space) ;; + (ble/widget/self-insert|ble/widget/magic-space|ble/widget/magic-slash) ;; (ble/widget/complete|ble/widget/vi_imap/complete) [[ :$bleopt_complete_auto_complete_opts: == *:suppress-after-complete:* ]] && return 0 ;; (*) return 0 ;; @@ -7943,7 +7943,7 @@ function ble/complete/auto-menu.idle { ((bleopt_complete_auto_menu>0)) || return 1 case $_ble_decode_widget_last in - (ble/widget/self-insert) ;; + (ble/widget/self-insert|ble/widget/magic-slash) ;; (ble/widget/complete) ;; (ble/widget/vi_imap/complete) ;; (ble/widget/auto_complete/self-insert) ;; @@ -8019,7 +8019,8 @@ function ble/widget/auto_complete/self-insert/.is-magic-space { local dicthead=_ble_decode_${_ble_decode_keymap_stack[ikeymap]}_kmap_ builtin eval "local ent=\${$dicthead$_ble_decode_key__seq[KEYS[0]]-}" - [[ ${ent#*:} == ble/widget/magic-space ]] + local command=${ent#*:} + [[ $command == ble/widget/magic-space || $command == ble/widget/magic-slash ]] } function ble/widget/auto_complete/self-insert { @@ -8396,16 +8397,38 @@ function ble/complete/sabbrev/locate-key { ((pos