aboutsummaryrefslogtreecommitdiff
path: root/vis-core.h
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2017-04-19 20:05:19 +0200
committerMarc André Tanner <mat@brain-dump.org>2017-04-20 22:47:07 +0200
commit9f2210c8ee567c75f43d18313b668aee06eda597 (patch)
treef806ed08d5cf1cd9d3947c7f4804f46ad18fbccc /vis-core.h
parent2c8fcaa8fbb17b99aa5b0f8bfbbe0451dfa509f3 (diff)
downloadvis-9f2210c8ee567c75f43d18313b668aee06eda597.tar.gz
vis-9f2210c8ee567c75f43d18313b668aee06eda597.tar.xz
vis: start cleaning up register related code
Now that register.h is no longer used by view.h we can move the struct and function declarations to vis-core.h.
Diffstat (limited to 'vis-core.h')
-rw-r--r--vis-core.h30
1 files changed, 29 insertions, 1 deletions
diff --git a/vis-core.h b/vis-core.h
index b0caee1..4df0cd4 100644
--- a/vis-core.h
+++ b/vis-core.h
@@ -5,12 +5,13 @@
#include "vis.h"
#include "sam.h"
#include "vis-lua.h"
-#include "register.h"
#include "text.h"
+#include "text-util.h"
#include "map.h"
#include "ring-buffer.h"
#include "array.h"
#include "buffer.h"
+#include "util.h"
/* a mode contains a set of key bindings which are currently valid.
*
@@ -38,6 +39,17 @@ struct Mode {
bool visual; /* whether text selection is possible in this mode */
};
+typedef struct {
+ Array values;
+ bool linewise; /* place register content on a new line when inserting? */
+ bool append;
+ enum {
+ REGISTER_NORMAL,
+ REGISTER_BLACKHOLE,
+ REGISTER_CLIPBOARD,
+ } type;
+} Register;
+
struct OperatorContext {
int count; /* how many times should the command be executed? */
Register *reg; /* always non-NULL, set to a default register */
@@ -258,4 +270,20 @@ Win *window_new_file(Vis*, File*, enum UiOption);
const char *file_name_get(File*);
void file_name_set(File*, const char *name);
+bool register_init(Register*);
+void register_release(Register*);
+
+const char *register_get(Vis*, Register*, size_t *len);
+const char *register_slot_get(Vis*, Register*, size_t slot, size_t *len);
+
+bool register_put0(Vis*, Register*, const char *data);
+bool register_put(Vis*, Register*, const char *data, size_t len);
+bool register_slot_put(Vis*, Register*, size_t slot, const char *data, size_t len);
+
+bool register_put_range(Vis*, Register*, Text*, Filerange*);
+bool register_slot_put_range(Vis*, Register*, size_t slot, Text*, Filerange*);
+
+size_t register_count(Register*);
+bool register_resize(Register*, size_t count);
+
#endif