So, I looked a bit at the grammar definition, and I really found nothing. The selector line 248 appears to be fine :
begin = '(?x) (?<=() # preceded by ( (define)\s+ # define (() # list of parameters ([[:alnum:]][[:alnum:]!$%&*+-./:<=>?@^_~]*) ((\s+ ([[:alnum:]][[:alnum:]!$%&*+-./:<=>?@^_~]*|[._]) )* )\s* ()) '; end = '(?=))'; captures = { 1 = { name = 'keyword.control.scheme'; }; 2 = { name = 'punctuation.definition.function.scheme'; }; 3 = { name = 'entity.name.function.scheme'; }; 4 = { name = 'variable.parameter.function.scheme'; }; 7 = { name = 'punctuation.definition.function.scheme'; }; };
It is strange, because further testing gives me that with the following code :
(define (abcd-e) 2)
when I type a and press [ESC], abcd is suggested.
I read some posts from the site (http://blog.macromates.com/2012/clever-completion/ http://blog.macromates.com/2012/clever-completion/ and the corresponding manual sections), thus deducting that the variable scope affected the autocompletion and tested it by modifying the Scheme bundle to enable € in a variable name (I'm French ya know). To do that, I just modified the following code : (lines 303-315 of the grammar)
{ name = 'meta.declaration.variable.scheme'; begin = '(?<=()(define)\s([[:alnum:]][[:alnum:]€!$%&*+-./:<=>?@^_~]*)\s*.*?'; end = '(?=))'; captures = { 1 = { name = 'keyword.control.scheme'; }; 2 = { name = 'variable.other.scheme'; }; }; patterns = ( { include = '#comment'; }, { include = '#sexp'; }, { include = '#illegal'; }, ); },
And it worked !
If I type : (define ab-cd€ 23) ab And press [esc], then the whole name appears. Nevertheless, if I try with ab-, then the completion doesn't trigger. So far I experienced, I works only after alphanumeric characters.
Thus, there are two strange behaviours :
1. The entity scopes don't seem to affect autocompletion. Then, what is the recommended manner to solve my main issue ? Can I capture the function name in both selectors (entity and variable) ? 2. Why can't the autocompletion be triggered after a non alphanumeric character ?
Kind regards,
Louis
Le 10 juil. 2016 à 11:49, Louis Abraham louis.abraham@polytechnique.edu a écrit :
Hi,
I really love the simple yet effective autocompletion using [ESC]. However, I just began to dig into Scheme, and it seems the autocompletion doesn't work with functions whose name has dashes.
For example, with the following code :
(define (a-b x) (* x x))
(define c-d 2)
If I try and type a and press [ESC], nothing happens. However, when I try with c, then the completion works. It might be a problem of the grammar.
How can I fix it ? I don't know how the grammar influences the autocompletion.
Best regards,
Louis
textmate mailing list textmate@lists.macromates.com http://lists.macromates.com/listinfo/textmate