PDA

View Full Version : [OPEN] Plugin suggestions



kevhender
9 Apr 2015, 12:35 PM
Hey Mark, fantastic job on the plugin! This is very cool and already has been a big help with some simple tasks for us.

A couple suggestions from my initial experiences:
1. Perhaps some sort of ordering for the requires array management. This is a total nit, but I like to keep these so at least classes from the same package are listed next to each other.
2. Easier way to configure root directory(ies) for package/class name sensing. We are still working on getting our older app into the proper Sencha directory structure, and still aren't using app.json (but we surely aren't the only team dealing with non-standard directory structures), so it would be great to be able to more easily configure the root directory for package/class naming capabilities.
3. Improved performance. It is taking a quite a while to analyze each file as it is opened

Again, great work! Looking forward to using this heavily moving forward.

Mark.Brocato
9 Apr 2015, 2:04 PM
Thanks! I've filed these suggestions in our bug tracker. Stay tuned for updates over the coming weeks.

Miggins
14 Apr 2015, 6:13 AM
I'd also like to add that I'm excited about the plugin - I spend all of my day in IntelliJ.

Can I also suggest that you investigate the use of Facets for the plugin.

At the moment, the plugin is active across all the modules in a project - regardless of their type. This means that when I'm coding in a pure Java module, Ctrl-N brings up the 'New..' menu and the ExtJS Class & Workspace have pushed the Java elements down.

You should be able to define an ExtJS facet against a module. The plugin will then be specifically enabled for the module without interfering with the settings for modules of other languages.

For reference you could look at the scala or spring plugins which both use facets.

rdgrimes
22 Apr 2015, 9:15 AM
How about making this plugin available as a download? I work inside an SDE (secure development environment) that doesn't have access directly to the Internet. I have to download all software to my desktop, ftp it inside the SDE, and then install it.

Miggins
22 Apr 2015, 9:20 AM
How about making this plugin available as a download? I work inside an SDE (secure development environment) that doesn't have access directly to the Internet. I have to download all software to my desktop, ftp it inside the SDE, and then install it.

You can get the latest version here:

https://plugins.jetbrains.com/plugin/download?pr=idea&updateId=19390

(https://plugins.jetbrains.com/plugin/download?pr=idea&updateId=19390)And future updates off the plugin page itself:

https://plugins.jetbrains.com/plugin/7740?pr=idea&showAllUpdates=true

Mark.Brocato
22 Apr 2015, 9:21 AM
You can download it from the JetBrains website here:

https://plugins.jetbrains.com/plugin/7740?pr=

Miggins
22 Apr 2015, 9:23 AM
Mark

Any chance you could respond with your thoughts on adding a Facet facility to the plugin?

Mark.Brocato
22 Apr 2015, 7:01 PM
I do think the facets idea is a good one. We are going to explore that for 0.3, which will be released about three weeks from now. In The meantime I think we can just push the new app and workspace items down in the create menu for 0.2. They should be seldom used so they do not warrant a top spot.

Chris.OBrien
27 May 2015, 9:38 AM
1. Perhaps some sort of ordering for the requires array management. This is a total nit, but I like to keep these so at least classes from the same package are listed next to each other.

We just released 0.3 of the plugin in the past week, which will now sort your requires array alphabetically. Thanks for the input.

jcvetkovic
14 Jun 2015, 11:07 PM
Any search is going throw both src and target folder,I don't know if this is relevant, but I think if we could exclude target folder, it would give us some more speed on IDE?

Mark.Brocato
16 Jun 2015, 12:11 PM
The plugin automatically excludes the build folder used by sencha cmd during builds from indexing (/build in the root of the Ext JS project). If you're not using sencha cmd or have some other build process for copying/merging/minifying javascript assets, you should mark the target directory as excluded in the project tree (right click... Mark Directory As... Excluded). That will help speed things up.

jcvetkovic
22 Jul 2015, 5:57 AM
Hi Mark,I have one question, is it possible that plugin could sorts methods and members alphabetically? If yes, how. And if not, do you have it in plan to be implemented?

Mark.Brocato
27 Jul 2015, 6:58 AM
No, there's no way to sort class members as of yet. We hadn't planned on it, but I will open an enhancement ticket to track it.

jcvetkovic
7 Sep 2015, 4:23 AM
Hi Mark, Correct me if I am wrong, I need to have ext folder within application, so intelliJ plugin can work as it should.My question is, can I have ext folder outside of application - it will be included within build process?

Mark.Brocato
8 Sep 2015, 5:55 AM
The ext folder doesn't have to reside inside the project, but if it resides outside of the project you'll need to add it as a JavaScript library for code completion to work. Follow these steps:

From the Preferences dialog, select Languages & Frameworks… JavaScript… Libraries and click the “Add” button. Create a library definition with the following settings:

Name: Ext JS
Framework type: <Custom>
Visibility: Project
Directories: (Ext JS SDK directory)

Once applied you should see the IDE do some indexing (could take a minute) and then code completion should work.

As far as the build process is concerned, all the plugin does as far as building and running your app is use sencha cmd's app watch, so as long as you configure your builds to work with cmd, your experience with the IDE won't be affected.

jvandemerwe
9 Oct 2015, 3:59 AM
I think that a nice feature would be a resolve of requirements as menu option or hotkey. So that it can be done on demand.

Chris.OBrien
12 Oct 2015, 7:06 AM
I think that a nice feature would be a resolve of requirements as menu option or hotkey. So that it can be done on demand.

There are shortcut keys in the JetBrains products that might be able to help you out with this. If you see the yellow underline for items that warn they should be added to the requires block, you can press option-return in OSX (and alt-return in Windows) to bring up the inspection popup menu.

From here, you can fix the one warning, or select "Add all dependencies to requires" with the keyboard.

jcvetkovic
19 Feb 2016, 12:10 AM
Hello Mark, I've been working with sencha plugin for a while and also switched to IntelliJ per your advice.I've been experiencing sort of issue, more like annoying thing then a real bug.IDE freezes frequently, and what I think how I'm reproducing this is when I select some text, IDE freezes for few seconds and I also noticed that processor goes to 100 for a while and then it keeps working fine.It is quite annoying and it breaks my focus while working.I'm using Ubuntu 64, 14.04 and running IntelliJ 64 also, I had 8gb of ram, and add another 8 to be sure that isn't memory issue but I'm steel experiencing this.

Mark.Brocato
19 Feb 2016, 4:23 AM
It might be good to verify whether or not the sencha plugin is contributing to the slowdown by disabling it and seeing if the problem goes away. It's possible that the problem could be due to some other plugin or setting. As far as general advice, if I ever run into sluggish performance I try to mark directories with built assets, such as minified or compiled JS files, as excluded. This helps cut down on the amount of code being indexed, which can affect performance.

Lastly, what version of IntelliJ are you using?

jcvetkovic
4 Mar 2016, 1:31 AM
It was intelliJ issue, I was using version 14 and upgraded to 15, after few days I can surely say that I do not experience performance issue anymore.
Thanks for the suggestion Mark.

Also what I have encountered so far is that some ExtJS classes are not recognized by plugin, and therefor grayed out.
Also all functions declared within class are marked as anonymous, should I just exclude these or there is some other solution?

By the way, thanks for the great work You are doing here for us :)

Mark.Brocato
4 Mar 2016, 5:19 AM
Can you post some screenshots? The case I know of where the plugin won't recognize Ext JS classes is if you're in the app directory of a universal app and you're trying to access classes in either the classic or modern toolkit. That's because there are many overlapping class names between the toolkit and it doesn't know which one is being referenced. Is that the case you're running into or something else?

jcvetkovic
4 Mar 2016, 5:25 AM
These are the most basic cases I have. Simply extend Window, and window.Window is grayed out, not accessible.
And any method that is declared is marked as anonymous one.

Mark.Brocato
4 Mar 2016, 5:27 AM
A few questions:

Is that code in an app or package?
What version of Ext JS are you using?
If Ext JS 6, which tookit?
What is the path to that file within the app or package?

jcvetkovic
4 Mar 2016, 5:36 AM
This is code in an app, in subfolder "foundation.defaultdialog.Abstract".
Ext JS 6.0.1.250 and cmd 6.0.3.34.

Mark.Brocato
4 Mar 2016, 5:41 AM
Is that a universal app, or does it only use a single toolkit (in other words, what is the value of "toolkit" in app.json?)

What is the full path to that file? For example is it:

(AppRoot)/app/foundation/defaultdialog/Abstract.js

or

(AppRoot)/classic/src/foundation/defaultdialog/Abstract.js

jcvetkovic
4 Mar 2016, 5:44 AM
Toolkit is classic and file is as (AppRoot)/app/foundation/defaultdialog/Abstract.js

Mark.Brocato
4 Mar 2016, 5:48 AM
Ok, everything looks right then. Do any classes with the Sencha icon show up if you type ctrl-space in the value of the extend property? Do other classes from the classic toolkit show up? For example, Ext.panel.Panel?

jcvetkovic
4 Mar 2016, 5:56 AM
Some of them show up, but some do not. Util, ux, draw, charts are there and few others, but panel, window, form are not there.

Mark.Brocato
4 Mar 2016, 6:02 AM
It definitely looks like the plugin thinks it's a universal app. Could you post your app.json file?

jcvetkovic
4 Mar 2016, 6:12 AM
Here it is.

Mark.Brocato
4 Mar 2016, 6:16 AM
Yep, that was it.



/**
* The toolkit to use. Select either "classic" or "modern".
*/


should be replaced with



/**
* The toolkit to use. Select either "classic" or "modern".
*/
"toolkit": "classic",


You'll need to restart the IDE once you make that change.

jcvetkovic
4 Mar 2016, 6:37 AM
This is a thing we were missing.

Thanks a lot Mark. =D>

Mark.Brocato
4 Mar 2016, 6:39 AM
Awesome, glad it's working! If you use the plugin to create your apps in the future, it offers a toolkit selection dropdown where you can pick universal, classic, or modern and automatically sets that field in app.json.

jcvetkovic
9 Mar 2016, 6:36 AM
Hi Mark,
One more issue remains after adding toolkit to app.json file.
Any class that overrides some other class is grayed out, if added to requires array.

In app folder I have patch folder where I put all my overrides, should I use overrides folder instead or should this work either way?

If is of any help if I write overrides (with s) instead of override, plugin finds that class, but this way override is not working.

Mark.Brocato
9 Mar 2016, 6:48 AM
Can you paste an example of one of your overrides?

jcvetkovic
10 Mar 2016, 12:34 AM
Here is one simple example...



/**
* WebUI Form Panel Override *
* @author me
*/
Ext.define('GS4TR.patch.Form', {
override: 'Ext.form.Panel',

isValid: function(){
return this.m_validateAllFields(this);
}
});

Mark.Brocato
10 Mar 2016, 5:58 AM
You should not need to require overrides at all. They are automatically loaded by the framework when the overridden class is loaded. That said, I could probably make the plugin not complain about overrides in the requires array, but they are really unnecessary.