diff options
| author | DanielGavin <danielgavin5@hotmail.com> | 2021-03-12 16:31:09 +0100 |
|---|---|---|
| committer | DanielGavin <danielgavin5@hotmail.com> | 2021-03-12 16:31:09 +0100 |
| commit | 00ccd7e03e17dac40efb9b34a048d968dd77c218 (patch) | |
| tree | 24e9e8d9743bc3e98b63183d1f976b11ab6d93d2 /src/main.odin | |
| parent | baf86e02a2c45170d58ab828a13f52361129b255 (diff) | |
ran odinfmt on project
Diffstat (limited to 'src/main.odin')
| -rw-r--r-- | src/main.odin | 121 |
1 files changed, 57 insertions, 64 deletions
diff --git a/src/main.odin b/src/main.odin index e480e35..c8587f2 100644 --- a/src/main.odin +++ b/src/main.odin @@ -17,103 +17,96 @@ import "shared:index" import "shared:server" import "shared:common" -os_read :: proc(handle: rawptr, data: [] byte) -> (int, int) +os_read :: proc (handle: rawptr, data: []byte) -> (int, int) { - ptr := cast(^os.Handle)handle; - a, b := os.read(ptr^, data); - return a, cast(int)b; + ptr := cast(^os.Handle)handle; + a, b := os.read(ptr^, data); + return a, cast(int)b; } -os_write :: proc(handle: rawptr, data: [] byte) -> (int, int) +os_write :: proc (handle: rawptr, data: []byte) -> (int, int) { - ptr := cast(^os.Handle)handle; - a, b := os.write(ptr^, data); - return a, cast(int)b; + ptr := cast(^os.Handle)handle; + a, b := os.write(ptr^, data); + return a, cast(int)b; } //Note(Daniel, Should look into handling errors without crashing from parsing) - verbose_logger: log.Logger; -run :: proc(reader: ^server.Reader, writer: ^server.Writer) { - - config: common.Config; - config.debug_single_thread = true; - config.collections = make(map [string] string); +run :: proc (reader: ^server.Reader, writer: ^server.Writer) { - log.info("Starting Odin Language Server"); + config: common.Config; + config.debug_single_thread = true; + config.collections = make(map[string]string); + log.info("Starting Odin Language Server"); - config.running = true; + config.running = true; - for config.running { + for config.running { - if config.verbose { - context.logger = verbose_logger; - } + if config.verbose { + context.logger = verbose_logger; + } else { + context.logger = log.Logger {nil, nil, log.Level.Debug, nil}; + } - else { - context.logger = log.Logger{nil, nil, log.Level.Debug, nil}; - } + header, success := server.read_and_parse_header(reader); - header, success := server.read_and_parse_header(reader); + if (!success) { + log.error("Failed to read and parse header"); + return; + } - if(!success) { - log.error("Failed to read and parse header"); - return; - } + value: json.Value; + value, success = server.read_and_parse_body(reader, header); - value: json.Value; - value, success = server.read_and_parse_body(reader, header); + if (!success) { + log.error("Failed to read and parse body"); + return; + } - if(!success) { - log.error("Failed to read and parse body"); - return; - } + success = server.handle_request(value, &config, writer); - success = server.handle_request(value, &config, writer); + if (!success) { + log.error("Unrecoverable handle request"); + return; + } - if(!success) { - log.error("Unrecoverable handle request"); - return; - } + free_all(context.temp_allocator); + } - free_all(context.temp_allocator); - } + for k, v in config.collections { + delete(k); + delete(v); + } - for k, v in config.collections { - delete(k); - delete(v); - } + delete(config.collections); + delete(config.workspace_folders); - delete(config.collections); - delete(config.workspace_folders); + server.document_storage_shutdown(); - server.document_storage_shutdown(); + index.free_static_index(); - index.free_static_index(); - - common.pool_wait_and_process(&server.pool); - common.pool_destroy(&server.pool); + common.pool_wait_and_process(&server.pool); + common.pool_destroy(&server.pool); } -end :: proc() { - +end :: proc () { } +main :: proc () { -main :: proc() { + reader := server.make_reader(os_read, cast(rawptr)&os.stdin); + writer := server.make_writer(os_write, cast(rawptr)&os.stdout); - reader := server.make_reader(os_read, cast(rawptr)&os.stdin); - writer := server.make_writer(os_write, cast(rawptr)&os.stdout); + verbose_logger := server.create_lsp_logger(&writer, log.Level.Error); - verbose_logger := server.create_lsp_logger(&writer, log.Level.Error); + context.logger = verbose_logger; - context.logger = verbose_logger; - - init_global_temporary_allocator(mem.megabytes(100)); - - run(&reader, &writer); -} + init_global_temporary_allocator(mem.megabytes(100)); + run(&reader, &writer); +}
\ No newline at end of file |