fish-shell/share/functions
Johannes Altmanninger 47aa79813d Open command script in external editor on Alt+o
Fish functions are great for configuring fish but they don't integrate
seamlessly with the rest of the system. For tasks that can run outside fish,
writing scripts is the natural approach.

To edit my scripts I frequently run

    $EDITOR (which my-script)

Would be great to reduce the amount typing for this common case (the names
of editor and scripts are usually short, so that's a lot of typing spent on
the boring part).

Our Alt+o binding opens the file at the cursor in a pager.  When the cursor
is in command position, it doesn't do anything (unless the command is actually
a valid file path). Let's make it open the resolved file path in an editor.

In future, we should teach this binding to delegate to "funced" upon seeing
a function instead of a script. I didn't do it yet because funced prints
messages, so it will mess with the commandline rendering if used from
a binding.  (The fact that funced encourages overwriting functions that
ship with fish is worrysome. Also I'm not sure why funced doesn't open the
function's source file directly (if not sourced from stdin). Persisting the
function should probably be the default.)

Alternative approach: I think other shells expand "=my-script" to
"/path/to/my-script".  That is certainly an option -- if we do that we'd want
to teach fish to complete command names after "=".  Since I don't remember
scenarios where I care about the full path of a script beyond opening it in
my editor, I didn't look further into this.

Closes #10266
2024-02-07 00:07:47 +01:00
..
__fish_any_arg_in.fish completion: adopt commandline -x replacing deprecated -o 2024-01-27 09:28:06 +01:00
__fish_anyeditor.fish Open command script in external editor on Alt+o 2024-02-07 00:07:47 +01:00
__fish_anypager.fish __fish_anypager: prefer less over other pagers 2023-12-17 17:12:13 +01:00
__fish_anypython.fish anypython: Add more versions 2024-01-27 18:47:38 +01:00
__fish_append.fish Don't use abbreviated long options 2020-09-19 11:47:41 +02:00
__fish_apropos.fish Force use of macOS's builtin manpath 2023-06-06 13:12:30 -05:00
__fish_argcomplete_complete.fish Run fish_indent on share/**.fish 2021-08-01 18:59:45 +02:00
__fish_cache_sourced_completions.fish Add helper to cache | source completions 2024-01-21 14:18:50 +01:00
__fish_cancel_commandline.fish Speed up default ^C action considerably 2020-06-29 19:41:33 -05:00
__fish_commandline_is_singlequoted.fish Also fix tokenizer_state in bracketed paste path 2021-04-20 15:29:28 +02:00
__fish_complete_atool_archive_contents.fish completion: adopt commandline -x replacing deprecated -o 2024-01-27 09:28:06 +01:00
__fish_complete_bittorrent.fish added descriptions to __fish_print_addresses 2021-03-08 17:47:29 +01:00
__fish_complete_blockdevice.fish Three more of the same test -z thing. 2022-08-02 00:42:37 -07:00
__fish_complete_cd.fish
__fish_complete_clang.fish completion: adopt commandline -x replacing deprecated -o 2024-01-27 09:28:06 +01:00
__fish_complete_command.fish __fish_complete_command: Fix --foo= logic 2023-09-10 18:16:41 +02:00
__fish_complete_convert_options.fish Don't use abbreviated long options 2020-09-19 11:47:41 +02:00
__fish_complete_directories.fish __fish_complete_directories: Remove --foo= from token 2023-03-27 22:57:34 +02:00
__fish_complete_docutils.fish Fixes #8924 via __fish_complete_suffix overhaul 2023-03-12 22:07:44 -05:00
__fish_complete_ftp.fish Reindent functions to remove useless quotes 2020-03-09 19:46:43 +01:00
__fish_complete_gpg_key_id.fish Restyle codebase 2022-06-16 18:43:28 +02:00
__fish_complete_gpg_user_id.fish completions/gpg: list only secret for gpg options that manage secret keys 2022-02-19 13:48:20 +01:00
__fish_complete_gpg.fish tab completions: avoid completing gpg --use-embedded-filename 2024-02-02 21:57:55 +01:00
__fish_complete_group_ids.fish Complete IDs for unix users and groups that start with _ 2020-03-10 20:56:45 +01:00
__fish_complete_groups.fish dogfood string split -f 2020-04-20 22:39:48 +02:00
__fish_complete_job_pids.fish
__fish_complete_list.fish Don't use abbreviated long options 2020-09-19 11:47:41 +02:00
__fish_complete_lpr_option.fish
__fish_complete_lpr.fish Ensure short option description is not overridden 2022-02-02 18:19:15 -08:00
__fish_complete_man.fish completion: adopt commandline -x replacing deprecated -o 2024-01-27 09:28:06 +01:00
__fish_complete_mount_opts.fish Run fish_indent on all non-test .fish files 2021-11-23 09:49:45 +01:00
__fish_complete_mysql.fish completion: adopt commandline -x replacing deprecated -o 2024-01-27 09:28:06 +01:00
__fish_complete_netcat.fish Fix extra or missing newlines at end of file in our fish scripts 2020-08-09 23:53:46 +02:00
__fish_complete_path.fish __fish_complete_path: Also use an empty command 2023-02-14 17:09:58 +01:00
__fish_complete_pg_database.fish Improve psql completions and add some related commands (#6620) 2020-02-28 11:16:41 +01:00
__fish_complete_pg_user.fish Improve psql completions and add some related commands (#6620) 2020-02-28 11:16:41 +01:00
__fish_complete_pgrep.fish Rewrite __fish_complete_proc 2018-11-22 15:23:05 +01:00
__fish_complete_pids.fish Fix extra or missing newlines at end of file in our fish scripts 2020-08-09 23:53:46 +02:00
__fish_complete_ppp_peer.fish
__fish_complete_proc.fish Remove unused --inherit-variable 2020-04-21 21:11:26 +02:00
__fish_complete_ssh.fish improved SSH completions 2021-03-20 21:17:53 +01:00
__fish_complete_subcommand.fish completion: adopt commandline -x replacing deprecated -o 2024-01-27 09:28:06 +01:00
__fish_complete_suffix.fish Fixes #8924 via __fish_complete_suffix overhaul 2023-03-12 22:07:44 -05:00
__fish_complete_user_at_hosts.fish Fix extra or missing newlines at end of file in our fish scripts 2020-08-09 23:53:46 +02:00
__fish_complete_user_ids.fish Complete IDs for unix users and groups that start with _ 2020-03-10 20:56:45 +01:00
__fish_complete_users.fish Use the new string split --fields feature 2020-04-12 14:01:21 -07:00
__fish_complete_wireshark.fish completions wireshark: removed wrong interface completion for -I option (#9440) 2023-01-02 17:45:25 +01:00
__fish_complete_zfs_mountpoint_properties.fish Reindent functions to remove useless quotes 2020-03-09 19:46:43 +01:00
__fish_complete_zfs_pools.fish Reformat all files 2019-05-05 12:09:25 +02:00
__fish_complete_zfs_ro_properties.fish completion helper functions: do not use gettext 2020-03-06 22:23:50 +01:00
__fish_complete_zfs_rw_properties.fish Reindent functions to remove useless quotes 2020-03-09 19:46:43 +01:00
__fish_complete_zfs_write_once_properties.fish Reindent functions to remove useless quotes 2020-03-09 19:46:43 +01:00
__fish_config_interactive.fish Disable reflow handling for WezTerm too 2023-09-22 17:13:28 +02:00
__fish_contains_opt.fish completion: adopt commandline -x replacing deprecated -o 2024-01-27 09:28:06 +01:00
__fish_crux_packages.fish dogfood string split -f 2020-04-20 22:39:48 +02:00
__fish_cursor_konsole.fish
__fish_cursor_xterm.fish __fish_cursor_xterm: Ignore unknown cursor settings 2023-03-31 20:07:54 +02:00
__fish_describe_command.fish Fix apropos completions 2022-10-28 10:01:35 -07:00
__fish_edit_command_if_at_cursor.fish Open command script in external editor on Alt+o 2024-02-07 00:07:47 +01:00
__fish_first_token.fish completion: adopt commandline -x replacing deprecated -o 2024-01-27 09:28:06 +01:00
__fish_git_prompt.fish Move __fish_git_prompt -> fish_git_prompt 2019-02-10 14:44:50 +01:00
__fish_gnu_complete.fish Fix extra or missing newlines at end of file in our fish scripts 2020-08-09 23:53:46 +02: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 completion: adopt commandline -x replacing deprecated -o 2024-01-27 09:28:06 +01:00
__fish_is_first_token.fish Make __fish_is_nth_token and __fish_nth_token private again 2022-02-13 10:45:38 +01:00
__fish_is_git_repository.fish
__fish_is_nth_token.fish completion: adopt commandline -x replacing deprecated -o 2024-01-27 09:28:06 +01:00
__fish_is_switch.fish Reformat all files 2019-05-05 12:09:25 +02:00
__fish_is_token_n.fish Make __fish_is_nth_token and __fish_nth_token private again 2022-02-13 10:45:38 +01:00
__fish_is_zfs_feature_enabled.fish Simplify and fix __fish_is_zfs_feature_enabled (#9939) 2023-08-09 17:28:01 +02:00
__fish_list_current_token.fish fix __fish_list_current_token not recognizing ~ as $HOME (#9954) 2023-08-16 22:05:59 +02:00
__fish_make_cache_dir.fish __fish_make_cache_dir: Create fish subdir and optionally deeper 2024-01-21 14:18:50 +01:00
__fish_make_completion_signals.fish __fish_make_completion_signals: Check for "kill" 2023-01-29 14:44:59 +01:00
__fish_man_page.fish completion: adopt commandline -x replacing deprecated -o 2024-01-27 09:28:06 +01:00
__fish_md5.fish Make more of the functions in share/functions print error messages to stderr 2022-04-04 18:26:14 +02:00
__fish_move_last.fish Fix extra or missing newlines at end of file in our fish scripts 2020-08-09 23:53:46 +02:00
__fish_no_arguments.fish completion: adopt commandline -x replacing deprecated -o 2024-01-27 09:28:06 +01:00
__fish_not_contain_opt.fish completion: adopt commandline -x replacing deprecated -o 2024-01-27 09:28:06 +01:00
__fish_npm_helper.fish Restyle fishscript and python 2023-06-01 18:20:19 +02:00
__fish_nth_token.fish completion: adopt commandline -x replacing deprecated -o 2024-01-27 09:28:06 +01:00
__fish_number_of_cmd_args_wo_opts.fish Fix extra or missing newlines at end of file in our fish scripts 2020-08-09 23:53:46 +02:00
__fish_paginate.fish Add __fish_anypager helper 2023-11-20 17:16:35 +01:00
__fish_parent_directories.fish Reformat all files 2019-05-05 12:09:25 +02:00
__fish_prepend_sudo.fish Provide functions to toggle commandline prefix/suffix 2021-06-23 20:51:20 +02:00
__fish_prev_arg_in.fish completion: adopt commandline -x replacing deprecated -o 2024-01-27 09:28:06 +01:00
__fish_preview_current_file.fish Open command script in external editor on Alt+o 2024-02-07 00:07:47 +01:00
__fish_print_addresses.fish added descriptions to __fish_print_addresses 2021-03-08 17:47:29 +01:00
__fish_print_apt_packages.fish print_apt_packages: Go back to apt-cache for non-installed packages 2023-08-22 22:17:22 +02: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_cmd_args.fish completion: adopt commandline -x replacing deprecated -o 2024-01-27 09:28:06 +01:00
__fish_print_commands.fish Fix help thinking some docs are commands 2021-11-25 21:25:46 +01:00
__fish_print_debian_apache_confs.fish
__fish_print_debian_apache_mods.fish
__fish_print_debian_apache_sites.fish
__fish_print_encodings.fish Reindent functions to remove useless quotes 2020-03-09 19:46:43 +01:00
__fish_print_eopkg_packages.fish Rename existing cache files 2024-01-21 14:18:50 +01:00
__fish_print_filesystems.fish feat: more completion for umount (#8908) 2022-04-26 21:11:54 +02:00
__fish_print_gpg_algo.fish refactor gpg.fish completions 2019-10-29 19:07:35 +01:00
__fish_print_groups.fish
__fish_print_help.fish Add __fish_anypager helper 2023-11-20 17:16:35 +01:00
__fish_print_hostnames.fish completion: adopt commandline -x replacing deprecated -o 2024-01-27 09:28:06 +01:00
__fish_print_interfaces.fish Use path basename 2023-04-26 19:38:10 +02:00
__fish_print_lpr_options.fish
__fish_print_lpr_printers.fish
__fish_print_modules.fish
__fish_print_mounted.fish Reindent functions to remove useless quotes 2020-03-09 19:46:43 +01:00
__fish_print_opkg_packages.fish __fish_print_packages: Extract the rest 2020-12-22 17:10:02 +01:00
__fish_print_packages.fish __fish_print_packages: Extract the rest 2020-12-22 17:10:02 +01:00
__fish_print_pacman_packages.fish Rename existing cache files 2024-01-21 14:18:50 +01: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 Fix typo in __fish_print_pipestatus 2021-03-07 12:51:57 +01:00
__fish_print_pkg_add_packages.fish __fish_print_packages: Break apart 2020-12-22 17:10:02 +01:00
__fish_print_pkg_packages.fish Run fish_indent on share/**.fish 2021-02-08 07:31:33 +01:00
__fish_print_port_packages.fish Rename existing cache files 2024-01-21 14:18:50 +01:00
__fish_print_portage_available_pkgs.fish completions/portage: Fix errors with unreadable files 2023-01-19 17:13:13 +01:00
__fish_print_portage_installed_pkgs.fish completions/portage: Fix errors with unreadable files 2023-01-19 17:13:13 +01:00
__fish_print_portage_packages.fish __fish_print_packages: Extract the rest 2020-12-22 17:10:02 +01:00
__fish_print_portage_repository_paths.fish completions/portage: Fix errors with unreadable files 2023-01-19 17:13:13 +01:00
__fish_print_rpm_packages.fish Rename existing cache files 2024-01-21 14:18:50 +01:00
__fish_print_service_names.fish
__fish_print_svn_rev.fish
__fish_print_users.fish
__fish_print_VBox_vms.fish
__fish_print_windows_drives.fish Run fish_indent over new Windows completions 2022-01-26 22:02:23 -08:00
__fish_print_windows_users.fish Run fish_indent over new Windows completions 2022-01-26 22:02:23 -08:00
__fish_print_xbps_packages.fish Rename existing cache files 2024-01-21 14:18:50 +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 2020-11-22 14:39:48 +01:00
__fish_ps.fish Remove two calls to builtin realpath 2023-09-29 16:47:00 +02:00
__fish_pwd.fish __fish_pwd: Just always define the cygwin version 2021-04-19 18:58:00 +02:00
__fish_seen_argument.fish Fix stale name of --tokens-expand option 2024-01-27 20:09:33 +01:00
__fish_seen_subcommand_from.fish completion: adopt commandline -x replacing deprecated -o 2024-01-27 09:28:06 +01:00
__fish_set_locale.fish Also read /etc/default/locale for the locale 2021-12-18 08:57:22 +01:00
__fish_shared_key_bindings.fish Add a clear-screen bind function to clear the screen (#10044) 2023-10-08 11:41:30 +02:00
__fish_should_complete_switches.fish Reformat all files 2019-05-05 12:09:25 +02:00
__fish_svn_prompt.fish Rename __fish_svn_prompt -> fish_svn_prompt 2019-02-10 14:44:50 +01:00
__fish_systemctl_services.fish dogfood string split -f 2020-04-20 22:39:48 +02:00
__fish_systemctl.fish completion: adopt commandline -x replacing deprecated -o 2024-01-27 09:28:06 +01:00
__fish_systemd_machine_images.fish
__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 fish_toggle_commandline: minor test cleanup 2022-08-02 00:30:06 -07:00
__fish_tokenizer_state.fish __fish_tokenizer_state: replace "str" with "state" (#8550) 2021-12-13 02:42:16 -08:00
__fish_use_subcommand.fish completion: adopt commandline -x replacing deprecated -o 2024-01-27 09:28:06 +01:00
__fish_vcs_prompt.fish Rename __fish_vcs_prompt -> fish_vcs_prompt 2019-02-10 14:44:50 +01:00
__fish_whatis_current_token.fish Stop printing extra newline when Alt-W or Alt-L is used with a multiline prompt 2022-07-06 16:31:17 +02:00
__fish_whatis.fish Fix extra or missing newlines at end of file in our fish scripts 2020-08-09 23:53:46 +02:00
__ssh_history_completions.fish completion/ssh-copy-id: add completion (#9675) 2023-03-22 12:24:18 -05:00
__terlar_git_prompt.fish Fix format string 2022-06-08 21:23:43 +02:00
_validate_int.fish Make more of the functions in share/functions print error messages to stderr 2022-04-04 18:26:14 +02:00
abbr.fish Re-implement abbreviations as a built-in 2022-12-10 15:29:03 -08:00
alias.fish alias: Escape the function name when replacing 2023-06-17 07:46:07 +02:00
cd.fish functions/cd: Optimize check for too many args 2023-07-11 18:01:29 +02:00
cdh.fish Three more of the same test -z thing. 2022-08-02 00:42:37 -07:00
contains_seq.fish Fix extra or missing newlines at end of file in our fish scripts 2020-08-09 23:53:46 +02:00
diff.fish Colourise diff(1) output, if supported (#7308) 2020-09-04 18:43:09 +02:00
dirh.fish Reindent functions to remove useless quotes 2020-03-09 19:46:43 +01:00
dirs.fish Fix dirs returns false when $dirstack is empty 2021-08-09 12:43:03 +02:00
down-or-search.fish Shorten more. 2022-01-27 16:21:22 -08:00
edit_command_buffer.fish Open command script in external editor on Alt+o 2024-02-07 00:07:47 +01:00
export.fish
fish_add_path.fish Restyle codebase 2022-06-16 18:43:28 +02:00
fish_breakpoint_prompt.fish
fish_clipboard_copy.fish fish_clipboard_copy: bypass tmux, write OSC 52 to the underlying terminal 2022-10-24 22:45:45 +02:00
fish_clipboard_paste.fish fish_clipboard_copy/paste: Handle redirected stdout/stdin 2022-10-19 20:10:26 +02:00
fish_command_not_found.fish Move executable-check to C++ 2022-03-31 15:16:01 +02:00
fish_commandline_append.fish Provide functions to toggle commandline prefix/suffix 2021-06-23 20:51:20 +02:00
fish_commandline_prepend.fish Add feature to fish_commandline_prepend and fix minor issue (#9261) 2022-10-06 14:27:28 -05:00
fish_config.fish Add support for the Windows MSYS environment. 2024-01-12 17:55:49 +01:00
fish_default_key_bindings.fish history pager: delete selected history entry with Shift-Delete 2023-07-04 18:42:11 +02:00
fish_default_mode_prompt.fish Shorten more. 2022-01-27 16:21:22 -08:00
fish_delta.fish Add __fish_anypager helper 2023-11-20 17:16:35 +01:00
fish_fossil_prompt.fish Restyle fishscript and python 2023-06-01 18:20:19 +02:00
fish_git_prompt.fish fish_git_prompt: Add separator even if state is empty 2023-12-30 19:38:22 +01:00
fish_greeting.fish fish_greeting: show private mode message if $fish_greeting is empty list 2021-05-05 18:53:51 +02:00
fish_hg_prompt.fish fish_hg_prompt should return 1 when not in a mercurial directory 2020-04-19 04:24:28 +02:00
fish_hybrid_key_bindings.fish Reindent functions to remove useless quotes 2020-03-09 19:46:43 +01:00
fish_is_root_user.fish Add $EUID and use it in fish_is_root_user 2022-04-15 15:58:39 +02:00
fish_job_summary.fish git completions: undo mistaken set -f usage 2022-10-28 01:14:45 -07:00
fish_mode_prompt.fish
fish_opt.fish Reindent functions to remove useless quotes 2020-03-09 19:46:43 +01:00
fish_print_git_action.fish Reindent functions to remove useless quotes 2020-03-09 19:46:43 +01:00
fish_print_hg_root.fish Fix extra or missing newlines at end of file in our fish scripts 2020-08-09 23:53:46 +02:00
fish_prompt.fish default prompt: Use same status color as default theme 2022-07-19 17:05:48 +02:00
fish_status_to_signal.fish Shorten more. 2022-01-27 16:21:22 -08:00
fish_svn_prompt.fish Use test command instead of bracket command 2021-11-26 16:55:50 -08:00
fish_title.fish Use old-school "()" command substitution in fish_title 2022-03-14 18:15:06 +01:00
fish_update_completions.fish Make more of the functions in share/functions print error messages to stderr 2022-04-04 18:26:14 +02:00
fish_vcs_prompt.fish feat: add support for fossil-scm in prompt (#9500) 2023-01-29 16:54:39 +01:00
fish_vi_cursor.fish Call fish_vi_cursor_handle also for interactive read 2024-01-27 20:13:47 +01:00
fish_vi_key_bindings.fish vi-bindings: Make "/" open pager and go to insert mode 2023-12-10 10:37:05 +01:00
funced.fish functions/funced: harmonize interpretation of VISUAL/EDITOR 2024-01-27 09:38:51 +01:00
funcsave.fish funcsave: Always use local $funcdir 2023-10-19 22:36:58 +02:00
grep.fish
help.fish docs: Add "Writing your own prompt" doc (#9841) 2023-06-20 19:43:09 +02:00
history.fish history: fix deleting last entry 2024-01-04 16:10:08 +01:00
isatty.fish Use the newly fixed test -t in isatty 2020-09-16 21:02:59 +02:00
la.fish Use --almost-all in la function 2021-12-02 02:22:40 -08:00
ll.fish Remove completion files for ls aliases; just use function --wraps 2021-04-16 17:40:55 +02:00
ls.fish Additional checks for -F support 2023-11-07 17:45:45 +01:00
man.fish man: Reroute ".",":","[" to the proper names 2023-02-07 19:23:26 +01:00
N_.fish Fix extra or missing newlines at end of file in our fish scripts 2020-08-09 23:53:46 +02:00
nextd.fish Make more of the functions in share/functions print error messages to stderr 2022-04-04 18:26:14 +02:00
open.fish open: Don't run xdg-open in the background 2023-10-04 15:57:32 +02:00
popd.fish
prevd.fish Make more of the functions in share/functions print error messages to stderr 2022-04-04 18:26:14 +02:00
prompt_hostname.fish prompt_* functions: shorten their descriptions 2022-01-22 20:06:37 -08:00
prompt_login.fish prompt_* functions: shorten their descriptions 2022-01-22 20:06:37 -08:00
prompt_pwd.fish prompt_pwd: Fix missing -- 2023-12-25 18:46:23 +01:00
psub.fish share/functions: account for the possibility of mktemp failure. 2020-11-14 15:57:42 +01:00
pushd.fish Make more of the functions in share/functions print error messages to stderr 2022-04-04 18:26:14 +02:00
realpath.fish Make more of the functions in share/functions print error messages to stderr 2022-04-04 18:26:14 +02:00
seq.fish Make more of the functions in share/functions print error messages to stderr 2022-04-04 18:26:14 +02:00
setenv.fish
suspend.fish Reindent functions to remove useless quotes 2020-03-09 19:46:43 +01:00
trap.fish Restyle fishscript and python 2023-06-01 18:20:19 +02:00
umask.fish umask: Correctly handle empty symbolic value 2023-12-31 19:39:23 +01:00
up-or-search.fish Shorten more. 2022-01-27 16:21:22 -08:00
vared.fish Fix vared of indexed value 2022-04-23 16:35:52 -07:00