Combined Platform Text and JDT Text 3.2 Plan

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

  • Open up the Java editor. [Design for Extensibility: Be a Better Platform]
    The components that become extensible might grow over time. The initial set includes:
    • allow additions to the reconciling process such as running audits
    • allow additions to the content assist and template proposals

  • () Enhance the Java editor. Push Java coding to the next level by polishing existing features and adding new ones. [Simple to use, Scaling up]
    The currently planned improvements are:
    • () code assist
      • polish and fine tune existing features
      • integrate word completion into code assist popup
      • [>3.2] automatically add imports while typing
      • [>3.2] allow to auto-open code assist while typing i.e. not rely on special trigger characters
      • use browser widget for Javadoc hovers
      • [>3.2] [investigate] allow to click into additional hover window and allow navigation
      • [>3.2] [investigate] allow to use without opening a popup
    • [>3.2] Quick views
      • show additional info (e.g. Javadoc) for Quick views
      • allow to open Quick views for Java elements (e.g. from the Package Explorer or Outline view)
      • [investigate] context menu in Quick views
    • add support for categories (@category tag)
    • [>3.2] show horizontal lines between members
    • add more occurrence markings, for example for 'break', 'continue', etc.
    • [>3.2] improve Javadoc view by adding support for links (relative URLs, @see, @link,...) and add navigation and history support
    • add support to extract Javadoc from attached Javadoc (bug 41421) (JDT UI?)
    • [>3.2] color schemes for syntax highlighting (cross team issue)
    • [>3.2] Declaration and Javadoc view should allow to navigate to other members in hierarchy (bug 82709)
    • [>3.2] [investigate] better surface quick assists
    • [>3.2] [investigate] improve support for code blocks

  • Improve the existing NLS tooling.[Simple to use, Scaling up]
    The improvements added in 3.1 need also be provided for the new Eclipse string externalization pattern. Additional tooling like a builder that reports NLS problems for unused keys and unused property file entries should be added. Further possible items are listed here.
    Note: A builder was be too expensive (took too long to complete) we added a Source > Find Broken NLS Keys

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:
      • Go to
      • Surround with
      • ...
  • 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.
3.2 Platform Text Milestone Plans
The 3.2 milestones can be reviewed here.
Bug Tracking
Legend
item is under development. item is under investigation.
item is finished. ( ) item is time permitted.
[xyz] item is deferred (>) from xyz or continues in xyz. new