summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJérémie Courrèges-Anglas <jca@wxcvbn.org>2017-09-17 22:42:47 +0200
committerJérémie Courrèges-Anglas <jca@wxcvbn.org>2017-09-17 22:42:47 +0200
commitc4d3035a80fe8d2c5b3b9791fce2d26fbb147624 (patch)
treefaee087cb04cd1be0cfa0d25b559938add683e24
parentec10077b9f943212a9c0c634d79ada4f88b0d0c1 (diff)
downloadratpoison-c4d3035a80fe8d2c5b3b9791fce2d26fbb147624.zip
Turn utf8 macros into functions with less ugly names
-rw-r--r--src/editor.c20
-rw-r--r--src/input.c4
-rw-r--r--src/sbuf.c4
-rw-r--r--src/utf8.c18
-rw-r--r--src/utf8.h7
5 files changed, 35 insertions, 18 deletions
diff --git a/src/editor.c b/src/editor.c
index 96cdc6e..b1beebc 100644
--- a/src/editor.c
+++ b/src/editor.c
@@ -164,11 +164,11 @@ editor_forward_char (rp_input_line *line)
if (line->position == line->length)
return EDIT_NO_OP;
- if (RP_IS_UTF8_START (line->buffer[line->position]))
+ if (isu8start (line->buffer[line->position]))
{
do
line->position++;
- while (RP_IS_UTF8_CONT (line->buffer[line->position]));
+ while (isu8cont (line->buffer[line->position]));
}
else
line->position++;
@@ -184,7 +184,7 @@ editor_backward_char (rp_input_line *line)
do
line->position--;
- while (line->position > 0 && RP_IS_UTF8_CONT (line->buffer[line->position]));
+ while (line->position > 0 && isu8cont (line->buffer[line->position]));
return EDIT_MOVE;
}
@@ -201,7 +201,7 @@ editor_forward_word (rp_input_line *line)
while (line->position < line->length
&& (isalnum ((unsigned char)line->buffer[line->position])
- || RP_IS_UTF8_CHAR (line->buffer[line->position])))
+ || isu8char (line->buffer[line->position])))
line->position++;
return EDIT_MOVE;
@@ -218,7 +218,7 @@ editor_backward_word (rp_input_line *line)
while (line->position > 0
&& (isalnum ((unsigned char)line->buffer[line->position])
- || RP_IS_UTF8_CHAR (line->buffer[line->position])))
+ || isu8char (line->buffer[line->position])))
line->position--;
return EDIT_MOVE;
@@ -256,11 +256,11 @@ editor_delete_char (rp_input_line *line)
if (line->position == line->length)
return EDIT_NO_OP;
- if (RP_IS_UTF8_START (line->buffer[line->position]))
+ if (isu8start (line->buffer[line->position]))
{
do
diff++;
- while (RP_IS_UTF8_CONT (line->buffer[line->position + diff]));
+ while (isu8cont (line->buffer[line->position + diff]));
}
else
diff++;
@@ -283,7 +283,7 @@ editor_backward_delete_char (rp_input_line *line)
return EDIT_NO_OP;
while (line->position - diff > 0
- && RP_IS_UTF8_CONT (line->buffer[line->position - diff]))
+ && isu8cont (line->buffer[line->position - diff]))
diff++;
memmove (&line->buffer[line->position - diff],
@@ -310,7 +310,7 @@ editor_kill_word (rp_input_line *line)
while (line->position + diff < line->length
&& (isalnum ((unsigned char)line->buffer[line->position + diff])
- || RP_IS_UTF8_CHAR (line->buffer[line->position + diff])))
+ || isu8char (line->buffer[line->position + diff])))
diff++;
/* Add the word to the X11 selection. */
@@ -339,7 +339,7 @@ editor_backward_kill_word (rp_input_line *line)
while (line->position - diff > 0
&& (isalnum ((unsigned char)line->buffer[line->position - diff])
- || RP_IS_UTF8_CHAR (line->buffer[line->position - diff])))
+ || isu8char (line->buffer[line->position - diff])))
diff++;
/* Add the word to the X11 selection. */
diff --git a/src/input.c b/src/input.c
index 8abb308..c71d58c 100644
--- a/src/input.c
+++ b/src/input.c
@@ -442,10 +442,10 @@ update_input_window (rp_screen *s, rp_input_line *line)
total_width = defaults.bar_x_padding * 2 + prompt_width + input_width + MAX_FONT_WIDTH (defaults.font);
height = (FONT_HEIGHT (s) + defaults.bar_y_padding * 2);
- if (RP_IS_UTF8_START (line->buffer[line->position]))
+ if (isu8start (line->buffer[line->position]))
do
char_len++;
- while (RP_IS_UTF8_CONT (line->buffer[line->position + char_len]));
+ while (isu8cont (line->buffer[line->position + char_len]));
else
char_len = 1;
diff --git a/src/sbuf.c b/src/sbuf.c
index ceac839..354fc3d 100644
--- a/src/sbuf.c
+++ b/src/sbuf.c
@@ -156,10 +156,10 @@ sbuf_utf8_nconcat (struct sbuf *b, const char *s, int width)
len = nchars = 0;
while (s[len] != '\0' && nchars < width)
{
- if (RP_IS_UTF8_START (s[len]))
+ if (isu8start (s[len]))
do
len++;
- while (RP_IS_UTF8_CONT (s[len]));
+ while (isu8cont (s[len]));
else
len++;
nchars++;
diff --git a/src/utf8.c b/src/utf8.c
index 33b62e7..4880a1a 100644
--- a/src/utf8.c
+++ b/src/utf8.c
@@ -33,3 +33,21 @@ utf8_check_locale(void)
#endif
return utf8_locale;
}
+
+int
+isu8char(char c)
+{
+ return utf8_locale && (c) & 0xC0;
+}
+
+int
+isu8start(char c)
+{
+ return utf8_locale && ((c) & 0xC0) == 0xC0;
+}
+
+int
+isu8cont(char c)
+{
+ return utf8_locale && ((c) & 0xC0) == 0x80;
+}
diff --git a/src/utf8.h b/src/utf8.h
index 20e33bd..19032f6 100644
--- a/src/utf8.h
+++ b/src/utf8.h
@@ -1,10 +1,9 @@
#ifndef UTF8_H
#define UTF8_H
-/* UTF-8 handling macros */
-#define RP_IS_UTF8_CHAR(c) (utf8_locale && (c) & 0xC0)
-#define RP_IS_UTF8_START(c) (utf8_locale && ((c) & 0xC0) == 0xC0)
-#define RP_IS_UTF8_CONT(c) (utf8_locale && ((c) & 0xC0) == 0x80)
+extern int isu8char(char c);
+extern int isu8start(char c);
+extern int isu8cont(char c);
extern int utf8_locale;