diff options
| author | Daniel Gavin <danielgavin@Daniels-MacBook-Air.local> | 2023-06-11 18:57:59 +0200 |
|---|---|---|
| committer | Daniel Gavin <danielgavin@Daniels-MacBook-Air.local> | 2023-06-11 18:57:59 +0200 |
| commit | faf6b449568b2bb54373f8d561058435c15982ee (patch) | |
| tree | 9c4da063f47be142a0987f83ad8ac03b96f00a92 /src/server | |
| parent | 4b43b21b502764f0eb7cbdbb5401ae3de15b81ea (diff) | |
add new workspace symbols file
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/requests.odin | 2 | ||||
| -rw-r--r-- | src/server/workspace_symbols.odin | 45 |
2 files changed, 47 insertions, 0 deletions
diff --git a/src/server/requests.odin b/src/server/requests.odin index 0d4b2c0..3314923 100644 --- a/src/server/requests.odin +++ b/src/server/requests.odin @@ -1440,6 +1440,8 @@ request_workspace_symbols :: proc( writer: ^Writer, ) -> common.Error { + get_workspace_symbols("") + return .None } diff --git a/src/server/workspace_symbols.odin b/src/server/workspace_symbols.odin new file mode 100644 index 0000000..8aabc0c --- /dev/null +++ b/src/server/workspace_symbols.odin @@ -0,0 +1,45 @@ +package server + + +import "core:path/filepath" +import "core:os" +import "core:log" + +import "shared:common" + +@(private) +walk_dir :: proc( + info: os.File_Info, + in_err: os.Errno, + user_data: rawptr, +) -> ( + err: os.Errno, + skip_dir: bool, +) { + pkgs := cast(^[dynamic]string)user_data + + if info.is_dir { + append(pkgs, info.name) + } + + return 0, false +} + +get_workspace_symbols :: proc( + query: string, +) -> ( + symbols: []WorkspaceSymbol, + ok: bool, +) { + workspace := common.config.workspace_folders[0] + uri := common.parse_uri(workspace.uri, context.temp_allocator) or_return + pkgs := make([dynamic]string, 0, context.temp_allocator) + + filepath.walk(uri.path, walk_dir, &pkgs) + + for pkg in pkgs { + //log.error(pkg) + } + + return {}, true +} |