add tree view go to definition

master
Brad Cornes 2018-12-29 00:02:22 +00:00
parent b1ee4759c5
commit 805ddd2879
2 changed files with 49 additions and 31 deletions

View File

@ -14,7 +14,8 @@ import {
commands,
Selection,
Position,
Range
Range,
TextEditorRevealType
} from 'vscode'
import {
@ -76,34 +77,13 @@ export async function activate(context: ExtensionContext) {
'lsp-multi-server-example'
)
let files = await Workspace.findFiles(CONFIG_GLOB, '**/node_modules/**', 1)
if (!files.length) return
let configPath = files[0].fsPath
delete require.cache[configPath]
let refresh = createTreeView(configPath)
commands.registerCommand('tailwindcss.goToDefinition', () => {
// refresh()
// Window.showInformationMessage('Hello World!')
Workspace.openTextDocument(files[0]).then((doc: TextDocument) => {
Window.showTextDocument(doc).then((editor: TextEditor) => {
let start = new Position(0, 0)
let end = new Position(0, 0)
editor.revealRange(new Range(start, end))
editor.selection = new Selection(start, end)
})
})
})
function didOpenTextDocument(document: TextDocument): void {
if (
document.uri.scheme !== 'file' ||
LANGUAGES.indexOf(document.languageId) === -1
) {
return
}
async function didOpenTextDocument(document: TextDocument): Promise<void> {
// if (
// document.uri.scheme !== 'file' ||
// LANGUAGES.indexOf(document.languageId) === -1
// ) {
// return
// }
let uri = document.uri
let folder = Workspace.getWorkspaceFolder(uri)
@ -112,10 +92,18 @@ export async function activate(context: ExtensionContext) {
if (!folder) {
return
}
// If we have nested workspace folders we only start a server on the outer most workspace folder.
folder = getOuterMostWorkspaceFolder(folder)
if (!clients.has(folder.uri.toString())) {
let files = await Workspace.findFiles(
CONFIG_GLOB,
'**/node_modules/**',
1
)
if (!files.length) return
let debugOptions = {
execArgv: ['--nolazy', `--inspect=${6011 + clients.size}`]
}
@ -139,6 +127,32 @@ export async function activate(context: ExtensionContext) {
serverOptions,
clientOptions
)
client.onReady().then(() => {
client.onNotification('tailwindcss/foundConfig', configPath => {
let refresh = createTreeView(configPath)
})
client.onNotification(
'tailwindcss/foundDefinition',
(configPath, pos) => {
Workspace.openTextDocument(configPath).then((doc: TextDocument) => {
Window.showTextDocument(doc).then((editor: TextEditor) => {
let start = new Position(pos[0], pos[1])
let end = new Position(pos[2], pos[3])
editor.revealRange(
new Range(start, end),
TextEditorRevealType.InCenter
)
editor.selection = new Selection(start, end)
})
})
}
)
commands.registerCommand('tailwindcss.goToDefinition', key => {
client.sendNotification('tailwindcss/findDefinition', [key])
})
})
// client.onReady().then(() => {
// client.onNotification('tailwind/loaded', () => {
// console.log('loaded')

View File

@ -104,7 +104,9 @@ class TailwindDataProvider implements TreeDataProvider<ConfigItem> {
: TreeItemCollapsibleState.None,
isObj ? undefined : configValueToString(item[key]),
undefined,
isObj ? undefined : command
isObj
? undefined
: { ...command, arguments: [element.key.concat(key)] }
)
let color = getSvgColorFromValue(item[key])
@ -146,7 +148,9 @@ class TailwindDataProvider implements TreeDataProvider<ConfigItem> {
ICONS[key]
)
: undefined,
isObject(this.config[key]) ? undefined : command
isObject(this.config[key])
? undefined
: { ...command, arguments: [[key]] }
)
)
}