lean4-htt/src/Lean/Data/Lsp/Workspace.lean
2025-10-16 20:27:46 +00:00

76 lines
1.6 KiB
Text

/-
Copyright (c) 2020 Wojciech Nawrocki. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Wojciech Nawrocki
-/
module
prelude
public import Lean.Data.Lsp.Basic
public section
namespace Lean
namespace Lsp
open Json
structure WorkspaceFolder where
uri : DocumentUri
name : String
deriving ToJson, FromJson
-- TODO(WN):
-- WorkspaceFoldersServerCapabilities,
-- DidChangeWorkspaceFoldersParams,
-- WorkspaceFoldersChangeEvent
structure FileSystemWatcher where
globPattern : String
kind? : Option Nat := none
deriving FromJson, ToJson
namespace FileSystemWatcher
-- Bit flags for `FileSystemWatcher.kind`
def create := 1
def change := 2
def delete := 4
end FileSystemWatcher
structure DidChangeWatchedFilesRegistrationOptions where
watchers : Array FileSystemWatcher
deriving FromJson, ToJson
inductive FileChangeType
| Created
| Changed
| Deleted
instance : FromJson FileChangeType where
fromJson? j := do
match (← fromJson? j : Nat) with
| 1 => return FileChangeType.Created
| 2 => return FileChangeType.Changed
| 3 => return FileChangeType.Deleted
| _ => throw s!"expected 1, 2, or 3, got {j}"
instance : ToJson FileChangeType where
toJson
| FileChangeType.Created => toJson 1
| FileChangeType.Changed => toJson 2
| FileChangeType.Deleted => toJson 3
structure FileEvent where
uri : DocumentUri
type : FileChangeType
deriving FromJson, ToJson
structure DidChangeWatchedFilesParams where
changes : Array FileEvent
deriving FromJson, ToJson
end Lsp
end Lean