Last revised 18:50 CET June 19, 2006
This plan is under continuous refinement. Please send comments about this draft plan to the platform-text@eclipse.org developer mailing list.
Overall Goals
This section defines the goals for Eclipse 3.2 for the Platform
Text and the JDT Text component. Each goal is annotated with the overall
3.2 Eclipse theme (see Eclipse Project Draft 3.2 Plan for details).
Platform
-
Continue to monitor overall performance and memory consumption. This
includes the addition of new performance tests for new features.
[Scaling up]
-
Increase correctness test coverage of the text infrastructure. Besides providing tests for new
features new tests are needed for existing areas where we have few or no tests at all.
[Scaling up]
- Innovate the existing editor look and feel. [Simple to use, Scaling up]
The list of feature will change over time. The initial set includes:
- [>3.2] finish roll-over annotation work that was kicked off during 3.0
- [>3.2] rework Find / Replace: get rid of the dialog, allow highlight all matches, offer in-place rename of the highlighted matches
- show the change history together with change comments in the text editor
⇒ the text side is ready and a patch has been submitted to Platform CVS.
- [>3.2] enhance folding presentation: show nesting, place the icon on caption line and eventually add animation
- [>3.2] investigate action hovers i.e. allow to click into hovers in order to click links and buttons
- [>3.2] investigate auto-wrapping in text editor
- investigate triple and 1 1/2 click
⇒ 1 1/2 click has been improved (it no longer jumps back to the word). Triple click has been deferred on the SWT side.
- investigate to add text drag and drop (cross team issue)
- [partially >3.2]
Provide better text editor support for RCP.[Rich client platform, Design for Extensibility: Be a Better Platform]
The list of functions
to add will grow over time. The initial set includes: annotation presentation
and navigation, user assigned colors and fonts, spell checking, user
defined, persistent folding, quick diff, templates and investigate to
make file buffers work with RCP.
⇒ parts of this have been delivered: annotation presentation and navigation, template support when writting an editor
- [partially >3.2]
Make the Default Text editor your favorite text editor. From time
to time users switch to an external text editor. The goal of this
plan item is to enhance the Text editor so that there is no longer
a need to switch. The list of functions to add will grow over time.
The initial set includes: annotation navigation, user assigned colors
and fonts, spell checking, user defined, persistent folding, templates.
[Simple to use, Scaling up]
⇒ parts of this have been delivered: annotation presentation and navigation, template support when writting an editor
-
Help clients such as the Eclipse Web Tools Platform Project to improve
their overall integration with the Platform Text components and the
workbench in general. [Broader community, Design for Extensibility: Be a Better Platform]
JDT
Possible Work Items
This section is a collection of work items collected over time.
Items on which the Text team plans to work in the course of the 3.2 development are marked with [3.2] (t.b.d).
There might be
shifts of focus during the development process. Items that are affected
by the concrete resolution of cross team issues are marked as such. Items
that are of exploratory nature are tagged with [investigate].
Component Independent
- code cleanup
- cleanup implementation to only use up-to-date concepts
- cleanup plugin.xml files and code which still uses pre-3.0 extension
points and attributes (e.g. actionDefinitionId)
- remove AbstractTextEditor dependency on internals of org.eclipse.ui
- Javadoc
- enforce uniform Javadoc style (usage of link, @value tag, etc.)
- complete Javadoc (internal classes, private methods, etc.)
- [investigate] separate backward compatibility code from up-to-date
code
- dynamic plug-in loading/unloading
- describe dynamic capabilities
- [investigate] prepare for dynamic plug-in deactivation
Platform
-
file buffers
- provide file buffer level undo and composite changes
- allow buffers for non-existing files that get automatically created
when committing the file buffer
- provide a disconnect method that automatically calls commit in
case the file buffer is dirty and after the call no longer shared
- allow new implementations to be plugable (RCP does not include
the IResource based implementation, IDE does)
- clarify document creation and document setup extension points
- provide standard way to modify document provided by a text file
buffer in a non-UI thread
- [investigate] provide implementation for IStorage
- [investigate] Is it possible to automate validateEdit on the first
document change?
- [investigate] on demand activation of partitioning (created only
when somebody asks for it)
- reconciler
- clarify life-cycle (multiple concurrent reconcilers on unconfigure/configure)
- dirty region management in the incremental reconciler
- a reconciling strategy should cross out the dirty regions
it consumed
- dirty regions get only removed from the queue if there is
a guarantee that they have been consumed
- type of change for a dirty region are exploited
- provide closer integration of reconciling steps
- automatic propagation of the progress monitor to all individual
reconciling steps
- [investigate] have only one for all open Java editors
- [investigate] use job infrastructure instead of own thread
- [investigate] adaptive reconciler timing
-
headless text infrastructure
- revisit synchronization issues between annotation model and document
- annotation map is synchronized but not the operations on the annotation
model itself, leaving a temporal gap in which concurrent modifications
can happen
-
encoding (cross team issue)
- transfer encoding upon Save As...
- folding
- introduce structured folding change events
- improve annotation summaries
- allow for customization of annotation summaries
- improve the in-text folding indicator
- provide hovers
- indicate the amount of collapsed text
- expand on double or single click
- polish presentation
- animate collapse/expand
- [investigate] when hovering over the end of a foldable region
of which the beginning is not visible a hover with the start
line is shown
- [investigate] enabled folding structure provider for content types
- [investigate] character based folding UI (cross team issue)
- [investigate] reordering of code based on direct interaction with
the folding control
-
formatter
- tackle performance issues for large files
- use SequentialRewriteStore
- check possibility of temporal removing of partitioners
-
Open External File
- improve opening of external files (bug 58179)
- make it work for OLE documents, e.g. MS Word (bug 74194)
- support vertical ruler, overview ruler etc.; provide annotation model that is not resource dependent
- provide 'Open With' (bug 98002)
-
undo
- introduce UI independent undo manager, see also file buffers (bug 89599)
- navigation
- generalize Last Edit Position to Edit History
- provide access to a light weight "Go to" menu similar
to the refactoring menu (cross team issue)
- improve bookmark usability: allow navigation via key binding (cross team issue)
- [investigate] improve navigation history
- introduce bread crumbs (explicit points of user requested
navigation that stick out the normal browsing/navigation history)
- hovering
- allow interactive resizing of text and annotation hover popup
windows
- roll-over hovers
- solve single-click/double-click issues
- polish visual appearance such as asymmetric margins
- implement delay free appearance when entering vertical ruler
- solve accessibility issues
- [investigate] provide roll-overs for overview ruler
-
preferences
- adapt to the core settings API, smoothly integrate with the workbench vision (cross team issue)
- always split color settings in foreground/background, always allow system/default color
- annotations / annotation presentation
- add annotation (selection) events (helps to finish the roll-over annotation work)
- all annotation types should support all presentation types (help
other teams porting to the new presentation types)
- allow annotations to be presented using text foreground/background
color (overlaps with syntax highlighting then)
- generalize AnnotationPainter and TextPresentation to be broader
applicable
- move header annotation type management to SourceViewerDecorationSupport
and allow for customization via drop down (similar to Go to annotation)
- [investigate] allow users to reorder presentation layers
- generalize annotation presentation layer mechanism to support
relative addressing (e.g., on top/below <annotation type>)
- [investigate] introduce selective contribution of annotation types
to editor types (must be aligned with preference consolidation as
it contradicts)
- editor
- offer "on save" hook e.g. to allow formatting or organize imports
on save (bug
22742)
- ensure that misbehaving pre-save participants do not cause
loss of data
- provide visible indication for invisible chars
- editor splitting à la JEdit (top be aligned with editor embedding,
cross team issue) (bug
8009)
- editor reuse
- unify code path of creating and reusing an editor
- restructure AbstractTextEditor.createPartControl, consider inversion
of control (bug
71081)
- update contributions (e.g. enable state of actions) if editor
input type changes (e.g. from IFile to external file)
-
action contribution
- revisit action contribution (cross team issue)
- reduce performance impact of current platform architecture
- unify names and values of
ITextEditorActionDefintionIDs
- [investigate] editor status bar
- lock/pen icon rather than text (need
to check with screen readers)
- show current key binding config name in
status line and offer double click to open the key binding dialog
- show current line delimiter
- [investigate] investigate chances of a SWT rich text widget
- [investigate] support for multiple clipboards
- typing
- smart typing
- improve smart backspace
- consolidate smart typing infrastructure
- make delete line aware of selection
- introduce "Remove block of empty lines"
- revisit "raw" insert mode to be useful and not completely
dumb
- introduce light weight "Surround with" and "Search"
menu (cross team issue)
- [investigate] provide a "Source" > "Surround with" command (support for surround with is hidden)
- [investigate] auto correct on typing
- [investigate] auto format on typing
- [investigate] direct interaction with auto edit strategies
- interactive placement of closing brackets/parenthesis
- show pseudo character that can be moved and committed
- after commit cursor jumps back after opening bracket
- [investigate] zoom in/out feature (text size changes with mouse
wheel)
- [investigate] automatic reset of non-smart to smart or vice versa
-
text manipulation
- [investigate] drag'n drop editing
- interaction (mouse, keyboard)
- selection modes (line selection, word selection)
- right button mouse click with empty selection should set selection
- works only when clicks happens over useful target (not when
right of end of line)
- indicate caret location in overview ruler
- [investigate] revive gestures as action triggers (cross team issue)
- [investigate] action hovers (hovers with which you can interact)
- action hovers offer menus that contain sensible follow-up
actions for activities triggering auto format, auto text, or
auto correct
- single click undo of auto correct, for example
-
Quick diff
- [3.2] [investigate] add next / prev change buttons (button list might be activated manually)
- [investigate] rewrite Quick Diff to use equivalence class
- [investigate] character level diff in hover
- embedded content
- nested partitionings
- find abstraction that represents editor capabilities for fragments
of different content type
- [investigate] find/replace
- editor status bar: interactive find field with a drop down for
the find options (similar to Go to annotation)
- find all in file (similar to Mark occurrences)
- interactive Replace all (similar to Rename in file)
- provide a find/replace view part
- [investigate] printing (cross team issue)
- header/footer
- disable painters when printing
- allow line numbers
- allow for separate print font
- [investigate] templates
- tackle scalability issues for template preference page
- introduce categories
- auto hide certain templates (templates with generics are only
visible if the compiler is at 1.5 level)
- [investigate] macro/scripting support (cross team issue) (bug
8519)
JDT
- comment formatter
- provide support for custom tags
- improve HTML support
- split general "comment" into Javadoc and code comments
- push down to JDT Core (cross team issue)
- [investigate] define formatting preference by providing an example
-
hovering
- support @inherit
- support inherited Javadoc even without @inherit
- inform user how to correctly setup Javadoc and source hovers if no hover can be extracted (bug 69623)
- extract information from external Javadoc (bug 41421) (JDT UI?)
- use
Browser widget for Javadoc hover
- [investigate] allow to reach hover via mouse (i.e. F2 via mouse)
- folding
- make folding more stable in case of typing errors: do not expand or collapse if errors get introduced
- content assist
- support case-sensitive filtering
- introduce content assist processor extension point (already there
for Javadoc)
- consolidate content assist infrastructure to cover the concept
of presenting and choosing from parameter proposals
- auto activate content assist if completion trigger is also an
auto activation trigger
- support code completion after <code>Te|
or <tt>Te|
- improve parameter info shown by content assist
- [investigate] show the Javadoc of the highlighted parameter
- [investigate] get support from JDT Core for parameter guessing, e.g. lazy for the selected proposal
- [investigate] propose textual completion
based on file contents
- [investigate] re-establish linked mode for
method calls on Show context info
- [investigate] code assist remembers previous choices in its rating (bug 32960) (cross team issue)
-
syntax coloring
- add semantic highlighting for types (bug 84769)
- add semantic highlighting for component boundaries (project, working set)
- improve preference page: preview should background highlight all occurrences of the selected type, also support backward coupling
- improve preference page: find a way that users don't have to expand the nodes each time
- improve integration with the color and font preferences provided by the workbench (cross team issue)
- [investigate] support coloring schemes, scheme switch on tool bar (cross team issue)
- [investigate] semantic highlighting should use annotations instead of its own model and listener
- [investigate] generalization of semantic highlighting model to be pushed down to Platform Text
- spell checking
- improve spell checking to ignore defined Java symbols or mark spelling errors in symbols differently
- rerun spell checking on dictionary change
- provide spell checking on file, folder, projects
-
editor
- double click in outliner should transfer focus to editor (to be
aligned with the active Open Strategy)
- matching delimiter highlighting for html
tags <code> </code>
- generalize current scope indication and updating to be pushed
down to Platform Text
- [investigate] indicate current block in vertical ruler
- option for replacing the magnet; outliner synchronization
stays the same
- [investigate] method separator line
-
navigation
- subclassed/implemented/overriden member indicator in vertical ruler and allow to navigate to them
- generalize annotation navigation support to become part of Platform Text
- [investigate] support Move to next parameter (see content assist: re-establish linked mode)
- info views
- Javadoc view
- support links and link navigation
- support back and forward (tool bar and/or context menu)
- introduce new info/quick views (investigate user configurability)
- references in workspace
- implementers
- references methods
- reconciler
- provide extension point to allow for useful additions to the reconciling process such as running audits
- [investigate] generalize handling of temporary annotations implemented
in the CompilationUnitAnnotationModel to become part of Platform
Text
- preferences
- move tab to spaces to Platform Text preferences (bug 82296)
- allow to export syntax color preference on their own
- improve syntax coloring preference page: preview should background highlight all occurrences of the selected type, also support backward coupling
- improve syntax coloring preference page: find a way that users don't have to expand the nodes each time
- Quick Assist and Quick Fix
- generalize Quick Assist and Quick Fix infrastructure to become part of Platform Text
Cross Team Issues
This section contains cross team issues that have to be clarified. The
concrete outcome effects the dependent work items listed above.
- Platform UI
- continue simplification/harmonizing of action contribution
- synchronized blocks compared to ILock
- editor splitting (to be synchronized with the Component Framework and multipage editor efforts)
- compatibility layer for commands moved to LTK UI plug-in
⇒ Platform UI decided that they do not want to provide such a layer/infrastructure (too complicated)
- [investigate] support coloring schemes, scheme switch on tool bar
- enhanced 'Colors and Fonts preference' page support needed to show syntax and annotation coloring preferences
- gesture support/selection modes/hover configuration
- mouse/keyboard interaction is just a different kind of "key"
binding, i.e. a different kind of activating a command. We should
only provide the actions (command implementations) and the rest
should be user configurable.
- light weight menus:
- JDT Core
- SWT
- SWT rich text widget providing different fonts, font styles, and
font sizes
- StyledText: allow for rendering of custom glyphs (needed for character
based folding)
- text independent editor layer implementing validateEdit
- scripting strategy of the platform
- [investigate] contribute to the resolution of the "many errors"
- if a project is improperly setup, opening a file of that project
can result in lots of temporary problems. On open, the editor could
propose to filter all ripple errors and to show only relevant errors.
- when auto-build is enabled, the editor can warn the user when a
file is saved for which temporary errors exist.
|