From: ståle p. <st...@gm...> - 2011-04-14 12:05:30
|
i couldnt wait till the evening so i did some changes to my jline1 branch and removed UnixViTerminal and instead added the notion of vi-mode awareness in Terminal. with this change both UnixTerminal and WindowsTerminal will check for vi-mode before parsing the input stream. the commit can be found here: https://github.com/stalep/jline/commit/d23996ea3d4ec73db7de2a6cb011b8bdc2d1f140 i havent tested this on windows (i only use linux), but ill try to add some tests to better verify vi-mode (in both unix/windows terminal) and then ill start looking at how to port this to jline2. ståle 2011/4/14 Guillaume Nodet <gn...@gm...>: > Yeah, that's actually what lead me to refactoring how key binding were > working in the jline2 branch. > No need to hack the terminal anymore :-) > > 2011/4/14 ståle pedersen <st...@gm...>: >> thanks, i put it in a subclass of UnixTerminal since UnixTerminal do a >> match of escape to catch some arrow keys. this prevented any way of >> intercepting esc key presses so the easiest way around that was to >> subclass it. >> >> after thinking of this a bit more i could probably refactor out the >> vi-mode logic into either ConsoleReader or a separate object and only >> add a simple check in the existing terminals (windows/unix) if vi-mode >> is enabled. >> ill test it out later tonight and let you know how it goes. >> >> ståle >> >> 2011/4/14 Guillaume Nodet <gn...@gm...>: >>> Nice work! >>> >>> I'm wondering if all the vi logic would be better located in the >>> ConsoleReaer ? That seems quite independant of the terminal to me and >>> that way, a windows terminal could also benefit from the same thing. >>> >>> 2011/4/14 ståle pedersen <st...@gm...>: >>>> thanks, i looked a bit at it and im not sure how to implement vi-mode >>>> into jline2 yet. the problem is that vi have several "modes". im >>>> guessing that the best thing would be to quick check if we're in >>>> vi-mode and then call a vi parsing method with the inputstream as >>>> argument. >>>> >>>> i completed the work i started on jline1 and currently it supports a >>>> large variety of vi commands, eg: >>>> - undo (currently hardcoded to 50), - this should work for emacs mode >>>> as well, only need to add the key binding. >>>> - repeat (this should also work in emacs mode) >>>> - jump between words back and forth (with space as delimiter as well as .-,etc) >>>> - remove words in front and back of the cursor >>>> - different movement/edit abilities++ >>>> >>>> whats currently not implemented is paste (vi support paste of the last >>>> edit buffer) and using numbers in front of commands (not sure if i >>>> want to implement that at all). >>>> ive also added a check when ConsoleReader.readline() returns if it >>>> matches "internal commands". atm those internal commands are: vi-mode >>>> (changing terminal to UnixViTerminal) and emacs-mode (changing >>>> terminal to UnixTerminal). >>>> its very crude atm, but ill make it more safe tomorrow. >>>> >>>> if you are thinking of pushing out another release of jline1 i would >>>> like you to consider pulling these changes into master. let me know >>>> and i can send you a pull request from github. >>>> >>>> regards, ståle >>>> >>>> On Wed, Apr 13, 2011 at 9:31 AM, Guillaume Nodet <gn...@gm...> wrote: >>>>> I've just added some key bindings to the jline2 master branch. >>>>> Those are unused for now, but the idea would be to switch the internal >>>>> KeyMap used when entering vi mode. >>>>> Vi mode should also be selectable from the Configuration, by using the >>>>> same mechanism as readline(). >>>>> The state should be kept inside the ConsoleReader class I think. >>>>> Let me know if you need more infos. >>>>> >>>>> 2011/4/12 ståle pedersen <st...@gm...>: >>>>>> i looked at your refactoring, and i see that you have added some >>>>>> emacs/vi keybinding enums etc. >>>>>> what im struggeling to find is a way to support vi's notion of edit >>>>>> and command mode in ConsoleReader.readline(..). could you please >>>>>> explain a bit? :) >>>>>> >>>>>> >>>>>> 2011/4/12 Guillaume Nodet <gn...@gm...>: >>>>>>> It's the master branch of jline2 : >>>>>>> https://github.com/jline/jline2/commits/master >>>>>>> >>>>>>> 2011/4/12 ståle pedersen <st...@gm...>: >>>>>>>> yes, that would be interesting. can you give me the url for the branch >>>>>>>> and ill take a look later tonight. >>>>>>>> >>>>>>>> 2011/4/12 Guillaume Nodet <gn...@gm...>: >>>>>>>>> That's clearly related to the work i've been doing on jline2. >>>>>>>>> I've committed a big patch which allow a full emulation of readline(). >>>>>>>>> Readline allow switching beetween emacs and vi modes dynamically. >>>>>>>>> I haven't really worked on the vi mode though, but most of the emacs >>>>>>>>> bindings work, including macros definitions. >>>>>>>>> Maybe you could have a look at it if you're interested ? >>>>>>>>> >>>>>>>>> 2011/4/11 ståle pedersen <st...@gm...>: >>>>>>>>>> hi, ive made a few patches that adds support for vi-bindings in jline. >>>>>>>>>> ive pushed my changes to my github branch here: >>>>>>>>>> https://github.com/stalep/jline/tree/vi >>>>>>>>>> >>>>>>>>>> the only new feature ive added to jline is jumping to next/prev word >>>>>>>>>> separated with space, and fixed some other functions like CLEAR_LINE >>>>>>>>>> etc. >>>>>>>>>> currently it enables vi-mode with a system property, but im currently >>>>>>>>>> looking into changing this into something more dynamic. >>>>>>>>>> >>>>>>>>>> my changes shouldnt affect jline much since i created a separate >>>>>>>>>> terminal class for the vi-bindings. >>>>>>>>>> >>>>>>>>>> regards, ståle >>>>>>>>>> >>>>>>>>>> ------------------------------------------------------------------------------ >>>>>>>>>> Forrester Wave Report - Recovery time is now measured in hours and minutes >>>>>>>>>> not days. Key insights are discussed in the 2010 Forrester Wave Report as >>>>>>>>>> part of an in-depth evaluation of disaster recovery service providers. >>>>>>>>>> Forrester found the best-in-class provider in terms of services and vision. >>>>>>>>>> Read this report now! http://p.sf.net/sfu/ibm-webcastpromo >>>>>>>>>> _______________________________________________ >>>>>>>>>> Jline-users mailing list >>>>>>>>>> Jli...@li... >>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/jline-users >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Cheers, >>>>>>>>> Guillaume Nodet >>>>>>>>> ------------------------ >>>>>>>>> Blog: http://gnodet.blogspot.com/ >>>>>>>>> ------------------------ >>>>>>>>> Open Source SOA >>>>>>>>> http://fusesource.com >>>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Cheers, >>>>>>> Guillaume Nodet >>>>>>> ------------------------ >>>>>>> Blog: http://gnodet.blogspot.com/ >>>>>>> ------------------------ >>>>>>> Open Source SOA >>>>>>> http://fusesource.com >>>>>>> >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Cheers, >>>>> Guillaume Nodet >>>>> ------------------------ >>>>> Blog: http://gnodet.blogspot.com/ >>>>> ------------------------ >>>>> Open Source SOA >>>>> http://fusesource.com >>>>> >>>> >>> >>> >>> >>> -- >>> Cheers, >>> Guillaume Nodet >>> ------------------------ >>> Blog: http://gnodet.blogspot.com/ >>> ------------------------ >>> Open Source SOA >>> http://fusesource.com >>> >> > > > > -- > Cheers, > Guillaume Nodet > ------------------------ > Blog: http://gnodet.blogspot.com/ > ------------------------ > Open Source SOA > http://fusesource.com > |