Welcome to Software Development on Codidact!
Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.
Post History
In zsh, I want to create a function that updates RPROMPT when I have typed cd .. into the terminal. As a starting point, I know I can, for example, add the + character to my RBUFFER when I have typ...
#2: Post edited
In zsh, I want to create a function that updates `RPROMPT` when I have typed `cd ..` into the prompt. As a starting point, I know I can, for example, add the `+` character to my `RBUFFER` when I have typed `cd ..` by adding the following to my `.zshrc`:- ```zsh
- function self-insert() {
- zle .self-insert
- if [[ $BUFFER == "cd .." ]]; then
- RBUFFER+="+"
- fi
- }
- zle -N self-insert
- ```
- I have tried modifying this command to change `RPROMPT` instead of `RBUFFER` as follows:
- ```zsh
- function self-insert() {
- zle .self-insert
- if [[ $BUFFER == "cd .." ]]; then
- RPROMPT="ABC"
- zle reset-prompt
- fi
- }
- zle -N self-insert
- ```
- The effect of this command is that my `RPROMPT` gets set to `ABC`, but only after I have *executed* the command, rather than once I have *typed* the command (as in the first example). I have also tried moving the `zle reset-prompt` command to different places in the function, but that doesn't seem to help.
- In zsh, I want to create a function that updates `RPROMPT` when I have typed `cd ..` into the terminal. As a starting point, I know I can, for example, add the `+` character to my `RBUFFER` when I have typed `cd ..` by adding the following to my `.zshrc`:
- ```zsh
- function self-insert() {
- zle .self-insert
- if [[ $BUFFER == "cd .." ]]; then
- RBUFFER+="+"
- fi
- }
- zle -N self-insert
- ```
- I have tried modifying this command to change `RPROMPT` instead of `RBUFFER` as follows:
- ```zsh
- function self-insert() {
- zle .self-insert
- if [[ $BUFFER == "cd .." ]]; then
- RPROMPT="ABC"
- zle reset-prompt
- fi
- }
- zle -N self-insert
- ```
- The effect of this command is that my `RPROMPT` gets set to `ABC`, but only after I have *executed* the command, rather than once I have *typed* the command (as in the first example). I have also tried moving the `zle reset-prompt` command to different places in the function, but that doesn't seem to help.
#1: Initial revision
how to update RPROMPT each time a key is pressed in zsh
In zsh, I want to create a function that updates `RPROMPT` when I have typed `cd ..` into the prompt. As a starting point, I know I can, for example, add the `+` character to my `RBUFFER` when I have typed `cd ..` by adding the following to my `.zshrc`: ```zsh function self-insert() { zle .self-insert if [[ $BUFFER == "cd .." ]]; then RBUFFER+="+" fi } zle -N self-insert ``` I have tried modifying this command to change `RPROMPT` instead of `RBUFFER` as follows: ```zsh function self-insert() { zle .self-insert if [[ $BUFFER == "cd .." ]]; then RPROMPT="ABC" zle reset-prompt fi } zle -N self-insert ``` The effect of this command is that my `RPROMPT` gets set to `ABC`, but only after I have *executed* the command, rather than once I have *typed* the command (as in the first example). I have also tried moving the `zle reset-prompt` command to different places in the function, but that doesn't seem to help.