Browse Source

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
Shundeev Egor 3 years ago
parent
commit
79cf2a0d43
2 changed files with 15 additions and 13 deletions
  1. 7 6
      plugins/fastfile/README.md
  2. 8 7
      plugins/fastfile/fastfile.plugin.zsh

+ 7 - 6
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 <shortcut_name> <path/to/file/or/folder>`: generate a shortcut.
+- `fastfile <shortcut_name> [path/to/file/or/folder]`: generate a shortcut.
+  If the second argument is not provided, the current directory is used.
 
 - `fastfile_print <shortcut_name>`: prints a shortcut, with the format
   `<prefix><shortcut_name> -> <shortcut_path>`.
 
 - `fastfile_ls`: lists all shortcuts.
 
-- `fastfile_rm <shortcut_name> `: remove a shortcut.
+- `fastfile_rm <shortcut_name>`: remove a shortcut.
 
 - `fastfile_sync`: generates the global aliases for the shortcuts.
 
-
 ### Internal functions
 
 - `fastfile_resolv <shortcut_name>`: resolves the location of the shortcut
@@ -51,7 +54,6 @@ a shortcut named `"hello world"` corresponds with `§hello_world`.
 
 - `fastfile_get <shortcut_name>`: 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

+ 8 - 7
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