* Steve Kemp had this to say on [22 Oct 2008, 10:35:11 +0100]: > On Tue Oct 21, 2008 at 21:06:13 -0400, Sadrul Habib Chowdhury wrote: > > > Hi. I tried your patch tonight, and have made some changes. The patchset > > is here: http://www.pidgin.im/~sadrul/pp/screen-alias/. 0001 is your > > patch (after some whitespace changes), 0002 fixes a crash from > > unaliasing, and 0003 changes some of how the aliasing works. > > Thanks. > > (I've already changed the deletion to avoid that crash. :) > > > > bind x alias_name > > > > > > Unfortunately that eventually causes problems, because SaveAction > > > keeps pointers to my linked-list which get juggled around when aliases > > > are added or removed. > > > With 0003, both creating binding for aliases, and setting aliases for > > aliases are possible. > > Indeed it mostly works, but there is still a problem. Try this: > > alias foo echo 'testing' > bind p foo > alias foo > > Now you're in the same situation that I was, you've got an alias > that doesn't exist bound to a key. Press <ctrl-a p> and screen > will crash.
Yes it does. Thankfully, it was because of a small typo, and now it's fixed! Thanks! (http://www.pidgin.im/~sadrul/pp/screen-alias/0004-Tyop.-Fixes-a-crash-after-unaliasing-a-bind.patch) Instead of having SaveAction keep a pointer in the linked list, what I did was assign an action number to the aliased commands (starting from RC_LAST + 1), and track the command numbers (ie., do the same as thing as before). This won't work in a situation like this: alias foo command bind f foo alias foo alias foo somecommand <-- ('somecommand' could be 'command') But such a situation is probably more contrived than realistic. > Also I notice a minor functionality change. With this: > > alias bar echo > > My version: > <Ctrl+a :> bar 'test' > -> test > > Your version: > <ctrl+a :> bar 'test' > -> : echo: one or two arguments required > Indeed. I'll try to look at this, possibly during this weekend. Thanks for trying out the changes. Cheers, Sadrul