} drawcsr;
void win_init(char* title, KeyBinding* bindings);
+void win_prop_set(char* xname, char* ename, char* value);
void win_save(char* path);
void win_loop(void);
void win_quit(void);
buf_logclear(&(view->buffer));
}
+void win_prop_set(char* xname, char* ename, char* value) {
+ Atom propname = XInternAtom(X.display, xname, 0);
+ XChangeProperty(X.display, X.self, propname, XA_STRING, 8, PropModeReplace,
+ (const unsigned char *)value, strlen(value));
+ if (ename) setenv(ename, value, 1);
+}
+
void win_save(char* path) {
View* view = win_view(EDIT);
if (!path) path = view->buffer.path;
free(view->buffer.path);
view->buffer.path = path;
buf_save(&(view->buffer));
+ win_prop_set("TIDE_FILE", "file", path);
}
void win_loop(void) {
win_init("tide", Bindings);
/* if we still have args left we're going to open it in this instance */
- if (*argv) view_init(win_view(EDIT), *argv);
+ if (*argv) {
+ view_init(win_view(EDIT), *argv);
+ win_prop_set("TIDE_FILE", "file", *argv);
+ }
/* now create the window and start the event loop */
win_loop();