From 6706b15fbc9624daa654d99469ae588f34d158d1 Mon Sep 17 00:00:00 2001 From: Fabian Boehm Date: Mon, 27 May 2024 08:26:18 +0200 Subject: [PATCH] fish_add_path: Automatically enable verbose mode for interactive use fish_add_path can be used either interactively, in the commandline, or in config.fish. That's its greatest strength, it's a very DWIM-style command. One of the compromises that entails, however, is that it can't really be very loud about what it does. If it skips a path, it can't write a warning because it might be used in config.fish. But it *can* if it's used interactively. So we try to detect that case and enable verbose mode automatically. That means if you do ```fish fish_add_path /opt/mytool/bin/mytool ``` it may tell you "Skipping path because it is a file instead of a directory:". The check isn't perfect, it goes through status current-command and isatty, but it should be good for most cases (and be false in config.fish). --- doc_src/cmds/fish_add_path.rst | 3 ++- share/functions/fish_add_path.fish | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/doc_src/cmds/fish_add_path.rst b/doc_src/cmds/fish_add_path.rst index cbc0b5a03..c43066f8e 100644 --- a/doc_src/cmds/fish_add_path.rst +++ b/doc_src/cmds/fish_add_path.rst @@ -52,7 +52,8 @@ Options Move already-included directories to the place they would be added - by default they would be left in place and not added again. **-v** or **--verbose** - Print the :doc:`set ` command used. + Print the :doc:`set ` command used, and some more warnings, like when a path is skipped because it doesn't exist or is not a directory. + Verbose mode is automatically enabled when fish_add_path is used interactively and the output goes to the terminal. **-n** or **--dry-run** Print the ``set`` command that would be used without executing it. diff --git a/share/functions/fish_add_path.fish b/share/functions/fish_add_path.fish index 4a119b548..6e2316dd8 100644 --- a/share/functions/fish_add_path.fish +++ b/share/functions/fish_add_path.fish @@ -36,6 +36,11 @@ function fish_add_path --description "Add paths to the PATH" set -l mode $_flag_prepend $_flag_append set -q mode[1]; or set mode -p + # Enable verbose mode if we're interactively used + status current-command | string match -rq '^fish_add_path$' + and isatty stdout + and set -l _flag_verbose yes + # To keep the order of our arguments, go through and save the ones we want to keep. set -l newpaths set -l indexes