PageRenderTime 311ms CodeModel.GetById 294ms app.highlight 8ms RepoModel.GetById 1ms app.codeStats 0ms

/jEdit/tags/jedit-4-2-pre4/doc/CHANGES.txt

#
Plain Text | 1165 lines | 792 code | 373 blank | 0 comment | 0 complexity | 18821d9916a72246377dda1a8978b98f MD5 | raw file
   1JEDIT 4.2 VERSION HISTORY
   2
   3{{{ Version 4.2pre4
   4
   5Thanks to Chris Morris, Marcelo Vanzin, Ryan Fowler and Ryan Grove for
   6contributing to this release.
   7
   8{{{ Syntax Highlighting
   9
  10- Updated NSIS2 syntax highlighting (Ryan Grove).
  11
  12- Modes from the user catalog file are checked first for a matching
  13  first line or file name glob (Ryan Fowler).
  14
  15- Updated Ruby syntax highlighting (Chris Morris).
  16
  17- Updated Pike syntax highlighting (Peter Lundqvist).
  18
  19}}}
  20{{{ Scripting
  21
  22- BeanShell 1.3b2 is now included. Improvements since 1.3a1 (which was
  23  included with jEdit 4.2pre3) include:
  24
  25  - Properties style auto-allocation of variables.
  26
  27    // foo is initially undefined
  28    foo.bar.gee = 42; 
  29    print( foo.bar.gee ); // 42
  30
  31  - Scripted class support (with class keyword). Limitations:
  32
  33    - Scripted classes may only extend other scripted classes
  34    - implement clauses are currently ignored
  35    - All Scripted classes appear as type bsh.This - they are
  36      effectively the same type of object.
  37
  38  - The bsh.system object which is shared across Interpreter instances
  39    has been renamed "bsh.shared".  For backwards compatability it is
  40    still referenced as bsh.system as well.
  41
  42  - All scripted objects now implement the standard object protocol of
  43    toString(), hashcode() and equals().
  44
  45  - Various bug fixes and optimizations.
  46
  47- Actions and dockables are now invoked in their own temporary
  48  namespace. This prevents memory leaks in code like this:
  49
  50  antfarm = wm.getDockable("antfarm");
  51  antfarm.foo();
  52  // reference to 'antfarm' remains in global namespace, possibly
  53  // after the dockable is closed
  54
  55}}}
  56{{{ Miscellaneous
  57
  58- Removed the "synchronized scrolling" option which hasn't actually
  59  worked since 4.2pre1 or 4.2pre2. If you liked this feature, you can
  60  write a plugin that does the same thing pretty easily.
  61
  62- The kill ring is saved between editing sessions.
  63
  64- The Latest Version plugin now shows the latest stable and development
  65  version numbers, previously it only showed the latest development
  66  version.
  67
  68}}}
  69{{{ Optimizations
  70
  71- Faster regular expression search and replace.
  72
  73}}}
  74{{{ Bug Fixes
  75
  76- Changing the no modifier click action for the gutter didn't work.
  77
  78- The 'jedit' script was not being created on Unix.
  79
  80- Fixed AltGR key on certain JVMs that send it as Control+Alt.
  81
  82- Regular expression replace didn't work with certain regular
  83  expressions.
  84
  85- When deep indent is on, indentation of code like this is handled a bit
  86  better:
  87
  88  if(foo
  89     bar)
  90  {
  91
  92  However it is still not 100% correct.
  93
  94- Added an option for the "deep indent" setting to the Editing option
  95  pane.
  96
  97- "Save as" did not update the buffer map properly if buffer sorting was
  98  switched off, or if symbolic links were involved.
  99
 100- Heredocs in PHP are <<< not <<.
 101
 102- Position tree update code had several problems, and this caused hangs
 103  and various exceptions.
 104
 105- jEdit would do a two-stage save for settings files, but it would still
 106  delete the old file if the save failed, thus settings could be lost of
 107  the disk is almost full, etc. Now, files are only overwritten if the
 108  new settings are saved successfully.
 109
 110- Fixed possible NullPointerException in Shortcuts option pane when a
 111  newly-installed plugin contains dockables but no actions.
 112
 113- Using the Global Options dialog box or anything else that calls
 114  jEdit.propertiesChanged() no longer clears the kill ring.
 115
 116- Escape sequences in the replace string (\n, \t) didn't work properly.
 117
 118- When viewing the favorites: URL, the full path of the entries is now
 119  shown, just like in 4.1.
 120
 121- The Favorites menu in the file system browser was sorted by entry
 122  name, but full paths were listed, so it looked like there was no order
 123  to it at all.
 124
 125- Fixed bogus DIRTY_CHANGED messages sent when loading a buffer with
 126  persistent markers.
 127
 128- The numeric keypad didn't work on JDK 1.3.
 129
 130- Apparently OS/2 Java has a broken File.getCanonicalPath()
 131  implementation, so we don't call this method on that OS.
 132
 133- Reload command now works with Untitled files.
 134
 135- If a virtual file system threw an exception other than an IOException,
 136  the file system browser would refuse to perform further operations
 137  with an "I/O already in progress" message.
 138
 139- Fixed Perl syntax highlighting for variable names that began with
 140  s, m, q or tr followed by a non-alphanumeric character.
 141
 142}}}
 143{{{ API Changes
 144
 145- SearchMatcher.nextMatch() returns an instance of SearchMatcher.Match
 146  instead of a two-element integer array.
 147
 148- Added jEdit.getPlugin(String name, boolean loadIfNecessary) method
 149  (Marcelo Vanzin).
 150
 151}}}
 152
 153}}}
 154
 155{{{ Version 4.2pre3
 156
 157Thanks to Brad Mace, Brant Langer Gurganus, Christoph Daniel Schulze,
 158Jonathan Revusky, Ken Turner, Kris Kopicki and Ollie Rutherfurd for
 159contributing to this release.
 160
 161{{{ Editing
 162
 163- The kill ring no longer shows duplicate entries, or entries that
 164  consist entirely of whitespace.
 165
 166- Added emacs-like "deep indent" which can be enabled using the
 167  deepIndent buffer-local property:
 168
 169  fooBar(baz,
 170         moreParameters,
 171	 ...); (Brad Mace)
 172
 173- Just like the Find Previous command, S+ENTER in the search bar now
 174  shows an error message if regular expression search is enabled.
 175  Previously it would just search forward.
 176
 177- The "Format Paragraph" command now shows an error message instead of
 178  just beeping if the wrap margin is not set.
 179
 180- The "Paste Previous" and "Paste From List" dialog boxes now show the
 181  selected item in a multiple-line text area (Ollie Rutherfurd).
 182
 183}}}
 184{{{ Syntax Highlighting
 185
 186- Added LOTOS syntax highlighting (Ken Turner).
 187
 188- Added SDL/PL syntax highlighting (Ken Turner).
 189
 190- Added IMPORT element to RULES tag. All rules from the ruleset named
 191  by the required attribute DELEGATE are copied into this ruleset.
 192
 193- Improved Velocity syntax highlighting.
 194
 195- Added TPL syntax highlighting (Brant Langer Gurganus).
 196
 197- Added UnrealScript syntax highlighting (Christoph Daniel Schulze).
 198
 199- Updated FreeMaker syntax highlighting (Jonathan Revusky).
 200
 201- Updated Pyrex syntax highlighting (Ollie Rutherfurd).
 202
 203}}}
 204{{{ User Interface
 205
 206- Activity Log now autoscrolls when dragging the mouse outside the log
 207  area bounds.
 208
 209- Docked window menu buttons should now look better on MacOS X.
 210
 211- When closing a buffer, the previous buffer is now selected, not the
 212  first buffer. The code that does this was actually there all along,
 213  but it never worked and I didn't notice (it would just go to the first
 214  buffer).
 215
 216- On Windows, entering X:\ or X:/ where X is a drive letter will
 217  automatically list that drive so that further paths can be completed.
 218  This is similar to how on Unix entering / opens the root directory.
 219
 220- Improved 'Choose Directory' dialog box.
 221
 222- A warning dialog box is now shown if nothing is selected in the text
 223  area and the "search in selection" setting is activated.
 224
 225}}}
 226{{{ Plugin Manager
 227
 228- The plugin manager now lists JARs that do not contain a plugin core
 229  class.
 230
 231- A warning is shown when updating a plugin from a version using the old
 232  API to a version using the new API, advising the user to restart
 233  jEdit.
 234
 235- The plugin manager no longer removes an existing plugin if downloading
 236  of an update failed.
 237
 238}}}
 239{{{ Optimizations
 240
 241- Fixed a performance regression from pre2. Opening large files with
 242  soft wrap off should now be as fast (or faster) than 4.1.
 243
 244- Fixed delays when exiting editor if help viewer and/or plugin manager
 245  windows were open.
 246
 247- jEdit.getBuffer() now uses a hashtable instead of a linear scan.
 248
 249- Optimized away some redundant code in the display manager, which
 250  should result in improved performance.
 251
 252- Search dialog should open a little bit faster. This fixes the issue
 253  where if you press C+f and type a search string really quickly,
 254  characters would be inserted in the text area.
 255
 256- Undo queue is now stored in a linked list, rather than an array. As
 257  offensive as it might sound, the array was being shifted along one
 258  position for each (non-compound) edit! Especially if the undo limit
 259  was set to a large value this could cause slowdowns.
 260
 261- The buffer no longer grabs a write lock when calculating a fold level
 262  or syntax tokens for a line. This should prevent the text area from
 263  stalling if the buffer is being saved in an I/O thread.
 264
 265- Fixed a performance regression from pre2. If all line contexts were
 266  valid, a subsequent request for a line's syntax tokens would
 267  invalidate all contexts from that line onwards. This did not happen if
 268  for example all but one context was valid.
 269
 270- Faster directory listing in the file system browser.
 271
 272- Fixed slowdown if activity log was docked and the "tail" option was on
 273  in Java 1.3.
 274
 275- Floating positions are now stored in a more efficient data structure
 276  allowing operations to be performed in logarithmic time. This improves
 277  performance with plugins that create a lot of positions, such as XML
 278  and anything using ErrorList.
 279
 280}}}
 281{{{ Bug Fixes
 282
 283- Fixed NullPointerException when loading plugins if opened buffers
 284  contained an invalid 'folding' property.
 285
 286- Fixed NullPointerException when invoking Complete Word in an edit mode
 287  that did not define a keyword map.
 288
 289- Selecting 'Close' from a cloned dockable's popup menu closed the wrong
 290  window.
 291
 292- Plugin manager window did not have the same icon as all other jEdit
 293  windows.
 294
 295- "What's new in jEdit 4.2" document was missing from the download due
 296  to a packaging error.
 297
 298- "Highlight every n lines" color setting in Gutter option pane didn't
 299  work properly.
 300
 301- Plugin manager hardcoded the table foreground color to black, this
 302  could make the table unreadable if the text area background was dark
 303  and "use jEdit text area colors in all text controls" was on.
 304
 305- EOL_SPAN_REGEXP rules threw NullPointerExceptions.
 306
 307- Plugins that failed to load were not marked as such, and showed up as
 308  "Loaded" in the plugin manager.
 309
 310- Added a workaround for a MacOS X Java bug where renaming a file to
 311  contain a path to a non-existent directory would delete the file.
 312
 313- It is now possible to rename a file to another name that only differs
 314  in case on Windows.
 315
 316- If "Ignore Case" was on, searching for strings containing certain
 317  characters (such as Unicode 0x00df) did not work since
 318  String.toUpperCase() sometimes mangles the string in various ways.
 319  Processing the string with Character.toUpperCase() doesn't seem to do
 320  this.
 321
 322- The "Abbreviations" option pane now correctly handles expansions with
 323  duplicate abbreviations.
 324
 325- An undoable edit is no longer merged if there is a pending redo. This
 326  would cause the undo queue to become inconsistent.
 327
 328- Changed input modifier mapping on MacOS X.
 329
 330  C+ is the Command key as before
 331  A+ is now the Control key
 332  M+ is no longer bound!
 333
 334  A+ used to be the Option key however this caused problems such as
 335  special characters on international keyboards triggering jEdit
 336  shortcuts; for example, Option+' inserts # on an Italian keyboard, and
 337  jEdit would pick this up as A+QUOTE which is bound to "Scroll Page
 338  Up".
 339
 340- Fixed NullPointerException when clicking in text area in a soft
 341  wrapped line that was but off at the bottom.
 342
 343- Fixed NullPointerException when scrolling to a line that was longer
 344  than the visible area.
 345
 346- Added a workaround for a problem with the Toolkit class which is
 347  non-reentrant on the Solaris JDK. This could cause a segmentation
 348  fault on jEdit startup.
 349
 350- Fixed a problem in the text offset to screen line conversion. It
 351  usually manifested itself in the form of the "disappearing selection"
 352  bug; if only part of the first line was visible due to scrolling and a
 353  selection began in the part that was not visible, painting the
 354  selection would throw an exception which would result in the selection
 355  extension being removed from the text area.
 356
 357- Printing is no longer done in a background thread, and now blocks the
 358  UI, due to various thread-safety problems.
 359
 360- Printing a range of pages would always print starting from the first
 361  page.
 362
 363- jEdit didn't compile with Java 2 version 1.3.
 364
 365- Invalid delegates in syntax mode files could throw exceptions.
 366
 367- "Spaces to Tabs" was broken.
 368
 369- Added a workaround for the print spacing problem on some Java
 370  versions. Note that this results in much larger spool files. Enable in
 371  Utilities->Global Options->Printing.
 372
 373- Added a workaround for buggy/incomplete implementations of JDK 1.4
 374  printing API. Now you can force use of the JDK 1.3 API when running on
 375  1.4. Enable in Utilities->Global Options->Printing.
 376
 377- Re-introduced jEdit 3.2.2-style Unix window geometry workarounds. If
 378  you saw problems like dialog boxes getting smaller each time they were
 379  opened, etc, let me know if this fixes them.
 380
 381- Fixed hang if a mode contains regular expression rules that match a
 382  zero-width string.
 383
 384- The jEditLauncher configuration is no longer updated if installing a
 385  new jEdit release over an old one with the jEditLauncher de-selected
 386  in the installer.
 387
 388- When searching for text, jEdit tries a little harder to make sure the
 389  search occurrence is visible if the text area needs to be scrolled
 390  horizontally.
 391
 392- When using TAB to move focus from the buffer switcher, or search bar,
 393  etc. it should eventually end up in the text area, instead of getting
 394  stuck.
 395
 396- Simplified key event workaround code. Let me know if you encouter any
 397  problems (such as garbage being inserted in the text area when certain
 398  keys are pressed, etc.)
 399
 400- File dialog's completion was case sensitive when the TAB key was
 401  pressed. This was inconsistent with all other completion behavior
 402  which was case insensitive.
 403
 404- File names that ended with a colon (:) were being treated like URLs
 405  even if there was no VFS named by the string before the colon. This
 406  made it impossible to open files named "foo:".
 407
 408- Docking areas can no longer be resized beyond visible bounds if the
 409  "alternate tool bar layout" setting is off.
 410
 411- Fixed a problem where the status bar would throw errors about negative
 412  array offsets if a buffer change resulted in the text area being
 413  scrolled.
 414
 415- Glob patterns of the form {!{a,b,c}} didn't work properly.
 416
 417- Browser actions were incorrectly written in the resource cache, so for
 418  example the FTP plugin's menu in the file system browser did not work.
 419
 420- The install directory setting of the plugin manager didn't work.
 421
 422- Refactored key dispatching code should make alternative keyboard
 423  layouts work better on MacOS X.
 424
 425- gnu.regexp has rather strange substitution behavior, which caused
 426  problems with some SPAN_REGEXP's.
 427
 428- Dialog box for confirming plugin removal now lists the JAR files to be
 429  removed in a scrolling list, this fixes the problem of the dialog
 430  getting too large in some cases.
 431
 432- Fix a minor UI layout problem with the style editor dialog box of the
 433  Syntax Highlighting option pane.
 434
 435- Fixed exception when reloading a buffer if a marker was set beyond the
 436  location where the buffer ends on disk.
 437
 438- Fixed problem with table columns in the file system browser resizing
 439  incorrectly when a node was collapsed.
 440
 441- Redoing a remove did not clear the buffer's modified flag if
 442  necessary.
 443
 444- Fixed status bar display for prefixes longer than three keys.
 445
 446- Pressing TAB in the action bar on JDK 1.3 would cause it to lose
 447  focus.
 448
 449- Glob patterns containing + caused exceptions to be thrown.
 450
 451- "Select Line Range" now respects the multiple selection setting.
 452
 453- When installing updates, dependencies are now correctly installed
 454  (Kris Kopicki).
 455
 456}}}
 457{{{ API Changes
 458
 459- TokenHandler.handleToken() method now takes a Segment instance as
 460  the first parameter.
 461
 462- Direct construction of SearchDialog no longer possible due to internal
 463  changes. The SearchDialog.showSearchDialog() method that has been
 464  recommended since jEdit 4.0 still works.
 465
 466- Buffer.setReadOnly() can be used to make a buffer read only even if
 467  the file is writable on disk.
 468
 469- Added JEditTextArea.addTopComponent() method (Brad Mace).
 470
 471- Case-sensitivity is now determined on a per-filesystem basis, instead
 472  of always being on when running on Windows or MacOS X. To have your
 473  VFS be case-insensitive, define the CASE_INSENSITIVE_CAP.
 474
 475- Added generic structure matching API for presenting the user a
 476  consistent interface for bracket matching, XML tag matching, BEGIN/END
 477  matching, etc.
 478
 479  Simply write an implementation of StructureMatcher and add it to the
 480  text area with JEditTextArea.addStructureMatcher().
 481
 482}}}
 483
 484}}}
 485
 486{{{ Version 4.2pre2
 487
 488Thanks to Carmine Lucarelli, Matt Albrecht, Ollie Rutherfurd and
 489Sebastien Pierre for contributing to this release.
 490
 491{{{ Editing
 492
 493- "Complete Word" now inserts the longest common prefix if there is more
 494  than one possible completion (the popup is still displayed as well).
 495
 496- Added Ignore Case (C+e C+i) and Regular Expressions (C+e C+x) commands
 497  to Search menu for changing search bar settings from the keyboard.
 498
 499- Incremental Search Bar and HyperSearch Bar commands now always
 500  disregard the selection. Use Incremental Search for Word and
 501  HyperSearch for Word commands if you want to search for the selected
 502  text.
 503
 504- Made behavior of auto indent caused by "Insert Tab and Indent",
 505  "Insert Enter and Indent", and "Indent Selected Lines" commands is
 506  more consistent.
 507
 508- Register commands now list registers, and marker commands now list
 509  markers with shortcuts in the status bar.
 510
 511- Added Edit->More Clipboard->Paste Deleted (C+e C+y) command. Similar
 512  to Paste Previous, it lists recently deleted strings.
 513
 514- Quick copy now works between text areas.
 515
 516- Paste Previous dialog box now supports multiple selection.
 517
 518}}}
 519{{{ File System Browser
 520
 521- The favorites list can contain files now.
 522
 523- Added a Utilities->Favorites menu.
 524
 525- The expansion triangles are now flush with the icon. Previously they
 526  were vertically aligned which was inconsistent with Swing JTrees.
 527
 528- Added "Copy Path Name" command to file system browser's right-click
 529  menu.
 530
 531}}}
 532{{{ Syntax Highlighting
 533
 534- Updated Inform syntax highlighting (Matt Albrecht).
 535
 536- Added S+ syntax highlighting (Matt Albrecht).
 537
 538- Added Io syntax highlighting (Sebastien Pierre).
 539
 540- Added Pyrex syntax highlighting (Ollie Rutherfurd).
 541
 542- Added Erlang syntax highlighting (Ollie Rutherfurd).
 543
 544}}}
 545{{{ User Interface
 546
 547- The Global Options dialog box has been rearranged a little. There are
 548  two new panes, Autosave & Backup, and View. The Loading & Saving pane
 549  has been removed.
 550
 551- "Copy" button in Activity Log window now copies entire log if nothing
 552  is selected.
 553
 554- Added "Remove All Nodes" button to HyperSearch Results window
 555  (Carmine Lucarelli).
 556
 557- Removed "Go to Text Area" (C+e C+e) action. "Scroll to Current Line"
 558  (C+e C+j) now sends focus to the text area, and also expands the
 559  current fold if the caret is not visible.
 560
 561- The block caret is now drawn as a hollow box. Previously it was drawn
 562  as a filled box using XOR paint mode, but the XOR paint mode caused
 563  problems on some Java versions and was slightly slower.
 564
 565- New gutter mouse behavior for brackets:
 566
 567  C-click on a bracket scope selects the scope.
 568  A-click on a bracket scope narrows to the scope.
 569
 570  These were changed to be consistent with the behavior when clicking on
 571  a fold.
 572
 573- Previously, jEdit would remember the caret position for the 50 most
 574  recent files, and the File->Recent Files menu would list the same
 575  number of entries as the history text field setting. Now, a single
 576  recent files setting in the General pane of the Global Options
 577  controls both.
 578
 579- A change makes the buffer history use a linked list instead of an
 580  array to store entries. However, since Java provides no way to iterate
 581  backwards over a linked list, this results in the recent file list
 582  being stored backward from how it was in previous versions. So when
 583  upgrading from 4.2pre1 or older, your oldest files will be at the top
 584  of the list.
 585
 586}}}
 587{{{ Plugin Loader
 588
 589- The plugin manager now loads plugins immediately after they are
 590  installed if they are using the jEdit 4.2 plugin API, and unloads
 591  plugins when removing and updating. Note that a restart is still
 592  required after updating from a jEdit 4.1 version of a plugin to the
 593  4.2 plugin, but future updates do not require a restart.
 594
 595- Added an option to Global Options->Plugin Manager to leave the
 596  downloaded ZIP archives in ~/.jedit/PluginManager.download.
 597
 598- If a plugin failed to load, its actions, dockables, etc are no longer
 599  visible from the UI.
 600
 601}}}
 602{{{ Scripting Changes
 603
 604- BeanShell 1.3a1 included. This release features improved error
 605  reporting, code cleanups and minor bug fixes.
 606
 607- For some reason the search and replace code was hard-coded to auto
 608  wrap around if it was run from a macro. I'm not sure what the original
 609  rationale for this was, but it has been changed to always respect the
 610  auto wrap flag.
 611
 612- "Evaluate For Selected Lines" can now be recorded in a macro.
 613
 614}}}
 615{{{ Optimizations
 616
 617- Fold visibility information is now stored in a more efficient manner.
 618  Folding should be faster and more robust. Also, the limit of 8 text
 619  areas editing the same buffer has been lifted.
 620
 621- Various minor display manager optimizations.
 622
 623}}}
 624{{{ Bug Fixes
 625
 626- It was possible to open multiple plugin manager instances from the
 627  "Plugin Error" dialog box.
 628
 629- Fixed selection issue when right-clicking on a file system browser
 630  window.
 631
 632- The file system browser would report files larger than 1 megabyte as
 633  being an order of magnitude smaller, eg 13 kilobytes instead of 13
 634  megabytes.
 635
 636- Changing the folding mode to "none" did not work correctly.
 637
 638- Changing from a syntax highlighting mode to text mode did not
 639  invalidate line contexts.
 640
 641- The file system browser's "Open in" menu didn't work.
 642
 643- Toggle menu items did not show up as such when a plugin was
 644  constructed from the summary cache.
 645
 646- -nobackground command-line switch did not actually work.
 647
 648- Title bar "modified" indicator was not displayed for recovered
 649  autosave files.
 650
 651- jEdit never closed streams of XML files being read in. This bug has
 652  been there for ages, however its not too major since the stream
 653  objects would get garbage collected and closed eventually.
 654
 655- Fixed incorrect handling of buffer modification flag in undo code.
 656
 657- No longer print an exception if the clipboard contains a zero-length
 658  string.
 659
 660- The file system browser might not have been updated correctly after
 661  moving a file from one expanded branch to the root.
 662
 663- Right-clicks in the empty space below the file list should work now.
 664
 665- Fixed possible NullPointerException on MacOS X in the OperatingSystem
 666  class.
 667
 668- Various fixes for dynamic plugin loading.
 669
 670- Changing the plugin download mirror had no effect on an open plugin
 671  manager window.
 672
 673- Fixed popup menu positioning.
 674
 675- Fixed possible corruption of the undo queue due to a regression in
 676  pre1.
 677
 678- Fixed some problems with symbolic links.
 679
 680- Collapsing a directory in a file system browser threw an exception if
 681  it was the last item in the list.
 682
 683- Using C+e C+` shortcut to close dockables didn't work because the view
 684  would send focus to the text area after C+e was pressed. This was done
 685  to correctly handle shortcuts like C+e n n while a text field had
 686  focus (previously "nn" would be inserted in the field). Now, if the
 687  focus was sent to the text area as a result of a prefix, it is sent
 688  back to the original owner when the prefix is finished.
 689
 690- Fixed various file system browser completion problems.
 691
 692- PHP mode's inline script ruleset was missing a commentEnd property.
 693
 694- Plugins which provided a dockables.xml file but no actions.xml could
 695  not be invoked, since the action set was only added if the actions.xml
 696  file was present.
 697
 698- Disabled CS+click to narrow to a bracket scope since it didn't
 699  actually work.
 700
 701- DynamicMenuUpdate messages only worked for top-level menus.
 702
 703- TAB didn't work in the action bar if there was nothing entered (it is
 704  supposed to list all actions.)
 705
 706- Fixed obscure problem with work thread code where an AWT request added
 707  from another AWT request could be executed before I/O is complete.
 708
 709- Fixed repainting problem when removing text from the last line of a
 710  buffer with soft wrap on.
 711
 712- Selecting "Search in Directory" from the file system browser's
 713  Commands menu with a file selected was supposed to set the directory
 714  search filter to that file's extension, however this didn't work.
 715
 716- Fix a problem with "Indent Selected Lines" on text like the following:
 717
 718    if(foo)
 719        bar();
 720    if(baz) {
 721        quux();
 722    }
 723
 724- Fixed possible exceptions thrown when the buffer is narrowed to a
 725  range, and with the caret outside this range.
 726
 727- Action bar's action list wasn't updated if plugins were added or
 728  removed at runtime.
 729
 730}}}
 731{{{ API Additions
 732
 733- Added a new dynamic menu API, so that plugins using the 4.2 plugin API
 734  can provide dynamic menus. Simply write an implementation of
 735  org.gjt.sp.jedit.menu.DynamicMenuProvider
 736
 737- EditPlugin.start() is always called from the AWT thread now.
 738
 739- Added a method to bsh.NameSpace:
 740
 741  addCommandPath(String path, Class clas)
 742
 743  You can call this on BeanShell.getNameSpace(). BeanShell will search
 744  for resources named path + methodName + ".bsh" in the class loader of
 745  the given class when an undeclared method is invoked. Plugins can use
 746  this to provide additional scripting commands, the Console plugin uses
 747  this for example.
 748
 749- Added a new method to TextAreaExtension class:
 750
 751  public void paintScreenLineRange(Graphics2D gfx, int firstLine,
 752    int lastLine, int[] physicalLines, int[] start, int[] end,
 753    int y, int lineHeight)
 754
 755  This method paints a whole bunch of lines at once, instead of one at a
 756  time, so it should be more efficient for plugins like Background and
 757  ErrorList.
 758
 759  See javadoc for parameter documentation.
 760
 761- Added long-missing DefaultInputHandler.removeKeyBinding() method.
 762
 763- Added AbstractOptionPane.addComponent(Component comp, int fill)
 764  method.
 765
 766- Virtual file systems can now show arbitriary columns in the file
 767  system browser.
 768
 769  - Use the VFS constructor that accepts a String[] of extended
 770    attribute names. You can use the canned names (EA_TYPE, EA_STATUS,
 771    EA_SIZE, EA_MODIFIED) or add your own. If you add your own, you
 772    must also define properties "vfs.browser.<extended attribute name>".
 773
 774  - Then, write a VFS.DirectoryEntry subclass that overrides
 775    getExtendedAttribute(). Return instances of this class in
 776    _getDirectoryEntry() and _listDirectory().
 777
 778}}}
 779
 780}}}
 781
 782{{{ Version 4.2pre1
 783
 784Thanks to Bill McMilleon, Kasper Graversen, Kris Kopicki,
 785Oliver Rutherfurd, Rudi Widmann and Ryan Grove for contributing to this
 786release.
 787
 788{{{ Editing
 789
 790- Quick copy now more consistent with usual mouse behavior:
 791
 792  - Control-middle-clicking on a bracket will insert the contents of the
 793    bracketed block at the caret position.
 794
 795  - Shift-middle-clicking at a point will insert text from the caret to
 796    the point at the caret position. Can be used to duplicate a line,
 797    for example.
 798
 799- Register contents are now saved across editing sessions in
 800  ~/.jedit/registers.xml.
 801
 802- Complete Word popup now has keyboard shortcuts (1 - 0) for inserting
 803  the first 10 elements in the list.
 804
 805- Entering a prefix while a JTextComponent has focus will move focus to
 806  the text area. This allows shortcuts like C+e n n to be used from the
 807  search bar and such without having to prefix them with C+e C+e first.
 808
 809- Control-Shift-click on a bracket scope in the gutter or a bracket in
 810  the text area narrows to that scope.
 811
 812- Previously setting the wrap margin to zero with soft wrap on would
 813  wrap to the width of the text area. This is no longer supported.
 814
 815- The text area now scrolls by screen lines, not by physical lines, when
 816  soft wrap is enabled. The previous behavior resulted in simpler code
 817  but was extremely counter-intuitive.
 818
 819- Right-clicking in the text area with no selection (or if multiple
 820  selection mode is enabled) moves the caret to the clicked line before
 821  displaying the popup menu (Rudi Widmann).
 822
 823- Control-clicking beyond the end of a line inserts the appropriate
 824  amount of white space and moves the caret there (Rudi Widmann).
 825
 826}}}
 827{{{ Rectangular Selection
 828
 829- Edit->More Selection->Rectangular Selection (A+\) enables rectangular
 830  selection mode:
 831
 832  - Dragging with the mouse or using keyboard selection commands creates
 833    rectangular selections.
 834
 835  - A status bar indicator has been added for this mode.
 836
 837  - Clicking beyond the end of the line inserts the appropriate amount
 838    of white space and moves the caret there (just like when Control is
 839    held down, see above).
 840
 841- Changed vertical paste behavior. Now if the rectangle we are inserting
 842  into has more lines than the pasted text, the pasted text cycles
 843  through the rectangle. Previously, it would be inserted at the top
 844  with the remaining lines blank. The new behavior is very convinient;
 845  for example, you can select a zero-width rectangle and paste "final"
 846  to mark a set of variables in Java source as being final.
 847
 848- Entering text while a zero-width rectangular selection is active now
 849  shifts the selection horizontally.
 850
 851}}}
 852{{{ Syntax Highlighting
 853
 854- A new default color scheme.
 855
 856- Added a few more token types: COMMENT3, COMMENT4, LITERAL3, LITERAL4,
 857  KEYWORD4.
 858
 859- AT_LINE_START, AT_WORD_START and AT_WHITESPACE_END attributes can now
 860  be set independently for BEGIN and END tags of a SPAN.
 861
 862- The default background color of a token is now the background color of
 863  the current ruleset's default token type. It now only defaults to the
 864  text area background if the ruleset's default token type does not have
 865  a background color. This matters because for example if COMMENT2 has a
 866  background but MARKUP does not, HTML markup in Javadocs now has the
 867  same background as the rest of the comment.
 868
 869- Any groups matched by a SPAN_REGEXP's BEGIN sequence are substituted
 870  into any positional parameters in the END sequence. This allows
 871  read-ins to be properly handled in languages like Shell Script, PHP,
 872  and Perl.
 873
 874- Added NO_ESCAPE attribute to SPAN and SPAN_REGEXP rules. This allows
 875  C# literals (@"...") to be highlighted correctly.
 876
 877- Added JCL and SAS syntax highlighting (Bill McMilleon).
 878
 879- Improved C pre-processor syntax highlighting.
 880
 881- Updated NSIS2 syntax highlighting (Ryan Grove).
 882
 883- Parrot syntax highlighting (Oliver Rutherfurd).
 884
 885- Aspect-J syntax highlighting (Kasper Graversen).
 886
 887}}}
 888{{{ Folding
 889
 890- Different syntax styles are used for collapsed fold lines with
 891  different fold levels. Fold levels 1, 2 and 3 have distinct styles,
 892  and all higher levels are assigned another style.
 893
 894- Alt-clicking on a fold triangle in the gutter narrows to that fold.
 895
 896}}}
 897{{{ Action Bar
 898
 899- Utilities->Action Bar (shortcut C+ENTER) shows the action bar, for
 900  quickly invoking editor commands and changing settings from the
 901  keyboard.
 902
 903- Enter an action name (or a substring) to invoke that action.
 904
 905- Press TAB for a completion popup.
 906
 907- Enter a repeat count then invoke an action using any means to repeat
 908  that action.
 909
 910- Enter "buffer.<prop>=<value>" to set the buffer-local property
 911  <prop> to <value>; for example, "buffer.tabSize=4" changes the
 912  curent buffer's tab size to 4.
 913
 914- Enter "!buffer.<prop>=<value>" to set a buffer property on a global
 915  basis; for example, "!buffer.tabSize=4" changes the default tab size
 916  for all buffers to 4.
 917
 918- Buffer-local properties are documented in the user's guide.
 919
 920- Enter "<prop>=<value>" to set any other global property; for
 921  example, "view.showToolbar=false" hides the tool bar.
 922
 923- Note that global property names are undocumented, so this feature is
 924  primarily for plugin developers. You can get a list using the
 925  Misc->Properties->jEdit Properties macro.
 926
 927}}}
 928{{{ File System Browser
 929
 930- The file system view now shows file attributes such as type, status,
 931  size and modification date.
 932
 933- Re-added "Filter in file dialogs is current buffer extension" option
 934  that used to be present in jEdit 4.0.
 935
 936- Added "Show menu bar" option.
 937
 938- Improved completion in file dialogs. Completion in the field is now
 939  case-insensitive, and the full path is not inserted into the field
 940  unless you press TAB.
 941
 942- Added option to make the default directory the working directory of
 943  the jEdit process.
 944
 945}}}
 946{{{ User Interface
 947
 948- If regular expressions are enabled, Search->Find Previous now shows a
 949  dialog box message instead of silently searching forwards.
 950
 951- Added an option to Appearance option pane to control menu spillover
 952  (default is 20 items).
 953
 954- The title bar now indicates if the current buffer has been modified
 955  since the last save.
 956
 957- Moved plugin option panes to a new Plugins->Plugin Options dialog box.
 958
 959- Improved window docking.
 960
 961  - Floating windows now have a bar across the top with a menu for
 962    docking the window.
 963
 964  - Right-clicking on a docked window button shows a menu for undocking
 965    the window, opening a cloned instance, and moving it to another
 966    docking area.
 967
 968  - Docking pane of Global Options dialog box removed because it is no
 969    longer necessary.
 970
 971- Added Utilities->Repeat Last Action command, bound to C+SPACE.
 972
 973- jEdit now remembers if more than one view was open, and if the view
 974  was split.
 975
 976}}}
 977{{{ Miscellaneous
 978
 979- Symbolic links are no longer resolved in buffer path names. Opening
 980  two buffers both pointing to the same file on disk is still not
 981  allowed.
 982
 983- If buffers have changed on disk, instead of asking for each one, they
 984  are all listed in a single dialog box. Also, if the buffer is not
 985  dirty, it is reloaded automatically.
 986
 987}}}
 988{{{ Command Line
 989
 990- Added a few new command line parameters, documented in jedit -usage:
 991
 992  -gui
 993  -newplainview
 994  -newview
 995  -nobackground
 996  -plugins
 997  -quit
 998  -restore
 999  -reuseview
1000  -startupscripts
1001  -wait
1002
1003}}}
1004{{{ Optimizations
1005
1006- New "deferred loading" plugin API. Plugins must be updated for this,
1007  however existing plugins continue to work (with no performance
1008  improvement). jEdit's startup time remains constant (+/- some
1009  milliseconds) regardless of how many plugins using the new API are
1010  installed.
1011
1012- Faster buffer loading.
1013
1014- Faster activity log.
1015
1016- Bracket matching is now only performed 200ms after the last caret
1017  movement. This should solve the problem of annoyingly slow response
1018  when eg, inserting a number of characters before an unclosed bracket
1019  near the beginning of a large source file.
1020
1021- Bracket matching now only scans up to 10,000 lines.
1022
1023- Consecutive "chunks" with the same style attributes were previously
1024  merged when a line was being painted, for improved performance. Now we
1025  take this one step further and merge them when putting a line's chunk
1026  list in the cache. This should improve scrolling performance,
1027  especially when smooth text is on.
1028
1029- jEdit now performs much better when very long lines are present in a
1030  buffer.
1031
1032- A funky little display optimization with monospaced fonts is now
1033  performed. In jEdit 4.1 this could be enabled with a hidden property,
1034  but now we detect if a monospaced font is actually in use. If this
1035  causes display problems, please let me know about it and put this in a
1036  startup script:
1037
1038  Debug.DISABLE_MONOSPACE_HACK = true;
1039
1040- Faster line insertion and removal when there are collapsed folds below
1041  the insertion point.
1042
1043- Faster painting of tokens with background colors. Previously if tokens
1044  defined a background color, there was a noticable lag when scrolling
1045  for example (at least with Java 1.4.1 on Linux). This no longer
1046  happends.
1047
1048- Faster buffer transactions if both soft wrap and narrowing is active.
1049
1050- Faster search and replace where the search or replace string matches
1051  on multiple lines.
1052
1053- Dockable window resizing is now done with a "rubber band", instead of
1054  live updates of the dockable container's size. This improves
1055  responsiveness of resizing noticably.
1056
1057- When dragging with the mouse, the text area now autoscroll at a rate
1058  proportional to how far away the mouse is from the edge of the area.
1059
1060}}}
1061{{{ Platform-Specific
1062
1063- MacOS plugin version 3.0 now requires Java 1.4.1. All native calls now
1064  use the Cocoa API, and a dock menu has been added. The dock menu
1065  provides similar functionality to the plugin menu (Kris Kopicki).
1066
1067- Background mode is now enabled by default on MacOS, since this is the
1068  platform convention.
1069
1070- Added compatibility with Java 1.4.2 beta's GTK look and feel. Note
1071  that the look and feel itself is quite buggy, at least with the 1.4.2
1072  beta.
1073
1074- The installer should now work on VMS.
1075
1076}}}
1077{{{ Bug Fixes
1078
1079- jEdit no longer minimizes and then restores windows when files are
1080  opened through the edit server on windows. This was done to work
1081  around an apparent bug in the Windows JRE. If you still experience the
1082  problem, there is a hidden property that can be set with the action
1083  bar:
1084
1085  C+ENTER server.brokenToFront=true
1086
1087- Some HTTP proxies decompress GZip streams for whatever reason. The
1088  plugin manager now checks if the stream starts with the GZip magic
1089  characters; if not, it parses it without decompression, instead of
1090  throwing an exception.
1091
1092- Multiple monitors should work properly now (Kris Kopicki).
1093
1094- Selecting "Search in Directory" from the right-click menu of a
1095  directory in the parent directories list would search in the wrong
1096  directory.
1097
1098- Fixed problems with bracket matching not being activated when
1099  switching between split panes.
1100
1101- Not all keyboard shortcuts worked in the Complete Word popup.
1102
1103- Closing a view did not close any cloned dockable windows.
1104
1105- Page Up/Page Down commands now scroll by the correct amount when soft
1106  wrap is on.
1107
1108- Fixed I/O thread deadlock that could manifest when using the FTP
1109  plugin.
1110
1111- Fixed initial position of options dialog box divider.
1112
1113- If the default edit mode had a tab size of 8, and the global default
1114  was 4, a buffer-local property specifying a tab size of 8 would be
1115  ignored.
1116
1117- "Spaces To Tabs" didn't work with non-leading tabs.
1118
1119- C+e v ENTER and C+e v TAB still did auto indent, instead of inserting
1120  a literal ENTER and TAB like the documentation says.
1121
1122- Pressing ENTER with nothing selected in the File->Open dialog box no
1123  longer closes the dialog box.
1124
1125- Nested { and } work in globs now.
1126
1127- Fixed problem with EOL_SPAN delegating to a ruleset with a
1128  NO_LINE_BREAK rule.
1129
1130- Fixed horizontal scrolling when creating a rectangular selection in
1131  virtual space.
1132
1133- Clicking in the text area before the buffer is loaded no longer throws
1134  exceptions.
1135
1136}}}
1137{{{ API Changes
1138
1139- You can a detailed guide on what has been broken, and what has been
1140  added, in doc/news42/index.html.
1141
1142- The following plugins are known to be broken:
1143
1144  Background
1145  Console
1146  ErrorList
1147  JDiff
1148  WhiteSpace
1149  SideKick
1150  Templates
1151  Vimulator
1152  XML
1153
1154- Also, a lot of plugins that depend on ErrorList and Console will fail
1155  to load, even if they are not broken themselves. So don't panic if you
1156  see a huge list of plugin errors on startup; most of them won't need
1157  fixing.
1158
1159}}}
1160
1161}}}
1162
1163jEdit buffer local properties:
1164:wrap=hard:maxLineLen=72:indentSize=2:
1165:folding=explicit:collapseFolds=2: