NB6 ISSUES - CompletionScrollPane default both UP/KP_UP keys, see Module.java. Visual mode particulars TODO: ALT-DRAG for rectangular selection (cool) (conventional) Some missing stuff for char/line modes "p" in visual mode "r" in visual mdoe Test block yank into upper case yankreg Test op_replace setting '[ and '] for all visual modes Also, Bang "!" command issues 4) Change message to, Running "CommandName", Ctrl-C to abort. Only first word of the command, e.g. sort Nomadic editors have several issues. A Nomadic editor is embedded in dialogs, examples are the debugger's "Evaluate Expression" or various editors installed as part of "Tools > Options". Escape doesn't exit input mode, it dismisses the dialog. For a workaround, in input mode Ctrl-L, Ctrl-O, Ctrl-Q, Ctrl-[, Ctrl-] exit input mode. (Assuming the given key is enabled for jvi) If keybindings are changed, for example by adding a shortcut or enabling/disablign the jVi module, the debuggers "Evaluate Expression" doesn't hand , or correctly. This is issue 97130 at http://www.netbeans.org/issues/show_bug.cgi?id=97130 . This has been fixed in the NB6 tree; availabe NB6M8. Refactoring Undo/redo mostly in buffer move stuff into FileSys Make TextViewCache an abstract superclass of TextView. Cleaner. OR move textViewCache into TextView (now that there is a ViBuffer) get rid of getAlternateTextView (not that have ViBuffer) For the file-modifers, have a ViBuffer.getFile(), with this all the file modifier code can be in jvi package, probably ColonCommands. ViBuffer ViBuffer --> ViBufferIface Buffer --> ViBuffer DefaultBuffer --> SwingBuffer (SwingViBuffer) ViTextView (should this be ViWindow) TextView --> SwingTextView (maybe SwingWindow/SwingViWindow) Misc.getvcol(tv,) --> Misc.getvcol(buf,) BUGS/ISSUES - :0ta , go to most recent tag - expandTabs only works at begining of line, as part of <,> (been that way for a long time). Need to implement Edit.ins_tab(). - "a" on empty document. - highlight all matches as typing, part of incr search (like netbeans) Also, assoc a serial number with currentHightlight, see NB's updateHilite - visual mode selection should show up on all documents. - OptionsBeanBase needs to fire events if main Options change. - Combo's JTextField, listen for document changes. BUGS related to NB integration - sign nb-patch jars, release nb-patch as a nbm? - "%:e" when file has no extension should report an error - when ":ts" command, need a way to find out the target identifier. - "^J d" The "S" of System.err.println gets lost. Workaround: edit the macro, Tools > Options > AdvancedOptions > Editing > JavaEditor > Macros > Edit so that it reads: ...caret-end-line "a" insert-break... May add actions like vi-append, vi-insert, vi-command (or maybe that last one should be called vi-escape) that can be used in NB macros. I'm guessing that the string comes in as keystrokes and the S goes into input mode so it mostly works. Ah, this is a Macros issue. Need to set up some kind of interface with macros? - "g,", "g;" for jump list change next, prev doesn't work. Isn't the jump list maintained by monitoring the document? - after guarded 'g/a/d', sometimes error message is only shown for a few seconds before getting cleared due to scroll event. - after guarded '1,$s/a/b/' cursor moves to line of the first undone change. - Extend next/previous bookmark to take a count (non wrapping) - folds get opened while moving through file, need to move count lines on the screen,use "visual" interface to document, (manipulate view not model). - show marks in gutter. Maybe a way to display the jVi mark in the right side gutter, as an asci character, would need to turn it on/off since full char is big. "m*" toggle mark display. - Who is handling the tab character! - Using ':e#' type of commands doesn't work well with DiffExecuters. QUICK TODO - Add Ctrl-^, should be simple since :e#N works. - Implement Msg interface that takes a type/priority so can print in different colors, substitue confirm should be in bold green. - Ctrl-w, Ctrl-u in insert mode to delete word/line before cursor. TODO - Now that nesting begin/endUndo, simplify beginRedoUndo... - ]m,]M,[m,[M. Use the java document structure stuff? - backspace in :/? dialog should act like escape, ie kill dialog - :registers aka :display command - FN completion: :e^ for mru number, start at :e^0 For following use class search? :e+ open proj, :e* for file system - convert docs to html both for website and javahelp, see http://vimdoc.sourceforge.net/htmldoc/cmdline.html#filename-modifiers That is probably processed from regular help, modify conversion program to also generate javahelp. How about DocBook? - :retab - Use Misc.adjust_clip_reg everywhere appropriate. - Add %, # substitution for : commands, see cmdline.txt, shellslash, ... - Launch vim on file/node use Vim Logo button, following does for jEdit http://plugins.netbeans.org/PluginPortal/faces/MainPage.jsp?pluginid=2902 - :sh command, see Sandip's Path Tools for example. http://plugins.netbeans.org/PluginPortal/faces/MainPage.jsp?pluginid=676 - Port vim7 up/down arrow in insert mode removes auto indent. - ins_bs simplifications from vim turn off did_ai when shouldn't - programatically invoke ant target - nice looking property sheets for options. - Revisit the command line entry, stretch its width to the assoc window. Get model working with "new" java scheme. - Allow mouse keys while in input mode. - selectmode options - add more cpoptions, G.p_cpo. CPO_YANK, ... - CommandLineWindow constructor cast's owner as a Frame. jdk1.4 allowed Dialog, jdk1.6 allows Window. Typically, only nomads are not a Frame. WISHLIST - ^w commands for window splitting traversal - DebugTrace action. set up an action that makes a breakpoint on the current line and brings up the customize dialog with no threads stop, and the entire line about what to print selected (may want to start the line with {methodName} or some such. And have a on the print line do "OK" on the dialog. Not really a jVi issues, but I sure want this. WHERE TO NOW - Debug commands. I'd like to add bindings for debugger interactions. They could be normal mode commands or ":" commands or both. What syntax? For normal mode, the letter "v" is available, since visual mode is not supported; and there's room in some of the other asci chars, and could use an unused control char. A three letter sequence, eg "gd?" could be used. DOC - "g,", "g;" (but NB isn't coopertating) CLEANUP - Implement tv.getLinelength(), Util, Mark, ... - Use public static final String for all referenced FSAction, and put the names in a set so can be used to test what actions are found. This is useful for moving to new netbeans version that may have different file sytsem layouts. - FPOS stuff still isn't quite right. FPOS should not be public. Could have a public abstract thing, with set(l,c) abstract. FPOS should never get out of its package. Or somehow tie FPOS to the textview, inner class. - instead of "void ts.setMarkOffset(ViMark, offset)" have "ViMark tv.createMark(offset)" - create marks lazily? Marks should use weak references? Maybe it doesn't matter, they should all disapear when text view shuts down. How do marks get stashed in document, should be curbuf? - Normal.editBusy is used in too many places. Now it is strangley hooked to opInsertBusy. CONSIDER - commands for open/close all_comments/all_code - Use multi-keymap for stuff like '^W^S', they would have to stuff the two chars in jVi input buffer. Reason would be so that ^S by itself would not have to be caught. - Record lineNumber/cursor of msg, only clear message if there has been scrolling. Could also monitor start/end of full commands to help in some algorithm to keep messages correctly disdplayed. API issues - Undo of user input issues, locking - associate caret with keybindings - caret does not have "protected void positionCaret(MouseEvent e)" - StatusBar API missing a few things. Always wants to display either INS/OVR. Or, if the cell class was public, then could change cell_main to shrink to nothing, the erase on every char is a problem to using it. - Programatically split windows horiz, vert. API bugs FEATURE - File name integration - :n, :N throught file list, :^n, :^N through mru list, <^d> for completion list. INTERNAL ISSUES - General approach for some platform dependent issues. Consider tv.updateVisualState; how about ViBuffer.updateVisualSelect(tv) where tv is where the changes are being made; this can propogate the change to the tv's that display the buffer as needed. Notice that there currently is ViManager.updateHighlightSearchState which iterates through tv's and invokes the visible ones. - The options/prefs/beans isn't quite right I think, especially when you consider the validate action. Because some stuff needs to be validated, you probably should only write to the prefs from one spot; So the bean wrapper should not go directly to the prefs, it should use opt.setValue. Considering the property change events old/new values, the event really has to come from the option since the bean doesn't know the old value. Ok, so the options needs to have property change support and the bean needs to listen to it, and when the bean does a set, it can propogate the change event it gets to its own listeners. Also, the options should take Object, not string, so Integer,Boolean work. - There is swing in the ViCmdEntry interface. Should only be part of the swing classes, not the interface. - Define a regex search method which takes a segment, which is supposed to be a complete line, and a startSearchOffset within the line. Then do not need useAnchoringBounds(true) and do not need the workaround for the JDK bug. Well, still probably need useAnchoringBounds, but not the workaround? Anyway, the interface would be cleaner for Search.searchit(). - Search. Could probably improve search performance by programing a search for a big region, then cycle through the search results, picking out all the matches. This would work for ":g//p", n, N and the like. But might not work for ":g//s/foo/bar/", or if used for this could require too large of a copy buffer. - 20070826 fix to inherit the platform blink rate. It was hardcoded using some vim values. vim values per caret type, can go back to vim when there is a UI to adjust these values. See setCursor in ViCaretDelegate. - DocumentUtilities.setTypingModification not being used currently; what are implications. NB's BaseKit.DefaultKeyTypedAction does atomicLock/Unlock for even a single char change to document. jVi is pretty cavelier about locking regarding user input, should take a look, at using AbstractDocument's readLock/writeLock as appropriate. Programatic changes are tagged through begin/end undo and nbvi atomic is used for them. Wonder what might be needed for something like 'd%'? Hold readLock, upgrade to writeLock? Perhaps a global scheme would work: readLock whenever a keystroke comes in, unlock at event exit. Sound good/safe. Need to know the lock hierarchy. - Stuff like begin/endUndo should not be in ViTextView. Most of jVi should be using Misc.begin/end... and misc should be using something tailored to the platform. Hmmm, need to think about it. - registerEditorPane is really a last distch effort to get a vi caret, it should be so named. getViTextView is what really registers the ep. - Use Misc.incV7 everywhere. - refactor the tag stack. Currently its all in NbFactory, most should be in ViManager. - Segments of lines should not have the \n, probably a big change. ===== Mostly Done ===== - the hightlight layers really should be associated with the Buffer not the TextView. - return char wherever possible/appropriate. - Most of the stuff declared FPOS should be ViFPOS. Clean up usage. - Originally, there was no curbuf; now there is. There are a variety of things that really belong with curbuf, like marks, that are handled a little wierdly. Anything that uses TextView.getFileObject is probably a candidate for curbuf. - TextView. Don't try to cache all the stuff, it should be much cleaner way. Just work off of the JTextComponent that comes with the event. Is there actually any per file/buffer state independent of the Document? Don't have per file options (but there should be acc'd to vim spec, eg sw). But the cache keeps the current line around and that gets used a lot. - need ViBuffer, most of what is in ViTextView belongs in ViBuffer. And of course, Buffer implements ViBuffer. In particular, look at the mess with the DrawLayers. - In output window, /\/ show up as /\<pattern\>/ (fixed in NB6) - The netBeans edit mode, INS,OVR starts out in INS. Shoudl be blank. (gets set when activated, so only problem for 2nd displayed editor) - Can not reliably determine if an opening top component is associated with jVi. E.g. the 2nd window with file tabs is not Mode "editor" and a MVCTC does not have any editor panes when it is opened. Not to mention that having editorPanes does not mean you are an editor, eg the Navigator has editor panes. The TC must be a parent of the editor pane of interest. And some TC's that have JEPs do not show EPs, like diff TC has 3 EPs. - per file options and parsing of stuff like "vim:tw=78:ts=8:ft=help:norl:" - make caret programable for +0/+1 for brace match highlight. +0 is command, replace , +1 is insert ===== FIXED ===== Tue Feb 19 22:56:41 PST 2008 - scrolloffset broken with coord/fold. cursor_up/down - Use something of the form file:///c:/a/j/Java/docs1.6.0/api/index.html?javax/swing/ListModel.html to invoke to access NetBeansReadme.html http://jvi.sourceforge.net/?ReadmeNetBeans.html - :make [% | clean | all clean], start debugger commands (partially done) - Option to not report "parseModelines", or simply not to bring up window. Could save the modeline messages, have command to print them. Tue Sep 18 13:22:25 PDT 2007 1) Incremental searching, '/', under visual mode. After an incremental match, then backspacing so that entry is empty, there is still something selected. Sat Jul 28 14:00:31 PDT 2007 - undo of user typing is a big problem (at least for me). This will probably take extending the NBEditorDocument API, so that's NB6. - If change is backed out by atomicUnlock, icon shows written. - In command mode do "a/" (put a '/' on a line), then do "70." (make a row of '/' 71 long). Then do undo; all 71 are taken away. This goes back to not having begin/end undo on document I guess. - After Alt-Enter, and similar things the editor does that changes the cursor, would like "''" to get you back to where you were. Jose's patch. - :fixi[mports] Sat Jul 7 16:05:07 PDT 2007 - Block mode "I" command real slow (do lots of lines). Profile, try append mode for STR functions? Won't matter Total time: finishOpSplit 4962ms 50% of time in Document.insertString, 45% in Document.remove, combine? For "I" or "x", optimize situation where no TAB split, then only does one of insertString or remove. cuts time in half.k Sat Jun 16 16:46:33 PDT 2007 - gv command and document modifications. In vim, the saved vis-sel top and bottom lines float with line add/removes. The column boundaries, do not change. In jvi, the boundaries are marks, so they both float. The jvi way isn't too seriously different, may be better. The jVi way may be better, but it really screws up the gv command, so fix 9) After "U" or "u" block mode, gv doesn't always give the right selection. The lines are correct, but the columns are off. I'm guessing this is because Marks are used for saved selection and in jVi both the line and the column float. But in vim only the line floats. So need to come up with a way to preserve the column, could stash an FPOS in the mark, then use that somehow. This probably affects othe commands as well. - When an edit window first comes up, netbeans positions to cursor to where it was when net beans shut down. Need to detect this and setWCurswant() to the initial column position, or maybe just setWSetCurswant(true). Probably when the text view is created. - :f should say "[Modified]" as appropriate. 1.0.0beta2 - create tw option whose only use is to provide data for the fmt command. like take its value an substitute it for #WIDTH# in the fmt command. - In NB6, when activation, poke the caret for match brace settings. beta1 ???? - DiffExecuter has two editor panes. But it doesn't have any EditorCookie, issue filed. This means that an existing diff won't be conntected during install. - Bind "=", "==" to IDE's reindent action - :!, :!!, !, !! - allow % to have extended match, eg "<>". If don't find normal chars then give platform a chance to do match stuff. There is some NB syntax support stuff, look at match action in ExtKit.