Skip to content

窗口和工作区

主题

你可能希望根据当前主题为你的扩展程序应用不同的样式。虽然许多 API (例如 TreeItem.iconPath) 内置支持双主题,但有些 API 不支持。你可能还希望在你的 webview 中同步主题。

useActiveColorThemeuseIsDrakTheme 组合式可以用来获取当前主题以及判断是否为深色主题。
ts
import { 
defineExtension
,
useActiveColorTheme
,
useIsDarkTheme
,
watchEffect
} from 'reactive-vscode'
import {
useDemoWebviewView
} from './webviewView'
export =
defineExtension
(() => {
const
theme
=
useActiveColorTheme
()
const
isDark
=
useIsDarkTheme
()
const
webviewView
=
useDemoWebviewView
()
watchEffect
(() => {
webviewView
.
postMessage
({
type
: 'updateTheme',
isDark
:
isDark
.
value
,
}) }) })

窗口状态

useWindowState 组合式可以用来获取当前窗口状态:
ts
import { 
defineExtension
,
useWindowState
,
watchEffect
} from 'reactive-vscode'
export =
defineExtension
(() => {
const {
active
:
isWindowActive
,
focused
:
isWindowFocused
} =
useWindowState
()
watchEffect
(() => {
console
.
log
('Window is active:',
isWindowActive
.
value
)
console
.
log
('Window is focused:',
isWindowFocused
.
value
)
}) })

工作区文件夹

useWorkspaceFolders 组合式可以用来获取工作区文件夹:
ts
import { 
defineExtension
,
useWorkspaceFolders
,
watchEffect
} from 'reactive-vscode'
export =
defineExtension
(() => {
const
workspaceFolders
=
useWorkspaceFolders
()
watchEffect
(() => {
console
.
log
('There are',
workspaceFolders
.
value
?.
length
, 'workspace folders')
}) })

监听文件系统变化

useFsWatcher 组合式可以用来监听文件系统变化:
ts
import { 
computed
,
defineExtension
,
useFsWatcher
,
watchEffect
} from 'reactive-vscode'
export =
defineExtension
(() => {
const
filesToWatch
=
computed
(() => ['**/*.md', '**/*.txt'])
const
watcher
=
useFsWatcher
(
filesToWatch
)
watcher
.
onDidChange
((
uri
) => {
console
.
log
('File changed:',
uri
)
}) })

注意,你可以传递一个模式数组来监听文件系统中的变化。每个模式都会创建一个 VSCode 监听器。

Released under the MIT License.