aboutsummaryrefslogtreecommitdiff
path: root/src/main.odin
diff options
context:
space:
mode:
authorDanielGavin <danielgavin5@hotmail.com>2021-03-12 16:31:09 +0100
committerDanielGavin <danielgavin5@hotmail.com>2021-03-12 16:31:09 +0100
commit00ccd7e03e17dac40efb9b34a048d968dd77c218 (patch)
tree24e9e8d9743bc3e98b63183d1f976b11ab6d93d2 /src/main.odin
parentbaf86e02a2c45170d58ab828a13f52361129b255 (diff)
ran odinfmt on project
Diffstat (limited to 'src/main.odin')
-rw-r--r--src/main.odin121
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