Tuesday, November 7, 2017

Macro keyboard recording on Eclipse / LiClipse 4.3.1

I'm currently working on a new engine for record and playback of keyboard macros in Eclipse. It's currently available as a project in the Eclipse incubation (see https://wiki.eclipse.org/E4/Macros for more details and how to install it to Eclipse) and I hope it'll be a part of Eclipse 4.8 -- the current version should be stable already, but it needs some hardening, so, feedback is appreciated ;)

Also, I decided to integrate it into LiClipse too (so, the new 4.3.1 release of LiClipse adds support to record and playback of macros).

The idea is that this will fix a long standing (and popular) feature request in Eclipse -- https://bugs.eclipse.org/bugs/show_bug.cgi?id=8519 -- and a pet peeve on mine too as it's not uncommon for me to copy a file to notepad++ to make a record/playback and then copy it back to Eclipse... this really should be builtin (as a note, the rectangular edition in Eclipse, multiple cursors in LiClipse  and regexps in the find dialog do solve a number of use-cases, but I find that record/playback on some cases is invaluable).

Now, why not just use https://sourceforge.net/projects/practicalmacro/? Well, I've used it some times but unfortunately I didn't find it as stable as I wanted -- it's really hard to come up with a stable record of what's happening in Eclipse -- so, I think an effective solution must really be builtin to Eclipse in order to be effective.

Also, in order to be feasible, there are some limitations in the scope on what it should accomplish: it's not a general Eclipse IDE record/playback, but rather a record/playback in the scope of an editor, so, it should properly record/playback the keystrokes in the editor and the resulting actions from such commands (although the implementation is done in a way which could support more general recording in Eclipse, but this would require changing many other parts of the IDE to be aware of the macro record/playback, so, I'm not sure it'd be feasible).

This means that some particular implementations which don't work through commands will have to be adapted -- so, for instance, record in the find dialog currently doesn't work because it doesn't work through commands and there's no way to listen that a find action was actually triggered from there... right now, the workaround is using the Incremental Find (Ctrl+J) and Find Next (Ctrl+K) commands when on record mode (my idea is taking a look at it after the macro record/playback engine is integrated to core Eclipse as I don't think it's a blocker due to having a proper workaround through actual commands), the focus now is making it solid for record and playback of commands which are related to the text editor.

So, that's it, hope you enjoy macro recording on LiClipse 4.3.1 -- and hopefully on Eclipse itself later on ;)

Tuesday, August 15, 2017

LiClipse 4.1.1 / LiClipseText 2.0.0

Ok, the new versions of LiClipse (4.1.1) and LiClipseText (2.0.0) are now out.

This version had many changes, the major one being that LiClipseText now reuses the same engine that tm4e uses for parsing code when based on a TextMate grammar (which is is a translation from the same engine used in VSCode), so, hopefully this should iron out most issues when dealing with TextMate grammars.

Also, it can now parse in a thread to prevent the UI from becoming unresponsive (although it'll only really do that if there are too many changes for it to parse).

There were also improvements in the definition being used for JavaScript, so, parsing should be *much* faster (although this was done at the expense of not showing some entries in the outline) -- but as on JavaScript having huge files isn't uncommon, the big performance gain, should be worth it.

Aside from that, the standalone is now based on Eclipse 4.7 (final) and PyDev was also updated for 5.9.2, which brought enhancements such as the new debugging approach using bytecode modification with the new Python 3.6 hooks and isort integration, besides a critical fix to the Lucene integration, which affected users which used a different plugin which also used Lucene but on a different version.

So, if you're a LiClipse user, hurry to http://www.liclipse.com/download.html to get the new version!

Thursday, June 8, 2017

LiClipse 4.0 released

LiClipse 4.0 is now available for download!

This is the first release based on Eclipse Oxygen (built on 4.7 RC3). It's still not a final release, but very close to it, so, make sure you take a look at https://www.eclipse.org/eclipse/news/4.7/platform.php for the latest news in the platform (the gem for me is now being able to hide the status bar -- personally, I'm now using Eclipse without the toolbar nor status bar -- really nice for a minimalist theme).

There was a critical fix for users on Mac OS which resulted in LiClipse not working properly after an update. Note that for Mac users which are using LiClipse 3.x, a fresh install is needed (follow the instructions from http://www.liclipse.com/download.html#updating_native).

The other major changes in this release are actually in PyDev, which featured a fix which prevented the code-coverage from working properly and now supports code coverage when testing with pytest. Also, IronPython is supported again in the debugger (it was previously broken because IronPython didn't support sys._current_frames (although an important note is that IronPython 2.7.6 and 2.7.7 don't work with PyDev because of a critical issue in IronPython, so, either keep to IronPython 2.7.5 or use the development version).

There were also fixes in the PyLint integration, updating docstrings, finding __init__ on code-completion when it's resolved to a superclass, etc... See: http://www.pydev.org for more details.

Enjoy!

Friday, November 4, 2016

LiClipse 3.2.1

The new LiClipse release is out.

The major updates were actually to PyDev, which has fixes such as a regression added on 5.3.0 where Ctrl+1 was not properly resolving symbols from dependent projects, code analysis on a particular case with PEP 448 (list unpacking), auto-indents async and await blocks, highlights async and await blocks and fixes an issue in the code completion using from..import..as aliases.

It does have one new feature in which Ctrl+Shift+O (which fixes unresolved tokens by adding the needed imports) uses the improved sorting also used for the code-completion (so that tokens from the project appear before tokens from other projects, which in turn appear before tokens from the standard library). Also, the substring completion is now on by default (it may be turned off in the code-completion preferences).

Still, besides the updates to PyDev, the stock LiClipse themes were improved so that the current selected tab colors (on the active or inactive views) can be configured (selectedTabInitialBackground and selectedTabActiveInitialBackground in the theme preferences) and some colors were changed to have better defaults in a number of themes.

Thursday, August 18, 2016

LiClipse 3.1.0 (updating dependencies)

LiClipse 3.1.0 was just released.

The major changes aren't really on LiClipse itself, but on the bundled PyDev (5.2.0) and EGit (4.4.0) plugins.

PyDev changes may be seen at http://pydev.blogspot.com.br/2016/08/pydev-520-released-static-type.html.

EGit changes may be seen at https://wiki.eclipse.org/EGit/New_and_Noteworthy.

Enjoy!


Friday, May 20, 2016

LiClipse 3.0.3 (providing back to Open Source: multiple languages/TextMate bundles in Eclipse).

LiClipse 3.0.3 is now released... The main things on LiClipse itself is that the base platform was upgraded to Eclipse 4.6 RC1 and EGit was upgraded (it had a critical issue in the Git Staging View).

Now, what I really wanted to talk about is that with this release, the LiClipse editor component was open sourced!

The editor component in this case is the component which allows LiClipse to support multiple languages out of the box (either through its own language or through the TextMate grammar).

So, the features which are now available as Open Source (EPL) are:

  • Syntax Highlighting (LiClipse, TextMate or SublimeText based).
  • Code completion.
  • Outline view and Quick Outline.
  • Text-based mark occurrences.
  • LiClipse Languages view:
    • Enables exploring installed languages.
  • LiClipse Partitions view:
    • Enables inspecting the partitioning of the editor.
    • Useful to debug how LiClipseText is parsing a language.
  • Use LiClipseText as a base for other editors:
  • Languages may be created and experimented with on-the-fly, without restarting Eclipse.
The home page with more details on the project is: http://liclipse.com/text.

So, what does this mean for LiClipse itself and its current users?

First, LiClipse (the commercial counterpart) still exists and provides advanced features not in LiClipseText:
  • Bundling of LiClipseText (along with PyDev, EGit, ColorTheme, AnyEdit and StartExplorer) as a standalone with native installers.
  • Enhancements to the theming (allowing theming of the IDE along with the editor and a nice dark theme).
  • Multiple cursors.
  • Linting for JavaScript, XML and HTML editors.
  • Code formatting for HTML, XML.
  • Vertical Indent Guides.
  • Improved text search capabilities (with Lucene index-based searching, support for external folders, open editors and additional filtering on results page).
  • HTML preview for the RST, Markdown and HTML editors.
  • Debugging of Django Templates in PyDev.
  • Launching of files opened with LiClipseText.
My hope is that users that can will still upgrade to it (to get the advanced features and to help in keeping the LiClipseText and PyDev development going on) or will donate to keep its development going forward...

And the main benefit here (both for existing users or new users) is that the LiClipse editor (LiClipseText) being EPL makes it hackable by anyone ;)

Thursday, May 5, 2016

LiClipse 3.0.1: Java 8 now required (JSHint and Beautify.js using Nashorn JavaScript engine)

LiClipse 3.0.1 is now available for download.

There are 2 major changes in this release: it's now based on Eclipse 4.6 M7 and requires Java 8 to run.

I find Eclipse 4.6 M7 a big improvement over 4.5 already (for me, the major improvements are that the default dark theme improved and it's speedier, but there are many other improvements -- you can see those starting at https://www.eclipse.org/eclipse/news/4.6/M7 -- and going back up to M1).

The Java 8 requirement also brought a nice improvement for running JSHint: the Nashorn JavaScript engine which is now used to run it (it's much faster than Rhino, so, big JavaScript documents should no longer make LiClipse stall due to the JSHint code-analysis) -- unfortunately it's not currently officially supported (https://github.com/jshint/jshint/issues/2730), so, a modified version was used to run in it in LiClipse.

This release also removed the builtin support for the trees/tables custom scrollbars (I hope to restore that later on... still, currently, it's possible to restore it's behavior by installing the Xiliary plugin from http://fappel.github.io/xiliary/clean-sheet.html and enabling the related setting at at General > Appearance > Color Theme).

Also, EGit (which now handles pre-commit hooks properly) and PyDev (which now keeps the state of the PyUnit view across restarts) were updated.

As a note, users which have a license for LiClipse 2.x need to renew the license to use LiClipse 3.x (users that bought it within the last month are eligible for a free upgrade).