selection: break out isword() to a new file

This commit is contained in:
Daniel Eklöf 2019-12-03 19:16:05 +01:00
parent f1c876884a
commit 198529525c
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
4 changed files with 32 additions and 21 deletions

View file

@ -75,6 +75,7 @@ executable(
'input.c', 'input.h',
'log.c', 'log.h',
'main.c',
'misc.c', 'misc.h',
'osc.c', 'osc.h',
'render.c', 'render.h',
'search.c', 'search.h',

24
misc.c Normal file
View file

@ -0,0 +1,24 @@
#include "misc.h"
#include <wctype.h>
bool
isword(wchar_t wc, bool spaces_only)
{
if (spaces_only)
return iswgraph(wc);
switch (wc) {
default: return iswgraph(wc);
case L'(': case L')':
case L'[': case L']':
case L'{': case L'}':
case L'<': case L'>':
case L'': case L'|':
case L',':
case L'`': case L'"': case L'\'':
case L':':
return false;
}
}

6
misc.h Normal file
View file

@ -0,0 +1,6 @@
#pragma once
#include <stdbool.h>
#include <wchar.h>
bool isword(wchar_t wc, bool spaces_only);

View file

@ -15,6 +15,7 @@
#include "async.h"
#include "grid.h"
#include "misc.h"
#include "render.h"
#include "vt.h"
@ -222,27 +223,6 @@ selection_cancel(struct terminal *term)
}
}
static bool
isword(wint_t c, bool spaces_only)
{
if (spaces_only)
return !iswspace(c);
switch (c) {
default: return !iswspace(c);
case L'{': case L'}':
case L'[': case L']':
case L'(': case L')':
case L'`':
case L'\'':
case L'"':
case L',': case L'.':
case L':': case L';':
return false;
}
}
void
selection_mark_word(struct terminal *term, int col, int row, bool spaces_only,
uint32_t serial)