From 79cf2a0d43ddda338487c85c420f67fe9c56687f Mon Sep 17 00:00:00 2001 From: Shundeev Egor Date: Tue, 5 Jan 2021 19:46:05 +0300 Subject: [PATCH] fix(fastfile): fix multiple bugs in plugin (#9574) - `fastfile_sync` didn't correctly create the aliases - `fastfile_rm` didn't correctly remove the alias Fixes #9151 Closes #9574 --- plugins/fastfile/README.md | 13 +++++++------ plugins/fastfile/fastfile.plugin.zsh | 15 ++++++++------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/plugins/fastfile/README.md b/plugins/fastfile/README.md index 37f5b2f53..32f619ffd 100644 --- a/plugins/fastfile/README.md +++ b/plugins/fastfile/README.md @@ -4,6 +4,7 @@ This plugin adds a way to reference certain files or folders used frequently usi a global alias or shortcut. To use it, add `fastfile` to the plugins array in your zshrc file: + ```zsh plugins=(... fastfile) ``` @@ -13,36 +14,38 @@ plugins=(... fastfile) Example: you access folder `/code/project/backend/database` very frequently. First, generate a shortcut with the name `pjdb`: + ```zsh $ fastfile pjdb /code/project/backend/database ``` Next time you want to access it, use `§pjdb`. For example: + ```zsh $ cd §pjdb $ subl §pjdb ``` + where § is the fastfile prefix (see [below](#options) for how to change). **Note:** shortcuts with spaces in the name are assigned a global alias where the spaces have been substituted with underscores (`_`). For example: a shortcut named `"hello world"` corresponds with `§hello_world`. - ## Functions -- `fastfile `: generate a shortcut. +- `fastfile [path/to/file/or/folder]`: generate a shortcut. + If the second argument is not provided, the current directory is used. - `fastfile_print `: prints a shortcut, with the format ` -> `. - `fastfile_ls`: lists all shortcuts. -- `fastfile_rm `: remove a shortcut. +- `fastfile_rm `: remove a shortcut. - `fastfile_sync`: generates the global aliases for the shortcuts. - ### Internal functions - `fastfile_resolv `: resolves the location of the shortcut @@ -51,7 +54,6 @@ a shortcut named `"hello world"` corresponds with `§hello_world`. - `fastfile_get `: get the real path of the shortcut. - ## Aliases | Alias | Function | @@ -62,7 +64,6 @@ a shortcut named `"hello world"` corresponds with `§hello_world`. | ffls | `fastfile_ls` | | ffsync | `fastfile_sync` | - ## Options These are options you can set to change certain parts of the plugin. To change diff --git a/plugins/fastfile/fastfile.plugin.zsh b/plugins/fastfile/fastfile.plugin.zsh index 6288bb275..896fed5f7 100644 --- a/plugins/fastfile/fastfile.plugin.zsh +++ b/plugins/fastfile/fastfile.plugin.zsh @@ -44,7 +44,7 @@ function fastfile() { # The path to the shortcut file # function fastfile_resolv() { - echo "${fastfile_dir}${1}" + echo "${fastfile_dir}/${1}" } # @@ -78,9 +78,9 @@ function fastfile_print() { # (=> fastfile_print) for each shortcut # function fastfile_ls() { - for f in "${fastfile_dir}"/*(NF); do - file=`basename "$f"` # To enable simpler handling of spaces in file names - varkey=`echo "$file" | tr " " "_"` + for f in "${fastfile_dir}"/*(N); do + file=$(basename "$f") # To enable simpler handling of spaces in file names + varkey=$(echo "$file" | tr " " "_") # Special format for columns echo "${fastfile_var_prefix}${varkey}|->|$(fastfile_get "$file")" @@ -98,15 +98,16 @@ function fastfile_ls() { function fastfile_rm() { fastfile_print "$1" rm "$(fastfile_resolv "$1")" + unalias "${fastfile_var_prefix}${1}" } # # Generate the aliases for the shortcuts # function fastfile_sync() { - for f in "${fastfile_dir}"/*(NF); do - file=`basename "$f"` # To enable simpler handling of spaces in file names - varkey=`echo "$file" | tr " " "_"` + for f in "${fastfile_dir}"/*(N); do + file=$(basename "$f") # To enable simpler handling of spaces in file names + varkey=$(echo "$file" | tr " " "_") alias -g "${fastfile_var_prefix}${varkey}"="'$(fastfile_get "$file")'" done