aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lsp.c35
1 files changed, 19 insertions, 16 deletions
diff --git a/src/lsp.c b/src/lsp.c
index 0b33885..bc594df 100644
--- a/src/lsp.c
+++ b/src/lsp.c
@@ -64,14 +64,17 @@ typedef struct {
} teco_lsp_result_t;
static struct {
- /** Pid of the language server */
+ /**
+ * Pid of the language server.
+ * This can be a pointer on Windows,
+ * so use 0 as an invalid Pid.
+ */
GPid pid;
GIOChannel *stdin_chan, *stdout_chan;
teco_stailq_head_t list;
teco_lsp_result_t *current;
} teco_lsp = {
- .pid = -1,
.list = TECO_STAILQ_HEAD_INITIALIZER(&teco_lsp.list)
};
@@ -227,7 +230,7 @@ teco_lsp_cleanup(void)
g_io_channel_unref(teco_lsp.stdout_chan);
teco_lsp.stdout_chan = NULL;
- if (teco_lsp.pid >= 0) {
+ if (teco_lsp.pid) {
/*
* Sometimes, clangd will refuse to exit gracefully
* even after the shutdown procedure, so we kill it
@@ -240,7 +243,7 @@ teco_lsp_cleanup(void)
TerminateProcess(teco_lsp.pid, 1);
#endif
g_spawn_close_pid(teco_lsp.pid);
- teco_lsp.pid = -1;
+ teco_lsp.pid = 0;
}
teco_lsp_list_clear(&teco_lsp.list);
@@ -568,7 +571,7 @@ teco_lsp_launch(GError **error)
gboolean
teco_lsp_didopen(teco_buffer_t *buffer, GError **error)
{
- if (teco_lsp.pid < 0)
+ if (!teco_lsp.pid)
/* do nothing until the user queries something */
return TRUE;
@@ -614,7 +617,7 @@ gboolean
teco_lsp_didchange_insert(teco_buffer_t *buffer, gsize pos, gsize len,
const gchar *text, GError **error)
{
- if (teco_lsp.pid < 0)
+ if (!teco_lsp.pid)
/* do nothing until the user queries something */
return TRUE;
@@ -682,7 +685,7 @@ teco_lsp_didchange_insert(teco_buffer_t *buffer, gsize pos, gsize len,
gboolean
teco_lsp_didchange_delete(teco_buffer_t *buffer, gsize pos, gsize len, GError **error)
{
- if (teco_lsp.pid < 0)
+ if (!teco_lsp.pid)
/* do nothing until the user queries something */
return TRUE;
@@ -739,7 +742,7 @@ teco_lsp_sync(teco_buffer_t *buffer, GError **error)
{
g_assert(buffer->filename != NULL);
- if (teco_lsp.pid < 0)
+ if (!teco_lsp.pid)
/* do nothing until the user queries something */
return TRUE;
@@ -772,7 +775,7 @@ teco_lsp_sync(teco_buffer_t *buffer, GError **error)
gboolean
teco_lsp_didclose(teco_buffer_t *buffer, GError **error)
{
- if (teco_lsp.pid < 0)
+ if (!teco_lsp.pid)
/* do nothing until the user queries something */
return TRUE;
@@ -883,7 +886,7 @@ teco_lsp_parse_location(sj_Reader reader, sj_Value obj, GError **error)
static gboolean
teco_lsp_lookup_symbol(teco_string_t str, gboolean match_exact, GError **error)
{
- g_assert(teco_lsp.pid >= 0);
+ g_assert(teco_lsp.pid);
teco_undo_restore_lsp_list();
teco_lsp.list = TECO_STAILQ_HEAD_INITIALIZER(&teco_lsp.list);
@@ -975,7 +978,7 @@ teco_lsp_symbol_auto_complete(const gchar *symbol, teco_string_t *insert)
memset(insert, 0, sizeof(*insert));
/* server is started on demand */
- if (G_UNLIKELY(teco_lsp.pid < 0) && !teco_lsp_launch(NULL))
+ if (G_UNLIKELY(!teco_lsp.pid) && !teco_lsp_launch(NULL))
return FALSE;
if (!symbol)
@@ -1066,7 +1069,7 @@ static gboolean
teco_lsp_lookup_definition(teco_buffer_t *buffer, teco_int_t pos, GError **error)
{
g_assert(buffer->filename != NULL);
- g_assert(teco_lsp.pid >= 0);
+ g_assert(teco_lsp.pid);
teco_undo_restore_lsp_list();
teco_lsp.list = TECO_STAILQ_HEAD_INITIALIZER(&teco_lsp.list);
@@ -1137,7 +1140,7 @@ static gboolean
teco_lsp_lookup_references(teco_buffer_t *buffer, teco_int_t pos, GError **error)
{
g_assert(buffer->filename != NULL);
- g_assert(teco_lsp.pid >= 0);
+ g_assert(teco_lsp.pid);
teco_undo_restore_lsp_list();
teco_lsp.list = TECO_STAILQ_HEAD_INITIALIZER(&teco_lsp.list);
@@ -1205,7 +1208,7 @@ teco_lsp_lookup_references(teco_buffer_t *buffer, teco_int_t pos, GError **error
static gboolean
teco_lsp_shutdown(GError **error)
{
- if (teco_lsp.pid < 0)
+ if (!teco_lsp.pid)
return TRUE;
static const gchar req[] = "{"
@@ -1250,7 +1253,7 @@ teco_state_lsp_lookup_done(teco_machine_main_t *ctx, teco_string_t str, GError *
}
/* server is started on demand */
- if (G_UNLIKELY(teco_lsp.pid < 0) && !teco_lsp_launch(error))
+ if (G_UNLIKELY(!teco_lsp.pid) && !teco_lsp_launch(error))
return NULL;
if (str.len && !teco_lsp_lookup_symbol(str, !have_colon, error))
@@ -1281,7 +1284,7 @@ teco_state_lsp_lookup_done(teco_machine_main_t *ctx, teco_string_t str, GError *
}
/* server is started on demand */
- if (G_UNLIKELY(teco_lsp.pid < 0) && !teco_lsp_launch(error))
+ if (G_UNLIKELY(!teco_lsp.pid) && !teco_lsp_launch(error))
return NULL;
gboolean rc = have_colon ? teco_lsp_lookup_references(teco_ring_current, v, error)