2

J'essaie de créer un extrait de fonction de flèche JavaScript dans SublimeText. Il devrait être disponible quand je tape un paren ouvert: (. Je veux être en mesure de l'onglet pour créer cette:Comment puis-je supprimer (ou supprimer) les parenthèses correspondant automatiquement lors du déclenchement d'un extrait personnalisé SublimeText?

() => {} 

Avec match automatique activée (une fonction qui me plaît, normalement), je ne peux pas comprendre comment éviter cela:

() => {}) 

ici est le code que j'ai jusqu'à présent, ce qui fonctionne très bien, sauf pour la question de correspondance automatique:

<snippet> 
    <content><![CDATA[ 
(${1}) => {$2} 
]]></content> 
    <tabTrigger>(</tabTrigger> 
    <scope>source.js</scope> 
</snippet> 

Répondre

2

Snippets ne peut insérer du texte ou de remplacer le texte sélectionné - ils ne peuvent pas modifier le texte ailleurs dans le document, même à côté de le curseur de texte. Je pense que la meilleure façon de réaliser ce que vous voulez est d'utiliser un keybinding, qui aura la priorité sur le comportement auto_match_enabled par défaut (qui est également un raccourci clavier) lorsque ( est pressé, et obtenir la liaison de touches pour insérer l'extrait, en évitant la nécessité d'un fichier .sublime-snippet séparé

{ 
    "keys": ["(", "tab"], "command": "insert_snippet", "args": { "contents": "(${1}) => {$2}" }, "context": 
    [ 
     { "key": "selector", "operator": "equal", "operand": "source.js" } 
    ] 
}, 

de noter que, si vous voulez que l'extrait de montrer encore dans la palette de commandes Snippet: options, vous pouvez garder votre fichier .sublime-snippet sans aucun effet négatif -. le raccourci clavier primera sur le déclencheur de l'onglet défini dans l'extrait

+0

Cela fonctionne, merci, suis-je correct dans en supposant qu'un extrait ne peut pas supprimer le contenu existant? Insérer seulement? Aussi, savez-vous si cette API est documentée? Je ne suis pas ce qui se passe ici dans le contexte (mais j'aimerais aussi pouvoir construire le mien dans le futur). – user6689821

+1

Je crois que le plus proche que vous pouvez obtenir un extrait de contenu existant est de l'utiliser dans un cas comme celui-ci (extension à la suite d'une touche) puis de sélectionner du texte avant d'appuyer sur la touche avec l'extrait. Notez que dans ce cas, la variable spéciale $ SELECTION est disponible pour votre extrait. Vous pouvez également utiliser une macro (toujours en réponse à une touche) qui exécutera d'abord des commandes pour supprimer du texte, puis développer l'extrait. – OdatNurd

+1

En outre, la documentation sur l'utilisation des contextes dans les raccourcis clavier est également disponible. Il y a un ensemble de contextes avec Sublime, mais en utilisant le code du plugin, vous pouvez construire le vôtre si nécessaire. http://docs.sublimetext.info/fr/latest/reference/key_bindings.html – OdatNurd