• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
    • Questions
    • Teachers
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

223
Views
¿Cómo obtener un rango de palabras personalizadas en mi extensión de código VS?

Quiero obtener el rango de una palabra personalizada en mi extensión de VS Code, si paso el mouse sobre ella y si la línea de texto coincide con un patrón. Esto es lo que he escrito hasta ahora:

 vscode.languages.registerHoverProvider('.mylanguage', { provideHover(document, position, token) { // define `hoverRange` somewhere here const hoverLineText = document.lineAt(position.line).text; const pattern = new RegExp("\\w+\\s{0,}\\(.{0,}\\s{0,}\\)"); if(pattern.test(hoverLineText)){ hoverRange = document.getWordRangeAtPosition(position, pattern); } console.log(hoverRange); //etc. ...

Espero que, si escribe en el editor algo como myFunction ( ) , y pasa el mouse sobre cualquier posición de esa cadena (por ejemplo, incluso en el espacio en blanco), la consola generará hoverRange , que tendrá en cuenta la posición del cierre paréntesis ) , también.

Sin embargo, si paso el mouse sobre el espacio en blanco, no se envía nada a la consola. En su lugar, necesito desplazarme sobre myFunction para poder obtener el rango completo de la cadena.

¿Cómo puedo hacer que mi extensión de VS Code trate myFunction ( ) como una sola palabra?

almost 3 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Esto funciona para mí:

 let disposable3 = vscode.languages.registerHoverProvider('plaintext', { provideHover(document, position) { let hoverRange; const hoverLineText = document.lineAt(position.line).text; const pattern = new RegExp("\\w+\\s*\\(.*\\s*\\)"); if (pattern.test(hoverLineText)){ hoverRange = document.getWordRangeAtPosition(position, pattern); if (hoverRange) return new vscode.Hover(document.getText(hoverRange), new vscode.Range(position, position)); else return null; } else return null; } }); context.subscriptions.push(disposable3);

Como puede ver, el desplazamiento funciona sobre espacios. Pero la expresión regular es demasiado indulgente para que recoja cosas como

if (asdasdasd)
while(adasd)

ya que también parecen llamadas a una función.

flotar con rango

almost 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error