aboutsummaryrefslogtreecommitdiff
path: root/src/main.odin
diff options
context:
space:
mode:
authorDanielGavin <danielgavin5@hotmail.com>2021-01-28 22:50:41 +0100
committerDanielGavin <danielgavin5@hotmail.com>2021-01-28 22:50:41 +0100
commit03be1921847190c63d4e42637526e3d00160f6e5 (patch)
treef3c047c39ef2742e0154119d7d742ed49064b284 /src/main.odin
parente4bf674635029e249dab36f993bfd08b39792970 (diff)
add verbose setting
Diffstat (limited to 'src/main.odin')
-rw-r--r--src/main.odin30
1 files changed, 16 insertions, 14 deletions
diff --git a/src/main.odin b/src/main.odin
index d96c6e2..552b70a 100644
--- a/src/main.odin
+++ b/src/main.odin
@@ -9,6 +9,7 @@ import "core:slice"
import "core:strconv"
import "core:thread"
import "core:encoding/json"
+import "core:reflect"
import "intrinsics"
@@ -18,6 +19,7 @@ import "shared:common"
os_read :: proc(handle: rawptr, data: [] byte) -> (int, int)
{
+ //ERROR can't go to os.Handle
a, b := os.read(cast(os.Handle)handle, data);
return a, cast(int)b;
}
@@ -30,14 +32,13 @@ os_write :: proc(handle: rawptr, data: [] byte) -> (int, int)
//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 = false;
- //tracking_allocator := common.memleak_allocator(true);
- //context.allocator = tracking_allocator;
-
- //temporary collections being set manually, need to get client configuration set up.
config.collections = make(map [string] string);
log.info("Starting Odin Language Server");
@@ -47,6 +48,14 @@ run :: proc(reader: ^server.Reader, writer: ^server.Writer) {
for config.running {
+ if config.verbose {
+ context.logger = verbose_logger;
+ }
+
+ else {
+ context.logger = log.Logger{nil, nil, log.Level.Debug, nil};
+ }
+
header, success := server.read_and_parse_header(reader);
if(!success) {
@@ -86,10 +95,6 @@ run :: proc(reader: ^server.Reader, writer: ^server.Writer) {
common.pool_wait_and_process(&server.pool);
common.pool_destroy(&server.pool);
-
- //common.memleak_dump(tracking_allocator, common.log_dump, nil);
-
-
}
end :: proc() {
@@ -102,14 +107,11 @@ main :: proc() {
reader := server.make_reader(os_read, cast(rawptr)os.stdin);
writer := server.make_writer(os_write, cast(rawptr)os.stdout);
- init_global_temporary_allocator(mem.megabytes(200));
-
- context.logger = log.Logger{nil, nil, log.Level.Debug, nil}; //have to set the procedure to nil to avoid calling tprintf...
+ verbose_logger := server.create_lsp_logger(&writer, log.Level.Error);
- //fd, err := os.open("C:/Users/danie/OneDrive/Desktop/Computer_Science/ols/log.txt", os.O_RDWR|os.O_CREATE|os.O_TRUNC );
- //context.logger = log.create_file_logger(fd);
+ context.logger = verbose_logger;
- //context.logger = server.create_lsp_logger(&writer);
+ init_global_temporary_allocator(mem.megabytes(100));
run(&reader, &writer);
}