AngularJS-sublime-package
AngularJS-sublime-package copied to clipboard
ng-controller doesn't suggest my controller name
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:
websiteApp.controller('SpicyController', ['$scope', function($scope) {
$scope.spice = 'very';
$scope.chiliSpicy = function() {
$scope.spice = 'chili';
};
$scope.jalapenoSpicy = function() {
$scope.spice = 'jalapeño';
};
}]);
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
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?
Didn't notice that in the screen shot. It's possible, I'll have to look into that.
I'm actually not so sure I used the right regex, could you clarify?
@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.
is there a way to use a wildcard of some type so that all *App names are picked-up?
Sure, if you'd like. It's converted down into a regex. So anything you can do via Regex in Python is doable there.
I can't really do Regexes :) Wouldn't it be helpful to make it by default catch all names that end on "app" ?
@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.
Listen if you don't have time I can try to make a pull request myself, I have some time following weekend.
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.
Hi guys, any update on this?
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...
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
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