AngularJS-sublime-package icon indicating copy to clipboard operation
AngularJS-sublime-package copied to clipboard

ng-controller doesn't suggest my controller name

Open gkatsanos opened this issue 9 years ago • 15 comments

Hello.

I have autocomplete enabled, I index my project, but I only get as suggestions the controllers declared inside the angular core libraries, I don't get the one I just wrote:

screen shot 2014-09-14 at 23 17 38 2

websiteApp.controller('SpicyController', ['$scope', function($scope) {
    $scope.spice = 'very';

    $scope.chiliSpicy = function() {
        $scope.spice = 'chili';
    };

    $scope.jalapenoSpicy = function() {
        $scope.spice = 'jalapeño';
    };
}]);

gkatsanos avatar Sep 14 '14 21:09 gkatsanos

This is due to how the files are parsed. To reduce false positives on matching directives/controllers/etc the plugin looks for angular/app/etc so if you're naming your app something other than "app" you'll need to update the regex in the settings file.

https://github.com/angular-ui/AngularJS-sublime-package#indexing-options

In your case you'd need to change app to websiteApp or rename websiteApp to just app

subhaze avatar Sep 14 '14 21:09 subhaze

Thanks. I added "((^[ \t].{0}|^[ \t]{0}|angular.{0}|).{0}|app.{0})[ ]([ ]["'])([\w.$]*)(["'])" and changed the match_expression_group to 4, but I still get the same results... (reindexed) What's the regex to have fooApp ? Could it have to do with my folder structure?

gkatsanos avatar Sep 15 '14 07:09 gkatsanos

Didn't notice that in the screen shot. It's possible, I'll have to look into that.

subhaze avatar Sep 15 '14 12:09 subhaze

I'm actually not so sure I used the right regex, could you clarify?

gkatsanos avatar Sep 15 '14 12:09 gkatsanos

@gkatsanos, yeah, looks like you missed updating the app part. Sorry was about to run out the door when I responded so didn't have time look over this thoroughly.

This:

// {0} is the location of where the definition name will be inserted
// ex: directive
"match_expression": "((^[ \\\\t]*\\.{0}|^[ \\\\t]*{0}|angular\\.{0}|\\)\\.{0}|app\\.{0})[ ]*\\([ ]*[\"\\'])([\\w\\.\\$]*)([\"\\'])",

"match_expression_group": 3

should be this:

// {0} is the location of where the definition name will be inserted
// ex: directive
"match_expression": "((^[ \\\\t]*\\.{0}|^[ \\\\t]*{0}|angular\\.{0}|\\)\\.{0}|(app|websiteApp)\\.{0})[ ]*\\([ ]*[\"\\'])([\\w\\.\\$]*)([\"\\'])",

"match_expression_group": 4

And you'll need to restart ST before doing the reindexing.

subhaze avatar Sep 15 '14 13:09 subhaze

is there a way to use a wildcard of some type so that all *App names are picked-up?

gkatsanos avatar Sep 15 '14 13:09 gkatsanos

Sure, if you'd like. It's converted down into a regex. So anything you can do via Regex in Python is doable there.

subhaze avatar Sep 15 '14 13:09 subhaze

I can't really do Regexes :) Wouldn't it be helpful to make it by default catch all names that end on "app" ?

gkatsanos avatar Sep 15 '14 13:09 gkatsanos

@gkatsanos sounds reasonable.

I've been considering always going with the second method and exposing an array that you can tweak so it's easier to change the behavior. This should be a pretty safe update so I'll try to hammer something out this week and push an update out.

subhaze avatar Sep 15 '14 21:09 subhaze

Listen if you don't have time I can try to make a pull request myself, I have some time following weekend.

gkatsanos avatar Sep 15 '14 21:09 gkatsanos

That'd be very welcomed. I'll still try and find some time this week, but if you can get to it'd be appreciated.

subhaze avatar Sep 15 '14 21:09 subhaze

Hi guys, any update on this?

charlesmudy avatar Feb 16 '15 08:02 charlesmudy

I've been slammed with work, per usual, but the adjustments to the config shown above should allow you to make any tweaks needed until updated to be more user friendly. I can't say when, but I'm really wanting to get a day or two set aside to fix reported issues, and produce a new release...

subhaze avatar Feb 17 '15 02:02 subhaze

I can't get this to work.

Here's my app definition angular.module('BookStoreApp', ['ionic', 'BookStoreApp.controllers', 'BookStoreApp.factory'])

and here's my user settings

{

// {0} is the location of where the definition name will be inserted // ex: directive "match_expression": "((^[ \t].{0}|^[ \t]{0}|angular.{0}|).{0}|BookStoreApp.{0})[ ]([ ]["'])([\w.$]*)(["'])",

// what group to expect the name in
// ex: module('myApp')
// myApp is currently in group 3 of the current 'match_expression'
"match_expression_group": 4,


"match_definitions": ["controller", "directive", "module", "factory", "filter"],

//indexing your project should get you more updated completions
"enable_AngularUI_directives": true

}

When I type

The status message says no available completion.

tej-rana avatar Oct 26 '15 23:10 tej-rana

I can't get this to work.

Here's my app definition angular.module('BookStoreApp', ['ionic', 'BookStoreApp.controllers', 'BookStoreApp.factory'])

and here's my user settings

{

// {0} is the location of where the definition name will be inserted // ex: directive "match_expression": "((^[ \t].{0}|^[ \t]{0}|angular.{0}|).{0}|BookStoreApp.{0})[ ]([ ]["'])([\w.$]*)(["'])",

// what group to expect the name in
// ex: module('myApp')
// myApp is currently in group 3 of the current 'match_expression'
"match_expression_group": 4,


"match_definitions": ["controller", "directive", "module", "factory", "filter"],

//indexing your project should get you more updated completions
"enable_AngularUI_directives": true

}

When I type

The status message says no available completion.

tej-rana avatar Oct 26 '15 23:10 tej-rana