#ifdef PANE_DATA_TYPE
#define pane_register4(p,z,h,d) do_pane_register(p,z,h,d,sizeof(d))
#define pane_register3(p,z,h) do_pane_register(p,z,h,NULL, sizeof(PANE_DATA_TYPE))
-#ifdef PANE_DATA_TYPE_2
-#define pane_register_2(p,z,h) do_pane_register(p,z,h,NULL, sizeof(PANE_DATA_TYPE_2))
-#endif
+#else
+#ifdef PANE_DATA_PTR_TYPE
+static inline struct pane *pane_register(struct pane *parent safe, short z,
+ struct command *handle safe,
+ PANE_DATA_PTR_TYPE data)
+{
+ return do_pane_register(parent, z, handle, (void*)data, sizeof(data));
+}
#else
#define pane_register4(p,z,h,d) do_pane_register(p,z,h,d,sizeof((d)[0]))
#define pane_register3(p,z,h) do_pane_register(p,z,h,NULL, 0)
#endif
+#endif
+
+#ifdef PANE_DATA_TYPE_2
+#define pane_register_2(p,z,h) do_pane_register(p,z,h,NULL, sizeof(PANE_DATA_TYPE_2))
+#endif
+#ifdef PANE_DATA_PTR_TYPE_2
+static inline struct pane *pane_register_2(struct pane *parent safe, short z,
+ struct command *handle safe,
+ PANE_DATA_PTR_TYPE_2 data)
+{
+ return do_pane_register(parent, z, handle, (void*)data, sizeof(data));
+}
+#endif
void pane_update_handle(struct pane *p safe, struct command *handle safe);
#define HOMENOTIFY3(home, not, focus) \
do_pane_notify(home, not, focus, 0, NULL, NULL, 0, NULL, NULL, NULL)
-#if !defined(PANE_DATA_TYPE) && !defined(DOC_DATA_TYPE)
+#if !defined(PANE_DATA_TYPE) && !defined(DOC_DATA_TYPE) && !defined(PANE_DATA_PTR_TYPE)
/* If you define PANE_DATA_TYPEor DOC_DATA_TYPE, you need to include this yourself */
#include "core-pane.h"
#endif
#include <stdio.h>
+#define PANE_DATA_PTR_TYPE char *
#include "core.h"
+#include "core-pane.h"
static struct map *emacs_map;
static const char * safe file_normalize(struct pane *p safe, const char *path,
DEF_CMD(find_complete)
{
- char *type = ci->home->_data;
+ char *type = ci->home->data;
if (strstarts(type, "file"))
return emacs_file_complete_func(ci);
DEF_CMD(find_done)
{
int ret;
- char *type = ci->home->_data;
+ char *type = ci->home->data;
char *str = call_ret(strsave, "doc:get-str", ci->focus);
const char *norm = NULL;
struct stat stb;
* walk the list in mru order.
* When we find it, insert the name into ci->focus document
*/
- char *type = ci->home->_data;
+ char *type = ci->home->data;
struct find_helper h;
if (strcmp(type, "doc") != 0)
DEF_CMD(find_attr)
{
- char *type = ci->home->_data;
+ char *type = ci->home->data;
if (!ci->str)
return Enoarg;
DEF_CMD(find_check_replace)
{
char *str, *cp, *sl;
- char *type = ci->home->_data;
+ char *type = ci->home->data;
char *initial_path;
char *prev_dir;
struct stat stb;
int fd;
struct pane *par, *pop, *docp, *p;
struct call_return cr;
- char *type = ci->home->_data;
+ char *type = ci->home->data;
char *initial = attr_find(ci->home->attrs, "initial_path");
int wholebuf = strcmp(type, "file") == 0;
struct mark *st;