aboutsummaryrefslogtreecommitdiffstats
path: root/cdlog.sh
Commit message (Collapse)AuthorAgeFilesLines
* cdr: delete unwanted contexts with d prefix.Kaz Kylheku2024-03-141-1/+9
| | | | | | | * cdlog.sh (cdlog.recover): Support d prefix. We only mention it in the prompt if there are two or more contexts. * README.md: Documented.
* cd: support 1-9 argument, like mcd.Kaz Kylheku2024-03-141-2/+4
| | | | | | | | | * cdlog.sh (cdlog.chdir): Check for the directory argument being a value 1 to 9, and substitue the indicated cdlog_hist entry. * README.md: Document. Also correct reference to cdlog_fifo which should be cdlog_hist.
* pd: implement -f option.Kaz Kylheku2024-03-141-2/+7
| | | | | | | | | | | | Problem: when the cdlog contains a directory that cannot be entered, for instance due to not existing any more, we would like to delete it with "pd", but cannot. * cdlog.sh (cdlog.pop): Implement -f (force) option which will ignore the failing cd command and delete the entry anyway. Fix typo in header comment. * README.md: Mention -f in description of `pd` alias.
* Commands for listing and deleting cd aliases.Kaz Kylheku2024-03-071-0/+29
| | | | | | | | * cdlog.sh (cdlog.alias): Check against empty alias name. (cdlog.aliases, cdlog.unalias): New functions. (cdaliases, cdunalias): New aliases. * README.md: Documented.
* completion: set nospace option.Kaz Kylheku2024-03-061-0/+2
| | | | | | | | * cdlog.sh (cdlog.complete): Set compopt -o nospace so that the completion doesn't automatically add a space. That's what we want when completing directories for cd. It's annoying to have to backspace over a space to continue completion.
* Bugfix: handle empty argument in cdlog.chdir.Kaz Kylheku2024-02-251-1/+4
| | | | | * cdlog.sh (cdlog.chdir): Do not treat an empty argument as a valid alias. In that case just return.
* Allow unlimited internal history.Kaz Kylheku2024-02-251-29/+23
| | | | | | | | | | | | | | | | * cdlog.sh (cdlog_fifo): Renamed to cdlog_hist. * README.md: All references to FIFO replaced with "history". Claims that the FIFO is nine elements long are removed. (cdlog.update): Save the entire array, not relying on the nine $c1 through $c9 variables. (cdlog.init): Reinitialize by deleting the elements of the cdlog_hist array. (cdlog.recover): Print only up to 10 entries from the files. (cdlog.chdir): Remove array limits; let it grow. (cdlog.pop): Pop the entire array, not just nine entries. Unset the array entry rather than blanking it.
* Use global array for FIFO.Kaz Kylheku2024-02-251-40/+39
| | | | | | | | | | | | | | | | | | | | | | | The $c1 to $c9 variables are now just derived items. * cdlog.sh (cdlog_fifo): New array variable. (cdlog.args): Now all this function does is copy from the array to the short variables. (cdlog.update): Now calls cdlog.args to copy ${cdlog_fifo[@]} to $c1 to $c9. (cdlog.init): Initialize dclog_fifo via ${d[]} alias, and call cdlog.args to also init the short variables. (cdlog.recover): Map from file directly into cdlog_fifo array, and call cdlog.update instead of cdlog.args. (cdlog.chdir, cdlog.rot, cdlog.pop): Local array d is alias for cdlog_fifo. Use cdlog.update instead of cdlog.args. (cdlog.mcd): Local array d is alias for cdlog_fifo. * README.md: Don't say that the FIFO is stored in variables c1 through c9 but in in the cdlog_fifo array. The variables are now for convenience only.
* Add tab completion for cd aliases.Kaz Kylheku2024-02-231-0/+29
| | | | | | | | | * README.md: Documented. * cdlog.sh (cdlog.complete): Completion function that completes on directories, including CDPATH, as well as cdlog's cd aliases. (toplevel): Register the completion function.
* New, LRU mode; better than removed autocs feature.Kaz Kylheku2024-02-231-6/+27
| | | | | | | | | * cdlog.sh (cdlog_lru): New Boolean configuration variable, blank/false by default. (cdlog.chdir): If cdlog_lru is true, perform the rotation through to the most recent occurrence of the new directory. * README.md: Documented.
* Revert "Implement autocs mode."Kaz Kylheku2024-02-231-17/+0
| | | | This reverts commit efcc4b981d2a10ac3b10522c596f8bf9ddff6ff9.
* New cd alias feature.Kaz Kylheku2024-02-231-2/+33
| | | | | | | | | * cdlog.sh (cdlog_alias): New global array. * README.md: Documented. (cdlog.chdir): Check for and expand alias. (cdlog.alias): New function. (cdalias): New alias.
* Implement autocs mode.Kaz Kylheku2024-02-221-0/+19
| | | | | | | | | | | * cdlog.sh (cdlog_autocs): New variable. (cdlog.chdir): Implement autocs logic, if enabled. (cdlog.mcd): Use Bash dynamic scoping to override the cdlog_autocs variable false; we don't want mcd to have swapping semantics regardless of autocs mode; the user must use the distinct command mcs. * README.md: Documented.
* bug: path 8 duplicated into 9.Kaz Kylheku2024-02-131-1/+1
| | | | * cdlog.sh (cdlog.args): c9 wrongly assigned $8.
* Split off recovery from initialization.Kaz Kylheku2024-02-131-6/+17
| | | | | | | | | | | | | | Prompting the user on startup can be a nuisance. For instance, each time I make a new shell out of a text editor, I get the prompt. Let's just leave the user in a new context, and make it an explicit command to switch context. * cdlog.sh (cdlog.init): Remove logic for selecting a new context, leaving only the allocation of a new context. (cdlog.recover): New function, split off from cdlog.init. (cdr): New alias. * README.md: Documented.
* Implement context cloning.Kaz Kylheku2024-02-081-3/+15
| | | | | | | | | | The user can copy a given context into the newly allocated one, rather than switch to a given context. * cdlog.sh (cdlog.init): Allow the user to input a context number prefixed by c. In that case, we copy the specified context file into the $cdlog_dirs file, leaving that variable alone.
* bugfix: don't let user select invalid context number.Kaz Kylheku2024-02-081-1/+2
| | | | | | * cdlog.sh (cdlog.get_param): Only produce output if shift succeeds. If shift fails, it means that many shifts are not possible and the parameters are unaffected.
* Implement multiple persisted sessions.Kaz Kylheku2024-02-081-4/+68
| | | | | | | | | | | * cdlog.sh (cdlog.update): Name of file is now in $cdlog_dirs. (cdlog.get_param): New function. (cdlog.init): Implement the LRU session selection and optional recovery. The variable $cdlog_dirs is established, pointing to the selected session file. (mainline): Run cdlog.init if $cdlog_dirs is empty. * README.md: Documented.
* Persist state in ~/.cdlog.dirs.Kaz Kylheku2024-02-081-14/+45
| | | | | | | | | | | | | | | | | * cdlog.sh (cdlog.nicks): Function removed. (cdlog.update): New function, performing task of cdlog.nicks as well as persistence to ~/.cdlog.dirs file. (cdlog.init): New function that initializes the c1-c9 variables. (mainline): Call cdlog.init. This is now done later in the file after the function definitions. (cdlog.args, cdlog.chdir): Call cdlog.update instead of cdlog.nicks. This is also how the variables $x to $w will be set the first time when recovering state, because cdlog.init calls cdlog.args to install the FIFO, and cdlog.args will call cdlog.update. * README.md: Documented.
* pd: support optional argument about which entry to pop.Kaz Kylheku2024-02-031-8/+23
| | | | | | | * cdlog.sh (cdlog.pop): Rewritten to take argument 1-9, and iterate from there. * README.md: Documented.
* cll command to list all nine.Kaz Kylheku2024-02-011-1/+9
| | | | | | | | * cdlog.sh (cdlog): Take -l option to print all nine directories in the FIFO. (cll): New alias, for cdlog -l. * README.md: Documented.
* Don't use global x for looping.Kaz Kylheku2024-02-011-2/+2
| | | | | | * cdlog.sh (cdlog.mcd): Oh boy; we have used our own $x variable as a loop dummy. Switch to i which is set up as local.
* mcd: scroll-region-friendly line clearing.Kaz Kylheku2024-02-011-1/+4
| | | | | | | | | * cdlog.sh (cdlog.mcd): Going up ten lines with \e[10A and then clearing to the end of screen with \e[J is unfriendly when the user has a scroll-protected region at the bottom showing a status line. Instead, let us go up one line at a time ten times with \e[A, and clear each line to end of line with \e[K.
* Use range expansion.Kaz Kylheku2024-02-011-1/+1
| | | | * cdlog.sh (cdlog.mcd): Replace 1 2 3 ... 9 with {1..9}.
* New: mcd, mcs: menu-based cd and cs.Kaz Kylheku2024-01-251-0/+37
| | | | | | | * cdlog.sh (cdlog.mcd): New function. (mcd, mcs): New aliases. * README.md: Documented.
* cdlog: simplify prefixes.Kaz Kylheku2024-01-251-5/+6
| | | | | * cdlog.sh (cdlog): Just print numeric indices before the paths.
* print new PWD in pd and cs.Kaz Kylheku2024-01-251-0/+3
| | | | | * cdlog.sh (cdlog.rot, cdlog.pop): Print new current directory if change successful.
* Add cl alias for cdlog.Kaz Kylheku2024-01-231-0/+1
|
* Improve initialization.Kaz Kylheku2024-01-191-8/+6
| | | | | | * cdlog.sh (toplevel): Ensure that c1 exists, so that the init code doesn't access a nonexistent c1. Condense the assignments in the init block.
* Reduce repeated code.Kaz Kylheku2024-01-191-13/+7
| | | | | | * cdlog.sh (cdlog.rot): Eliminate repeated code, distinguishing different parts with a flag indicating the first loop iteration.
* Generalize swap to rotate.Kaz Kylheku2024-01-191-18/+28
| | | | | | | | * cdlog.sh (cdlog.swap): Function removed. (cdlog.rot): New function. (cs): Alias now points to cdlog.rot. * README.md: Updated.
* Remove repetitive code from cdlog.swap.Kaz Kylheku2024-01-191-44/+24
| | | | | | * cdlog.sh (cdlog.args): New function. (cdlog.swap): Use array to do swap in one case.
* Minor code tidying.Kaz Kylheku2024-01-191-17/+9
| | | | | | * cdlog.sh (cdlog.chdir, cdlog.swap): Condense assignment block to fewer lines. (toplevel): Move "cs" alias below.
* cs takes argument; swapping behavior removed from cd.Kaz Kylheku2024-01-191-18/+74
| | | | | | | | * cdlog.sh (cdlog.chdir): No specifial behavior when $PWD equals $c1. (cdlog.swap): Swapping behavior implemented here now, with optional numeric argument to swap with entries other than first.
* Change semantics of swap implementation.Kaz Kylheku2024-01-181-4/+4
| | | | | | * cdlog.sh (cdlog.chdir): When the user changes to $c1, let's not involve $c2 but just effectively exchange the current working directory and $c1.
* Change naming of functions to dot notation.Kaz Kylheku2024-01-181-8/+8
|
* Initial version of cdlog.Kaz Kylheku2024-01-181-0/+114