From e9663e348e5e5d36b36ec38a582df7df1fc9126b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Michael=20G=C3=B6hler?= Date: Fri, 26 Dec 2014 22:10:13 +0100 Subject: [PATCH] make alignment respect pandoc urls, #63 --- include/url.h | 1 + src/url.c | 22 ++++++++++++++++++++++ src/viewer.c | 3 +++ 3 files changed, 26 insertions(+) diff --git a/include/url.h b/include/url.h index 9088031..1bd3950 100644 --- a/include/url.h +++ b/include/url.h @@ -39,5 +39,6 @@ int url_get_amount(void); void url_purge(void); void url_dump(void); int url_count_inline(const char *line); +int url_len_inline(const char *text); #endif // !defined( URL_H ) diff --git a/src/url.c b/src/url.c index 6872503..c5ffd4b 100644 --- a/src/url.c +++ b/src/url.c @@ -156,3 +156,25 @@ int url_count_inline(const char *line) { return count; } + +int url_len_inline(const char *text) { + int count = 0; + const char *i = text; + + for (; *i; i++) { + if (*i == '\\') { + i++; + } else if ( *i == '[' && *(i+1) != ']') { + while (*i && *i != ']') i++; + i++; + if (*i == '(' && strchr(i, ')')) { + while (*i && *i != ')') { + count++; + i++; + } + } + } + } + + return count; +} diff --git a/src/viewer.c b/src/viewer.c index fa2ea10..0e2da58 100644 --- a/src/viewer.c +++ b/src/viewer.c @@ -98,6 +98,9 @@ int ncurses_display(deck_t *deck, int notrans, int nofade, int invert) { if (line && line->text && line->text->text) lc += url_count_inline(line->text->text); + if (line && line->text && line->text->text) + line->length -= url_len_inline(line->text->text); + if(line->length > COLS) { i = line->length; offset = 0; -- 2.20.1