commit 60f311ec4a85a62f84f76d5a1a05432f08417287
parent 3da18ab09b9d07340479d8e03052c5638cd63d91
Author: lumidify <nobody@lumidify.org>
Date: Fri, 2 Jun 2023 13:40:53 +0200
Change view_get_line to macro to make the error message more useful
Diffstat:
4 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/keys_basic.c b/keys_basic.c
@@ -28,6 +28,7 @@
#include <X11/cursorfont.h>
#include "util.h"
+#include "assert.h"
#include "memory.h"
#include "common.h"
#include "txtbuf.h"
@@ -2118,6 +2119,7 @@ enter_visual(ledit_view *view, char *text, size_t len) {
(void)text;
(void)len;
view_set_mode(view, VISUAL);
+ /* FIXME: set view->sel_valid? */
view->sel.line1 = view->sel.line2 = view->cur_line;
view->sel.byte1 = view->sel.byte2 = view->cur_index;
view_wipe_line_cursor_attrs(view, view->cur_line);
diff --git a/uglycrap.h b/uglycrap.h
@@ -1,7 +1,7 @@
#ifndef _UGLYCRAP_H_
#define _UGLYCRAP_H_
-/* FIXME: Figure out where to put it - it would make sens to put it in
+/* FIXME: Figure out where to put it - it would make sense to put it in
keys_command.h, but it is needed by view.h to make the command mode
per-view, but I don't want view.* to depend on keys_command.h */
diff --git a/view.c b/view.c
@@ -162,6 +162,7 @@ view_unlock(ledit_view *view) {
view->lock_text = NULL;
}
+#if 0
ledit_view_line *
view_get_line(ledit_view *view, size_t index) {
ledit_assert(index < view->lines_num);
@@ -169,6 +170,7 @@ view_get_line(ledit_view *view, size_t index) {
&view->lines[index] :
&view->lines[index + view->lines_cap - view->lines_num];
}
+#endif
static void
move_line_gap(ledit_view *view, size_t index) {
diff --git a/view.h b/view.h
@@ -113,7 +113,12 @@ void view_unlock(ledit_view *view);
* The returned line is only valid until the next
* action that appends or deletes line entries.
*/
-ledit_view_line *view_get_line(ledit_view *view, size_t index);
+/* ledit_view_line *view_get_line(ledit_view *view, size_t index); */
+
+/* This is very hacky - it's so the actual function calling view_get_line is returned in the assertion message.
+ * There probably is a better way to do this.
+ */
+#define view_get_line(view, index) (ledit_assert((index) < (view)->lines_num), (index) < (view)->lines_gap ? &(view)->lines[index] : &(view)->lines[(index) + (view)->lines_cap - (view)->lines_num])
/*
* These notification functions are called by the buffer when text