Hi Daniel Shahaf, Thank you very much for responding. To get some context to my use case you can check: https://www.reddit.com/r/git/comments/jdl11c/can_not_use_some_of_my_aliases_with_bare_repo/ https://stackoverflow.com/questions/64416625/can-not-use-some-of-my-aliases-with-bare-repo Long story short, as far I know, there is no easy way to use some of my aliases with bare repo. There are some solutions like special git alias like: example1 = "!f() { .....; }; f" However, I am feeling much comfortable with this approach. Here, I am trying to change my command on the fly by running it before accept-line. The widget is working perfectly for me except, it is not saving the original buffer in the history. I need a command or widget like *save-to-history *so that I can use it the following way: if [[ $BUFFER =~ ^"g d untrack-all" ]] then *zle save-to-history $BUFFER* BUFFER="g d rm --cached -r ~" zle .accept-line .... That way I can save the value of the $BUFFER in the .zsh_history file in proper format. And yes you are right when you said: I'd scratch the approach of checking [[ $BUFFER =~ '^g d foo' ]], > because it'll break as soon as you want to interactively use complex > commands (e.g., sublists, lists, conditions, loops). > But, this script is only for my personal use, so I will continue tweaking it as per my requirement. Being said that, I actually do not know how to check PREBUFFER before checking BUFFER. I will be glad if you can give me some code to fix this issue. *Thanks and Best Regards,Ahmad Ismail* On Mon, Oct 26, 2020 at 2:24 AM Daniel Shahaf wrote: > Ahmad Ismail wrote on Sun, 25 Oct 2020 01:00 +0600: > > I am currently working on a widget. It is used so that I can use my git > > alias also for my dotfiles. > > > > The widget is given bellow: > ⋮ > > Now, the problem is, the commands I am invoking are not being saved in > the > > history file. > > For example, if I use: > > > > % g d add-and-commit "Few Modifications" > > > > it saves: > > > > : 1603565685:0;git d add ~ && g d commit -am "Few Modifications" > > > > I know the command below is the command I actually ran. But I want to > save > > the command I used as well. Is there any way I can save a command in > > history from within the widget? > > I don't understand your use-case. You stated your purpose is to use > your «g» alias in your dotfiles, but then you gave an example from > interactive use, and in any case dotfiles don't run widgets. > > In any case, I'd scratch the approach of checking [[ $BUFFER =~ '^g d foo' > ]], > because it'll break as soon as you want to interactively use complex > commands (e.g., sublists, lists, conditions, loops). > > I don't understand why you can't drop a script literally called «g» > into a directory in $path and implement in it whatever logic you want. > (Or possibly a function, depending on your use-case.) > > As to your widget code, you don't need kill-whole-line if you set > BUFFER explicitly. Also, you check BUFFER without first checking > PREBUFFER, which is subtly wrong because $PREBUFFER may end with a line > continuation. > > Cheers, > > Daniel >