Feature Request
Closed this issue · 1 comments
anonymousALLDAY commented
Now that Hsnips allows you to use JavaScript in `global` area, you can use VSCode API and get that.
add these into your .hsnips
file:
global
const vscode = require("vscode");
var editor=vscode.window.activeTextEditor
var document=editor.document
endglobal
then:
- for
TM_SELECTED_TEXT
:
add the code betweenglobal
andendglobal
:
let selectedText = "";
vscode.window.onDidChangeTextEditorSelection((e) => {
const newSelectedText = e.textEditor.document.getText(e.selections[0]);
if (newSelectedText) {
selectedText = newSelectedText;
}
});
and use that in your snippet like:
rv=selectedText; selectedText=""
e.g.:
snippet `([aA]lign|aln)` "align" iwA
\begin{aligned}
${0:``rv=selectedText;selectedText=""``}
\end{aligned}
endsnippet
- for
TM_CURRENT_LINE
:
usedocument.lineAt(editor.selection.active).text;
or
let pos = editor.selection.active;
let range = new vscode.Range(pos.line,0,pos.line,pos.character-2) //delete snippet "bk"
let text=document.getText(range);
vscode.window.activeTextEditor.edit(editBuilder => {
editBuilder.delete(document.lineAt(pos).range);
});
rv=text;
e.g.
snippet bk "test" iA
\left(``
let pos = editor.selection.active;
let range = new vscode.Range(pos.line,0,pos.line,pos.character-2) //delete snippet "bk"
let text=document.getText(range);
vscode.window.activeTextEditor.edit(editBuilder => {
editBuilder.delete(document.lineAt(pos).range);
});
rv=text;
``\right)
endsnippet
this code seems ugly but at least it works 😂. Thanks to @OrangeX4 .
Originally posted by @yfzhao20 in #81 (comment)
anonymousALLDAY commented
I mistook