summaryrefslogtreecommitdiff
path: root/plugins/fastfile
diff options
context:
space:
mode:
authorShundeev Egor <shundeevegor@gmail.com>2021-01-05 19:46:05 +0300
committerMarc Cornellà <hello@mcornella.com>2021-12-28 18:53:48 +0100
commit79cf2a0d43ddda338487c85c420f67fe9c56687f (patch)
treede2f83507e134d927eaed098e18095d2b8d88517 /plugins/fastfile
parent0613232202b92349cee79804fc46e0495152ef12 (diff)
downloadzsh-79cf2a0d43ddda338487c85c420f67fe9c56687f.tar.gz
zsh-79cf2a0d43ddda338487c85c420f67fe9c56687f.tar.bz2
zsh-79cf2a0d43ddda338487c85c420f67fe9c56687f.zip
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
Diffstat (limited to 'plugins/fastfile')
-rw-r--r--plugins/fastfile/README.md13
-rw-r--r--plugins/fastfile/fastfile.plugin.zsh15
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 <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
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