Announcing Orion 16

We are pleased to announce the sixteenth release of Orion, “Your IDE in the Cloud”. You can run it now at OrionHub, from NPM or download the server to run your own instance locally. Once again, thank you to all committers and contributors for your hard work this release. There were 169 bugs and enhancements fixed, across 236 commits from 16 authors!

This release was focussed on making compatibility, stability and overall quality improvements to the Node.js server. We also dark launched debugging support directly in Orion – although not completely polished, it is available for the community to try.

Posted in Announcements | Tagged , | Comments Off on Announcing Orion 16

What’s new in Orion 15.0

After three more months of hard work from committers and our amazing community, we have another great release! This release continued our mission to make Orion as accessible as possible for all developers, included many UX improvements and has a lot of new language tooling features.

Accessibility

We’re continually improving Orion to be the best possible experience for all developers. In Orion 15, we have improved keyboard access, menu navigation and better handling of “splitters”.

Improved tab handling

A substantial amount of work went into making sure that use of the tab key was sensible and properly presented an affordance for its location. Some of the work included:

1. Ensure that all locations that can be tabbed to show a visible ‘focus rect’

Tab focus rectangle

Tab focus rectangle

2. Extend the F2 capability for the editor to show an annotation hover to also show (and put the focus on) any available tooltip for the element with the focus, regardless of the page you’re on (i.e. works on the Git and Settings pages as well now. ESC will return focus to the original element.

F2 focus tab rectangle

F2 focus tab rectangle

3. Make sure that all modal dialogs will ‘trap’ the tab key usage and correctly cycle through the dialogs’ elements.

Improved menu navigation

On the Edit page if the focus is on the main menu you can now use the arrow keys to navigate to any item in the whole menu structure.

Improved splitter manipulation

There is a new command Command + Shift + ‘.’ available that will cycle through each splitter on the page, granting it focus. Once focussed you can use the arrow keys to move the splitter, Enter to toggle the splitter’s ‘thumb’ (if any). ESC will return the focus to the original element.

Code Edit Widget

Override default keybindings

Consumers of the widget now have complete control over the keybindings in use – with improved support to completely override the default bindings the come with Orion.

More details can be found on the in-depth how-to wiki page for the widget.

Language Tools

Docker file support

When working within docker files, Orion 15 now has support for content assist to make things easier. Assist uses the standard Ctrl+space keybinding.

Dockerfile assist

Dockerfile assist

Improved content assist

There have been many improvements in the content assist for other languages as well. For example, assist within CSS files got a substantial overhaul and now provides more complete and correct assist for rules and attributes.

CSS assist

CSS assist

We have also made assist for HTML and JavaScript a bit easier to understand at first glance, by decorating obsolete and deprecated proposals differently than “normal” ones.

Deprecated JavaScript proposal

Deprecated JavaScript proposal

.tern-project hover support

While working in your .tern-project file, you can now hover over entries in the file to get additional information and help.

Tern project file hover

Tern project file hover

package.json hover support

While working in your package.json file, you can now hover over entries in the file to get additional information and help.

package.json hover

package.json hover

.eslintrc hover support

While working in your eslint configuration file(s), you can now hover over entries in the file to get additional information and help.

ESLint hover

ESLint hover

The hover support for ESLint configuration entries is also available within your package.json file in the eslintConfig section. The hover support is not available yet in the *.yml and *.yaml variants of the ESLint configuration files.

Third party Tern plug-ins

Adding a Tern plug-in to Orion that is not part of the codebase has always been challenging. First you would have to modify the JavaScript tools code, rebuild Orion yourself and then deploy it yourself. In Orion 15 though, you can now load a plug-in directly from your workspace or another location.

The complete details can be found on the bug, but the general scheme is:

  1. you can load a Tern plug-in from a hosted location or the .tern-plugins folder within your project
  2. you plug-in can contribute to all the normal passes and callbacks from Tern
  3. your plug-in must be declared via the .tern-project file

Platform Improvements

JavaScript project information

If you select a project in the navigator, Orion now has support to show you what the JavaScript tools thinks about the configuration of the project. The new information is shown in the JavaScript section and contains helpful information about what ECMA level is being used to parse, etc. There are also handy links to common configuration files (if they are present in the project).

JavaScript project information

JavaScript project information

Updated “Hide system files from the navigator ” preferences

Rather than having to type out all of the names of resources you want to be filtered from the explorer views, we have updated the preference to support wildcards like ? and *.

Editor tab support

Finally. After all this time, we have support in Orion for multiple editor tabs! By default Orion still works in the “one editor per browser tab” mode, but you can start using editor tabs by simply turning on the preference in the General prefs section.

Orion editor tabs preference

Orion editor tabs preference

Once enabled, you can open multiple files within a single editor, rather than have multiple browser tabs open. Tabs can be closed, dragged, reordered, and switched to using convenient keybindings.

Multiple editor tabs

Multiple editor tabs

Custom Themes

Plugins can now contribute their own themes to style Orion. All of the information related to the new orion.core.container.themes.provider service can be found on the API documentation wiki page.

Multiple workspaces

The Orion platform now has support for multiple workspaces! This allows consumers of Orion to better organize their files by having multiple source repositories spread across multiple workspaces instead of one gigantic workspace filled with many unrelated repositories.

By default Orion does not have end-user support to create and manage multiple workspaces, so third party support is required.

Node.js Server

A lot of work went into making the Node.js server more stable and making sure it was feature-complete compared to its Java version.

Git rebase skip support

Support for skipping conflicting commits during rebase has been added to the server.

Git squash support

The ability to squash commits into the index has been added to the server.

Move to Github

As we talked about in a previous post, during 15.0 we moved all of our source to Github. If this is the first time you are hearing about the move, then head over to the post, and give it a read for all the details about where to find our code and how to contribute.

Posted in New & Noteworthy | Tagged , , , , , , , , | Comments Off on What’s new in Orion 15.0

Announcing Orion 15

We are pleased to announce the fifteenth release of Orion, “Your IDE in the Cloud”. You can run it now at OrionHub or download the server to run your own instance. Once again, thank you to all committers and contributors for your hard work this release. There were 191 bugs and enhancements fixed, across 367 commits from 18 authors!

This release was focussed on making improvements in the Node.js server and Electron app, and progressing on adding collaborative development support and debugging support directly in Orion. Additionally, the Orion repos have now moved to github.com (client and server).

The improvements in the Node.js server will see it soon replace the Java server as the preferred implementation. The new work on adding collaborative development support and debugging support directly in Orion is not quite ready for prime time, but should officially land in Orion 16.

Posted in Announcements | Tagged , , , | Comments Off on Announcing Orion 15

Orion Moved to Github

You may have heard a couple of weeks back that Orion moved to Github. If not, then let this be the notice that Orion moved to Github!

We are very excited about the move. The webmasters (Derek Toolan in particular) did an amazing job in making the transition seamless and simple.

Why?

You are probably wondering to yourself: “why did you move, you had a great home at eclipse.org?”. The answer boils down to simpler contributing. With Github, we felt that it would be far easier for committers, community and everyone in-between to be able to contribute to our project. No more Gerrit, confusing Gerrit configurations, or multiple remotes – just fork the project, make awesome code and open a pull request. Simple.

Ok, so where’s the code

All of the Orion source code can now be found in the following locations:

  • orion.client – the Orion client code
  • orion.server – the Orion Java server code
  • orion.server.node – this will eventually be the home of the Node.js-based Orion server. Its currently empty while we sort out what code we want to separate out
  • orion.electron – this will eventually be the place we host our Electron-based app from. Currently it is empty while we sort out the builds, etc for the app

What else do I need to know?

There are a few pretty important things that need to be addressed – especially if you are currently a contributor / committer to Orion.

  1. Make sure your Eclipse account is linked to your Github id. This is super-mega-ultra important, especially if you are a committer. The webmasters have provided a great wiki page that talks more about this.
  2. Make sure to update your repos / remotes. The old Git repositories have been set to read-only (as have the gerrits) – so make sure you update (or just re-clone) the repositories to avoid accidentally working against the old stuff.
  3. We are still using Bugzilla (so no changes in how to file / search / triage bugs). For the time being we will keep using it until we figure out a good flow for tracking issues across multiple repositories in GitHub.
  4. All contributions should be made as pull requests. The Gerrit instances for each old repository are set to read-only so they cannot be used, and if you really want to, you could still attach a patch to the bug you want to fix (but seriously, please use a pull request).

Thanks again to everyone that helped make this possible.

Happy coding!

Posted in Announcements, New & Noteworthy | 1 Comment

Orion 14.0 New and Noteworthy

Another three months and another awesome release! Its that time again where I share all of the cool new features, enhancements and fixes with you. As usual with every release, there were lots of changes, so lets jump right in.

Accessibility

The work that began in 13.0 to make Orion completely accessible to every developer continued at a furious pace in 14. This time around, our work was focussed on having the correct colour contrast.

We tightened up our colours in the light theme so that all colours pass the WCAG 2.0 AA guideline for colour contrast. The changes are subtle, but they do make text easier to read, as seen in this before-and-after snapshot of selected code in the editor.

Selected text comparison

Comparing selected text in 14.0 vs. 13.0

Language Tools

Automatic Project Configuration

The JavaScript tooling can now read and understand complex project configurations and automatically configure Tern for the best development experience. For example, the tools can better read and understand package.json files and automatically load available plugins into Tern (rather than the user having to tailor their configuration settings).

Projects Anywhere

Using the new support from the platform to find project contexts, the JavaScript tools can now support a “project” at any level in the navigator. Where a project means any folder that contains JavaScript project-like files – package.json, .tern-project, etc.

Smarter Defaults

The default configuration for the JavaScript tools has been retooled to provide more support right out of the box. In Orion 13.0 (and before), we started the tools in a very bare-bone fashion, and would alert you about potential configuration changes (with quick fixes). Now we automatically start with ECMA, node and browser support, and configure your project as you code.

Disable Linting In-File

Tired of being nagged about a particular code pattern used in certain places (but like to be warned elsewhere)? You can now use the new quickfix to ignore the problem in the current file.

Disable rule in-file

Disable rule in-file

JavaScript Type Icons

In an effort to make the overload of information (while coding in JavaScript) a bit more understandable, we have added icons to help users immediately understand the type of something. For example, F stands for function, O is for objects, C is for classes, etc.

Type icons

Type icons

Improved ESLint configuration file support

We have improved how the JavaScript tools handle the various forms of ESLint configuration files. We now properly support all entries of the files (except for extends).

SVG Support

The CSS and HTML parsers have been updated to properly support SVG attributes and properties. The HTML and CSS validation has also been updated to properly process the new attributes and properties.

Platform Improvements

Syntax Styling

Syntax styling grammars can now define a firstLineMatch attribute.  This enables multiple grammars to be defined for a content type, and the grammar that gets applied will be chosen based on the first line of content.

Tasks

The node server now stores its tasks metadata in a Mongo DB when running as multi-tenant.  As a result, requests querying long-running tasks can now be handled by different server instances that have access to the shared Mongo DB.

Automatic Syntax Checking

Previously, syntax checking took place when a file is saved – if you have autosave turned on in Orion, this is not a problem, as problem markers would be updated as you made changes. If however, you had autosave turned off, any problem markers would quickly become stale causing confusion. Now, in Orion 14, syntax checking will take place on a regular interval even if autosave is turned off, to try and avoid stale problem markers piling up.

New File Client API

The Orion file client has been updated with the ability to find a project given a particular resource path. The new API can be invoked as:

fileClient.getProject(resourcePath, options)

Information Annotations

A new type of annotation has been added to Orion – the info annotation.

The info annotation

The “info” annotation

Annotation Visibility

Always wanted to only show annotations in certain parts of the IDE? Well, now you can.

Simply navigate to the editor settings preference page, and look for the Annotations, Overview Annotations and Text Annotations sections to configure annotation visibility as you’d like.

Annotation visibilities

Annotation visibilities

Don’t forget, you can also use the handy star buttons to have the preference(s) show up in the quick preference menu.

IDE Themes

Finally, after all this time, we have the ability to change the theme of not just the editor, but the entire IDE from the preferences!

Not happy with the default theme in Orion? Head over to the IDE Theme preferences page to change to another theme (currently there are only two of them) or create your own (by modifying an existing theme and saving it as your own).

IDE Theme preferences

IDE Theme preferences

Posted in New & Noteworthy | Tagged , , , , | Comments Off on Orion 14.0 New and Noteworthy

Announcing Orion 14

We are pleased to announce the fourteenth release of Orion, “Your IDE in the Cloud”. You can run it now on OrionHub or download the server to run your own instance. Once again, thank you to all committers and contributors for your hard work this release.  There were 150 bugs and enhancements fixed, across more than 380 commits from 14 authors!

What’s new in Orion 14?  This release was focussed on quality and ease of use – Orion 14 is more accessible (better colours and accessibility), easier to start coding in (the tools now automatically understand complex project configurations, so you don’t have to), and just more awesome in general.

We continued to improve the Node.js server (which is used on orion.eclipse.org or locally), and continued to improve our Electron app. Lastly, we began work in 14.0 to provide collaborative development support and debugging support directly in Orion! Stay tuned in Orion 15 for these features to officially land.

Enjoy!

Posted in Announcements | Tagged , , , | 2 Comments

New and Noteworthy in Orion 13.0

With Orion 13.0 released (just in time for the holidays), it is time again to share with you the new & noteworthy items developed during this release. There are lots of changes across all of Orion, so lets dive in to each area and see whats new.

Accessibility

We have been striving to make Orion as accessible as possible to all developers. In Orion 13.0 we have improved accessibility across the board – from standard labels to the code edit widget and everything in-between. We still have a ways to go, but plan to be fully accessible in Orion 14.0.

Code Edit Widget

The code edit widget just keeps getting better and better. In Orion 13.0 two great things happened: (1) You can finally see the keybinding dialog, and, (2) you can now add your own custom code folding!

To jump right in and start enhancing your use of the widget with some cool folding, check out the docs.

Electron

We have created an experimental version of Orion that runs as an Electron app!

The Experimental Orion Electron app

The experimental Orion Electron app

Currently, to use the app, you have to build and run it locally (we are working on providing regular builds of the app).

Language Server Protocol

A lot of work has gone into investigating and supporting the language server protocol since its announcement last summer.

In Orion 13.0 we have experimental support for the LSP and for Java that can be used on your local machine. For full details on how to get up and running, see this great readme.

Language Tools

Lots of cool new stuff is available in the language tools in 13.0.

Linting

We have provided 13 new linting rules (a coincidence, I promise), such as, no-extra-bind and no-implicit-coercion. The complete list of rules added in 13.0 can be found on our rules wiki.

The no-implicit-coercion linting rule

no-implicit-coercion (with fix)

To accompany the new linting rules, many new quickfixes have been added as well, allowing problems to be quickly and easily resolved.

The quotes linting rule quickfix

quotes rule quickfix

To keep all of the rules running smoothly, we also updated to ESLint 3.0.1

ECMA 2016

Orion 13.0 ships with complete support for ECMA 2016. To start developing using the new language features, you have to make sure to set the ecmaVersion entry in your .tern-project file to 7.

ECMA 2016 example snippet showing content assist

ECMA 2016 example

AST Outline

A lot of times, while working on language tooling features, developer have wondered what the backing AST looks like (to help diagnose whats wrong). In Orion 13.0 we have provided an AST outline for JavaScript, to make this task easier.

You can see the new outline using the View > Slideout > AST Outline menu item when working in JavaScript files.

The AST outline showing a simple snippet

AST outline

Code Formatting

One of the most sought-after features of an IDE is the ability to quickly fix the shape of code. One of the easiest ways to do that is code formatting. In Orion 13.0 we provided a platform API (orion.edit.format) to add formatting to any language, editor hooks to format-on-save, support to format selections of code and support for .jsbeautifyrc files (for project-level formatting options).

Orion ships with four language formatting implementations: (1) JavaScript, (2) HTML, (3) CSS, and (4) JSON.

Formatting can be used in one of three ways:

  1. Format-on-save: head into the editor options to enable this feature, then, as you save your work, it will also be formatted
  2. The Edit menu item: look for Format Code under the Edit main menu
  3. The pop-up menu: look for Format Code in the pop-up menu in the editor
Format code popup menu from the editor

Format code in editor

Not happy with the way the formatted code looks for JS/HTML/CSS/JSON? Simply head over to the formatting preference pages for each language and change the settings as desired.

The page with CSS formatting options on it

CSS formatting options

HTML Validator

In addition to updating our HTML parser in Orion 13.0, we also provided a pluggable HTML validator to help you keep your page source in tip top shape.

Example HTML validation

HTML validation

Like all our other validation, you can configure the HTML rules severities. The settings are found on the HTML Validation settings page.

Improved Internationalisation

All of the linting messages coming from the CSS tooling can now appear in other languages than English.

Updated Libraries

As we do each release, we have updated many of the libraries we use in our language tools. This time around we updated the following:

  • ESLint to 3.0.1
  • Doctrine to 1.2.2
  • ESTraverse to 4.2.0
  • Acorn to 3.3.0

Platform Improvements

Syntax Styling

Orion 13.0 has improved syntax styling support for many of our existing languages (like PHP and SQL) and also adds support for .sh files

Excluded Files

Any callers of the search API (via the file client) can now specify an array of names to be ignored by the search engine. This allows callers to ignore all kinds of things they don’t care about while speeding up the search for things they do.

The new property is named ‘exclude’ and is an array of strings. See the API doc for more information.

Filtered Resources

Sometimes there are things you just don’t want to see in your workspace (or that you shouldn’t see). In Orion 13.0 we provided the ability to filter / hide resources from appearing in the UI.

The preference for this is on the General settings preference page and is a simple comma-separated list of names of things to not show.

Shows general settings page and hidden resources preference

Resource names to hide

Light Theme

Orion now sports a shiny new light theme!

But don’t worry if you really really liked the old theme, in Orion 14 we are bringing back the theme preferences to allow this to be customized.

Posted in New & Noteworthy | Tagged , , , | Comments Off on New and Noteworthy in Orion 13.0

Announcing Orion 13

We are pleased to announce the thirteenth release of Orion, “Your IDE in the Cloud”. You can run it now on OrionHub or download the server to run your own instance. Once again, thank you to all committers and contributors for your hard work this release.  There were over 180 bugs and enhancements fixed, across more than 350 commits from 13 authors!

What’s new in Orion 13?  The Orion 13 release continues to emphasize our language tooling.  In particular, we now have code formatting, support for .jsbeautifyrc files and full ECMA 2016 support.  We have also been investigating LSP and have some experimental work in place to support Java, but this is not yet generally available.

The other focus of this release is consumability and accessibility. To make Orion easier to use for end users, admins and everyone in between, we substantially improved the node.js server (which is used on orion.eclipse.org or locally), created an experimental Electron app version of Orion, improved accessibility, enabled custom code folding in the code edit widget and a whole lot more!

Enjoy!

Posted in Announcements | Tagged , , | 2 Comments

Google Cloud Shell adopts the Orion Code Editor

It’s nice to see Google Cloud Shell using Orion in their latest offering. Google Cloud Shell is just that: a shell (really a bunch of shells) to a machine in the cloud. The machine contains source files (go figure) and Orion is great at editing files, syntax coloring, code assist, refactoring, dynamic linting and much more.

This is how you get to Orion in Cloud Shell:

google-cloud-editor-launch

Here is Orion running in Google Platform Shell:

google-cloud-editor-orion

I am reminded that IBM makes extensive use of Orion as a code editor in Bluemix DevOps Services and that we should really blog about that again soon.  Development in the cloud for the cloud!

Steve

Posted in General | Comments Off on Google Cloud Shell adopts the Orion Code Editor

New and noteworthy for codeEdit widget 12

Orion codeEdit widget debuted just one year ago in Orion 9.0. Thanks to all the valuable user feedback over the past year, now in Orion 12, the widget has been improved a lot for both usability and customizability. We’ve updated the widget wiki page to include the latest features, summarizing user feedback in the FAQ section.

The codeEdit demo page shows you two of the biggest improvements in the widget: customizable editor configurations and fine tuning your web language tooling. In Orion 11.0 we introduced tern project – now this feature is integrated into the widget. In the demo you will see a zoom ruler in each editor, enabled by an editor configuration change. You will also see how the javascript file validation behavior changes while live editing the tern project and eslint rule files.

Aside from that, there are other major improvements that are not shown in the demo.

With all the improvements so far, we found it’s been much easier for the existing users to consume and customize the widget. We are still improving in other areas so please stay tuned.

Posted in General | 1 Comment