fish-shell/share/functions
Johannes Altmanninger 8a033b9f3d Add undo
Add the input function undo which is bound to `\c_` (control + / on
some terminals). Redoing the most recent chain of undos is supported,
redo is bound to `\e/` for now.

Closes #1367.
This approach should not have the issues discussed in #5897.

Every single modification to the commandline can be undone individually,
except for adjacent single-character inserts, which are coalesced,
so they can be reverted with a single undo. Coalescing is not done for
space characters, so each word can be undone separately.

When moving between history search entries, only the current history
search entry is reachable via the undo history. This allows to go back
to the original search string with a single undo, or by pressing the
escape key.
Similarly, when moving between pager entries, only the most recent
selection in the pager can be undone.
2020-02-07 17:15:17 +01:00
..
_.fish functions/_.fish: Use ggetext if available 2019-02-13 13:05:50 +01:00
__fish_abbr_old.fish Move abbr_old to __fish_abbr_old 2018-09-21 09:25:16 +08:00
__fish_any_arg_in.fish completions/git: some improvements 2019-10-29 19:13:31 +01:00
__fish_anypython.fish functions/__fish_anypython: Also try python{3,2}.7 2019-06-25 19:40:22 +02:00
__fish_append.fish functions/__fish_append: Stringify 2019-03-14 13:23:48 +01:00
__fish_cancel_commandline.fish __fish_cancel_commandline: Always repaint 2019-12-04 21:21:34 +01:00
__fish_clang_complete.fish Fix some issues in __fish_complete_subcommand.fish 2019-11-17 00:39:06 +01:00
__fish_commandline_is_singlequoted.fish Auto-escape pastes inside single-quotes 2017-03-16 16:08:13 +01:00
__fish_complete_atool_archive_contents.fish reformat all fish scripts 2016-11-27 21:27:22 -08:00
__fish_complete_bittorrent.fish reformat all fish scripts 2016-11-27 21:27:22 -08:00
__fish_complete_blockdevice.fish Split off __fish_complete_blockdevice from mount.fish. 2016-05-27 14:56:47 -07:00
__fish_complete_cd.fish Revert "Fix cd completions if a directory exists in $CDPATH and $PWD" 2017-10-16 19:33:38 +02:00
__fish_complete_command.fish Complete empty subcomands consistently 2019-11-05 09:05:46 +01:00
__fish_complete_convert_options.fish fix 'grep ... | sed' 2018-04-09 01:09:49 +02:00
__fish_complete_directories.fish fish_complete_directories: Use complete -C 2019-05-27 19:33:52 +02:00
__fish_complete_external_command.fish Complete empty subcomands consistently 2019-11-05 09:05:46 +01:00
__fish_complete_ftp.fish reformat all fish scripts 2016-11-27 21:27:22 -08:00
__fish_complete_gpg.fish minor fixes to version-specific completions 2019-11-03 21:37:57 +08:00
__fish_complete_gpg_key_id.fish Stringify gpg completions 2020-01-21 17:57:57 +01:00
__fish_complete_gpg_user_id.fish refactor gpg.fish completions 2019-10-29 19:07:35 +01:00
__fish_complete_groups.fish remove sed from __fish_complete_groups.fish 2018-04-25 15:45:12 +02:00
__fish_complete_job_pids.fish Add a function to complete job PIDs. 2015-11-27 16:07:16 -08:00
__fish_complete_list.fish reformat all fish scripts 2016-11-27 21:27:22 -08:00
__fish_complete_lpr.fish reformat all fish scripts 2016-11-27 21:27:22 -08:00
__fish_complete_lpr_option.fish Remove use of caret redirection from share/* 2018-04-01 13:42:38 -07:00
__fish_complete_man.fish Avoid apropos on macOS 10.15 with man completion 2020-02-07 20:52:39 +08:00
__fish_complete_mount_opts.fish Fixed mount -o<TAB> exception 2019-03-19 09:28:14 +01:00
__fish_complete_path.fish reformat all fish scripts 2016-11-27 21:27:22 -08:00
__fish_complete_pgrep.fish Rewrite __fish_complete_proc 2018-11-22 15:23:05 +01:00
__fish_complete_pids.fish Rename $pid (née %self) to $fish_pid 2018-03-24 11:54:27 -05:00
__fish_complete_ppp_peer.fish reformat all fish scripts 2016-11-27 21:27:22 -08:00
__fish_complete_proc.fish Rewrite __fish_complete_proc 2018-11-22 15:23:05 +01:00
__fish_complete_ssh.fish style fixes to previous commit 2017-02-01 22:49:40 -08:00
__fish_complete_subcommand.fish Fix some issues in __fish_complete_subcommand.fish 2019-11-17 00:39:06 +01:00
__fish_complete_suffix.fish __fish_complete_suffix: Remove eval 2019-12-28 17:10:23 +01:00
__fish_complete_user_at_hosts.fish a make style-all cleanup 2017-07-18 22:40:25 -07:00
__fish_complete_users.fish Fixed __fish_complete_users to better format GECOS 2017-07-11 17:00:08 +02:00
__fish_complete_wireshark.fish add completions for wireshark/tshark/dumpcap 2020-01-30 16:45:02 +01:00
__fish_complete_zfs_mountpoint_properties.fish Reformat all files 2019-05-05 12:09:25 +02:00
__fish_complete_zfs_pools.fish Reformat all files 2019-05-05 12:09:25 +02:00
__fish_complete_zfs_ro_properties.fish Reformat all files 2019-05-05 12:09:25 +02:00
__fish_complete_zfs_rw_properties.fish Reformat all files 2019-05-05 12:09:25 +02:00
__fish_complete_zfs_write_once_properties.fish Reformat all files 2019-05-05 12:09:25 +02:00
__fish_config_interactive.fish Color the default prompt host if running via SSH 2019-12-30 14:03:36 +01:00
__fish_contains_opt.fish use the new set -a and set -p in our scripts 2017-08-04 18:02:24 -07:00
__fish_crux_packages.fish reformat all fish scripts 2016-11-27 21:27:22 -08:00
__fish_cursor_1337.fish fish vi mode cursor shape on iTerm2 2016-12-02 19:49:15 -08:00
__fish_cursor_konsole.fish reformat all fish scripts 2016-11-27 21:27:22 -08:00
__fish_cursor_xterm.fish Revert "Switch to bare vars in our math invocations" 2017-09-09 23:35:47 -07:00
__fish_describe_command.fish Run fish_indent on all our fish scripts 2020-01-13 20:34:22 +01:00
__fish_first_token.fish Reformat all files 2019-05-05 12:09:25 +02:00
__fish_git_prompt.fish Move __fish_git_prompt -> fish_git_prompt 2019-02-10 14:44:50 +01:00
__fish_gnu_complete.fish reformat all fish scripts 2016-11-27 21:27:22 -08:00
__fish_hg_prompt.fish Rename __fish_hg_prompt -> fish_hg_prompt 2019-02-10 14:44:50 +01:00
__fish_is_first_arg.fish Reformat all files 2019-05-05 12:09:25 +02:00
__fish_is_first_token.fish reformat all fish scripts 2016-11-27 21:27:22 -08:00
__fish_is_git_repository.fish Remove use of caret redirection from share/* 2018-04-01 13:42:38 -07:00
__fish_is_switch.fish Reformat all files 2019-05-05 12:09:25 +02:00
__fish_is_token_n.fish reformat all fish scripts 2016-11-27 21:27:22 -08:00
__fish_is_zfs_feature_enabled.fish Fix zfs completions under FreeBSD 2018-05-26 12:20:04 -05:00
__fish_list_current_token.fish Fix error on typing Alt-l on a token that starts with a dash 2019-10-19 12:31:09 +02:00
__fish_make_completion_signals.fish Stringify make_completion_signals 2020-01-20 17:51:59 +01:00
__fish_man_page.fish __fish_man_page: ignore prefixing variable assignments 2019-12-19 23:44:58 +01:00
__fish_move_last.fish Use $PWD to retrieve the current directory in __fish_move_last. 2019-12-07 12:20:31 +01:00
__fish_no_arguments.fish reformat all fish scripts 2016-11-27 21:27:22 -08:00
__fish_not_contain_opt.fish fix typo in error message 2017-06-09 12:12:36 -07:00
__fish_number_of_cmd_args_wo_opts.fish Add eselect, rc-update and rc-service completions. (These are utilities used by Gentoo Linux) 2013-11-27 18:36:05 +08:00
__fish_paginate.fish Handle multiple arguments in $PAGER 2019-12-02 15:15:33 +01:00
__fish_parent_directories.fish Reformat all files 2019-05-05 12:09:25 +02:00
__fish_pipestatus_with_signal.fish Reformat all files 2019-05-05 12:09:25 +02:00
__fish_portage_print_available_pkgs.fish Reformat all files 2019-05-05 12:09:25 +02:00
__fish_portage_print_installed_pkgs.fish Reformat all files 2019-05-05 12:09:25 +02:00
__fish_portage_print_repository_paths.fish Reformat all files 2019-05-05 12:09:25 +02:00
__fish_prepend_sudo.fish __fish_prepend_sudo: Don't move the relative position of the cursor 2020-01-29 09:21:23 +01:00
__fish_prev_arg_in.fish Reformat all files 2019-05-05 12:09:25 +02:00
__fish_print_addresses.fish remove sed from __fish_print_addresses.fish 2018-04-25 15:45:12 +02:00
__fish_print_cmd_args.fish Add eselect, rc-update and rc-service completions. (These are utilities used by Gentoo Linux) 2013-11-27 18:36:05 +08:00
__fish_print_cmd_args_without_options.fish functions/__fish_print_cmd_args_without_options: Stringify 2019-01-26 19:20:16 +01:00
__fish_print_commands.fish Clean up $__fish_*dir variable names 2018-03-12 08:34:20 -05:00
__fish_print_debian_apache_confs.fish reformat all fish scripts 2016-11-27 21:27:22 -08:00
__fish_print_debian_apache_mods.fish reformat all fish scripts 2016-11-27 21:27:22 -08:00
__fish_print_debian_apache_sites.fish reformat all fish scripts 2016-11-27 21:27:22 -08:00
__fish_print_encodings.fish Fix function output on FreeBSD/Cygwin systems 2020-01-21 16:55:37 +01:00
__fish_print_filesystems.fish add ffs to known filesystems 2017-12-12 19:18:47 +01:00
__fish_print_gpg_algo.fish refactor gpg.fish completions 2019-10-29 19:07:35 +01:00
__fish_print_groups.fish Added completions/translations for zfs and zpool 2017-12-21 16:39:06 +01:00
__fish_print_help.fish Handle multiple arguments in $PAGER 2019-12-02 15:15:33 +01:00
__fish_print_hostnames.fish Restyle 2019-11-16 14:57:59 +01:00
__fish_print_interfaces.fish parse *BSD interface names 2017-12-12 19:18:53 +01:00
__fish_print_lpr_options.fish Remove use of caret redirection from share/* 2018-04-01 13:42:38 -07:00
__fish_print_lpr_printers.fish Remove use of caret redirection from share/* 2018-04-01 13:42:38 -07:00
__fish_print_modules.fish Remove use of caret redirection from share/* 2018-04-01 13:42:38 -07:00
__fish_print_mounted.fish Revert "mount completions: don't truncate mounts with spaces in them" 2018-11-17 14:06:15 +01:00
__fish_print_packages.fish Keep "; and" and "; or" on fish files 2019-05-05 13:34:38 +02:00
__fish_print_pacman_repos.fish functions/__fish_print_pacman_repos.fish: fix 2019-10-26 18:11:29 +02:00
__fish_print_pipestatus.fish prompts: fix pipestatus for jobs prefixed with "not" 2020-02-06 01:43:17 +01:00
__fish_print_service_names.fish Remove use of caret redirection from share/* 2018-04-01 13:42:38 -07:00
__fish_print_svn_rev.fish reformat all fish scripts 2016-11-27 21:27:22 -08:00
__fish_print_users.fish refactor the __*_users functions 2017-04-23 20:08:40 -07:00
__fish_print_VBox_vms.fish Add __fish_print_VBox_vms function 2016-12-21 14:51:48 +01:00
__fish_print_xdg_applications_directories.fish Fix xdg mimetype completion 2020-01-22 16:33:56 +01:00
__fish_print_xdg_mimetypes.fish Fix xdg mimetype completion 2020-01-22 16:33:56 +01:00
__fish_print_xwindows.fish Reformat all files 2019-05-05 12:09:25 +02:00
__fish_print_zfs_snapshots.fish Reformat all files 2019-05-05 12:09:25 +02:00
__fish_pwd.fish Stringify __fish_pwd.fish 2020-01-24 19:05:08 +01:00
__fish_seen_argument.fish add -o/--old to __fish_seen_argument 2019-11-02 14:48:57 -07:00
__fish_seen_subcommand_from.fish Drop unneeded '--' when using set builtin in various places 2006-12-13 06:37:27 +10:00
__fish_set_locale.fish Remove some dead code 2018-05-12 13:48:32 +02:00
__fish_shared_key_bindings.fish Add default \es keybinding for "prepend sudo" 2019-10-06 15:17:49 +02:00
__fish_should_complete_switches.fish Reformat all files 2019-05-05 12:09:25 +02:00
__fish_status_to_signal.fish add __fish_status_to_signal.fish and __fish_pipestatus_with_signal.fish 2019-02-26 18:09:37 +00:00
__fish_svn_prompt.fish Rename __fish_svn_prompt -> fish_svn_prompt 2019-02-10 14:44:50 +01:00
__fish_systemctl_services.fish Remove use of caret redirection from share/* 2018-04-01 13:42:38 -07:00
__fish_systemd_machine_images.fish reformat all fish scripts 2016-11-27 21:27:22 -08:00
__fish_systemd_machines.fish Revert "Move __fish_systemd_machines into machinectl completion script" 2019-12-09 21:07:21 +01:00
__fish_toggle_comment_commandline.fish reformat all fish scripts 2016-11-27 21:27:22 -08:00
__fish_use_subcommand.fish reformat all fish scripts 2016-11-27 21:27:22 -08:00
__fish_vcs_prompt.fish Rename __fish_vcs_prompt -> fish_vcs_prompt 2019-02-10 14:44:50 +01:00
__fish_whatis.fish Reformat all files 2019-05-05 12:09:25 +02:00
__fish_whatis_current_token.fish Only print extra newlines for multi-line prompts (#6179) 2019-10-08 19:14:51 +02:00
__terlar_git_prompt.fish Reformat all files 2019-05-05 12:09:25 +02:00
_fish_systemctl.fish Keep "; and" and "; or" on fish files 2019-05-05 13:34:38 +02:00
_validate_int.fish add ability for argparse to validate args 2017-07-18 14:42:50 -07:00
abbr.fish Keep "; and" and "; or" on fish files 2019-05-05 13:34:38 +02:00
alias.fish alias: Use read --tokenize 2019-12-01 18:14:26 +01:00
cd.fish cd: Fix test for too many args 2019-10-10 18:06:11 +02:00
cdh.fish cdh: Only replace home directory with ~ at the start of paths 2018-08-13 18:24:42 +02:00
contains_seq.fish Revert "Switch to bare vars in our math invocations" 2017-09-09 23:35:47 -07:00
delete-or-exit.fish reformat all fish scripts 2016-11-27 21:27:22 -08:00
dirh.fish fix dirh output with reversed $dirnext 2019-01-26 13:30:45 +01:00
dirs.fish update dirs to use argparse 2017-07-13 11:53:29 -07:00
down-or-search.fish reformat all fish scripts 2016-11-27 21:27:22 -08:00
edit_command_buffer.fish Use read --tokenize instead of eval for $BROWSER & $EDITOR 2019-12-03 12:19:16 +01:00
export.fish Fix export returning 1 on success 2017-10-01 01:11:17 -07:00
fish_breakpoint_prompt.fish Revert "Switch to bare vars in our math invocations" 2017-09-09 23:35:47 -07:00
fish_clipboard_copy.fish Always use wl-{copy,paste} if running on wayland 2019-10-24 11:42:33 +02:00
fish_clipboard_paste.fish Revert "Set fish_clipboard_paste handler once on startup" 2019-11-04 20:47:58 +01:00
fish_config.fish Reformat all files 2019-05-05 12:09:25 +02:00
fish_default_key_bindings.fish Add undo 2020-02-07 17:15:17 +01:00
fish_default_mode_prompt.fish Add replace mode in vi-mode 2019-11-25 16:05:10 -08:00
fish_git_prompt.fish fish_git_prompt: Add a way to use the informative chars 2019-06-25 16:11:18 +02:00
fish_hg_prompt.fish Reformat all files 2019-05-05 12:09:25 +02:00
fish_hybrid_key_bindings.fish Add separation of "preset" bindings 2018-09-30 16:54:56 +02:00
fish_indent.fish Rename $FISH_VERSION back to the original $version. 2017-10-14 08:33:02 -07:00
fish_key_reader.fish Rename $FISH_VERSION back to the original $version. 2017-10-14 08:33:02 -07:00
fish_md5.fish Gradle-completions for gradle tasks (#3972) 2017-05-13 13:28:32 +02:00
fish_mode_prompt.fish Added default mode prompt function (#3727) 2017-01-12 16:07:41 +01:00
fish_npm_helper.fish Reformat all files 2019-05-05 12:09:25 +02:00
fish_opt.fish Fix fish_opt --help showing nextd manpage. 2017-11-14 01:56:58 -08:00
fish_print_git_action.fish Fixed invalid assignments in fish_print_git_action 2019-07-03 17:37:44 +02:00
fish_print_hg_root.fish Reformat all files 2019-05-05 12:09:25 +02:00
fish_prompt.fish prompts: fix pipestatus for jobs prefixed with "not" 2020-02-06 01:43:17 +01:00
fish_svn_prompt.fish svn_prompt: Check for svnversion 2019-10-30 21:45:50 +01:00
fish_title.fish Disable fish_title in emacs 2019-05-06 17:06:40 +02:00
fish_update_completions.fish Add __fish_anypython helper function 2019-03-09 18:04:21 +01:00
fish_vcs_prompt.fish fish_vcs_prompt: Stop at first success 2019-07-15 17:32:22 +02:00
fish_vi_cursor.fish Disable vi-cursor in tests 2019-05-05 17:31:33 +02:00
fish_vi_key_bindings.fish Add replace mode in vi-mode 2019-11-25 16:05:10 -08:00
funced.fish Use read --tokenize instead of eval for $BROWSER & $EDITOR 2019-12-03 12:19:16 +01:00
funcsave.fish Make --help work 2018-11-22 12:43:35 +01:00
grep.fish reformat all fish scripts 2016-11-27 21:27:22 -08:00
help.fish Run fish_indent on all our fish scripts 2020-01-13 20:34:22 +01:00
history.fish functions/history: X is incompatible with SDMV, not C 2019-12-19 20:59:17 +01:00
hostname.fish reformat all fish scripts 2016-11-27 21:27:22 -08:00
isatty.fish isatty: command [ instead of command test 2019-02-16 17:15:52 -08:00
la.fish reformat all fish scripts 2016-11-27 21:27:22 -08:00
ll.fish reformat all fish scripts 2016-11-27 21:27:22 -08:00
ls.fish Reformat all files 2019-05-05 12:09:25 +02:00
man.fish Fix man function for NetBSD 2019-02-14 10:57:38 +01:00
N_.fish reformat all fish scripts 2016-11-27 21:27:22 -08:00
nextd-or-forward-word.fish reformat all fish scripts 2016-11-27 21:27:22 -08:00
nextd.fish Remove use of caret redirection from share/* 2018-04-01 13:42:38 -07:00
open.fish Make --help work 2018-11-22 12:43:35 +01:00
popd.fish Revert "convert popd and pushd to use argparse" 2017-09-14 12:36:37 +08:00
prevd-or-backward-word.fish reformat all fish scripts 2016-11-27 21:27:22 -08:00
prevd.fish Remove use of caret redirection from share/* 2018-04-01 13:42:38 -07:00
prompt_hostname.fish Revert prompt_hostname to short hostname only 2018-03-12 08:24:42 -05:00
prompt_pwd.fish update prompt_pwd to use argparse 2017-07-13 14:12:51 -07:00
psub.fish psub: Use explicit command 2019-11-14 17:13:39 +01:00
pushd.fish Revert "convert popd and pushd to use argparse" 2017-09-14 12:36:37 +08:00
realpath.fish Make --help work 2018-11-22 12:43:35 +01:00
seq.fish seq.fish: Allow "--" separator 2019-11-16 11:21:45 +01:00
setenv.fish fix setenv and add unit tests 2017-04-05 15:31:13 -07:00
suspend.fish Rename $pid (née %self) to $fish_pid 2018-03-24 11:54:27 -05:00
trap.fish functions/trap: Don't test with one argument 2019-01-27 15:38:03 +01:00
type.fish Have type deal with both flavors of fileless function (#6421) 2019-12-12 20:42:11 +01:00
umask.fish Revert "Switch to bare vars in our math invocations" 2017-09-09 23:35:47 -07:00
up-or-search.fish reformat all fish scripts 2016-11-27 21:27:22 -08:00
vared.fish Remove test invocations with implicit -n tests 2018-05-17 13:24:26 +02:00