diff --git a/src/providers/signatureHelp.ts b/src/providers/signatureHelp.ts index 420d578c..469a5589 100644 --- a/src/providers/signatureHelp.ts +++ b/src/providers/signatureHelp.ts @@ -19,6 +19,7 @@ import { hasInFacts } from '../utils/facts'; // RegExp's const reNestedParenthesis = /\(([\w-]+)\(/; +const reSymbolName = /[\w-]+$/; interface IMixinEntry { name: string; @@ -52,7 +53,8 @@ function getSymbolName(text: string): string { token = tokens[pos]; if (token[0] === 'word' && !hasInFacts(token[1])) { - return token[1] || null; + const match = reSymbolName.exec(token[1]); + return match ? match[0] : null; } } } else if (token[0] === ')') { diff --git a/src/test/providers/signatureHelp.spec.ts b/src/test/providers/signatureHelp.spec.ts index de643d2a..933e9cc7 100644 --- a/src/test/providers/signatureHelp.spec.ts +++ b/src/test/providers/signatureHelp.spec.ts @@ -182,6 +182,14 @@ describe('Providers/SignatureHelp - parseArgumentsAtLine for Functions', () => { assert.ok(signatures[0].label.startsWith('make'), 'name'); }); + it('Single-line Function reference', () => { + const doc = makeDocument('content: make()+make('); + const signatures = doSignatureHelp(doc, 21, cache, settings).signatures; + + assert.equal(signatures.length, 1, 'length'); + assert.ok(signatures[0].label.startsWith('make'), 'name'); + }); + it('Inside another uncompleted function', () => { const doc = makeDocument('content: attr(make('); const signatures = doSignatureHelp(doc, 19, cache, settings).signatures;