[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemacs-commit] qemacs bufed.c buffer.c clang.c dired.c hex.c h...
From: |
Charlie Gordon |
Subject: |
[Qemacs-commit] qemacs bufed.c buffer.c clang.c dired.c hex.c h... |
Date: |
Fri, 04 Jan 2008 22:24:40 +0000 |
CVSROOT: /cvsroot/qemacs
Module name: qemacs
Changes by: Charlie Gordon <chqrlie> 08/01/04 22:24:40
Modified files:
. : bufed.c buffer.c clang.c dired.c hex.c html.c
htmlsrc.c image.c latex-mode.c makemode.c
perl.c qe.c qe.h qeconfig.h shell.c unihex.c
util.c video.c x11.c
Log message:
eb_scratch takes buffer creation flags
added eb_find_new -> find a buffer by name, create one from flags if
not found.
qe_register_cmd_table takes ModeDef* instead of mode name
do_global_set_key -> do_set_key with local/global flag
added local-set-key
reuse *bufed* buffer if one exists
bind increase/decrease-width commands from command definition
cosmetics, comments, remarks
renamed kill buffers from *yank* to *kill-%d*
save QErrorContext in parse_args, load_all_modules:
improves readability in *messages* buffer
fixed qe_init to fall back from x11 display to terminal session upon
failure
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/qemacs/bufed.c?cvsroot=qemacs&r1=1.12&r2=1.13
http://cvs.savannah.gnu.org/viewcvs/qemacs/buffer.c?cvsroot=qemacs&r1=1.30&r2=1.31
http://cvs.savannah.gnu.org/viewcvs/qemacs/clang.c?cvsroot=qemacs&r1=1.24&r2=1.25
http://cvs.savannah.gnu.org/viewcvs/qemacs/dired.c?cvsroot=qemacs&r1=1.16&r2=1.17
http://cvs.savannah.gnu.org/viewcvs/qemacs/hex.c?cvsroot=qemacs&r1=1.16&r2=1.17
http://cvs.savannah.gnu.org/viewcvs/qemacs/html.c?cvsroot=qemacs&r1=1.13&r2=1.14
http://cvs.savannah.gnu.org/viewcvs/qemacs/htmlsrc.c?cvsroot=qemacs&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/qemacs/image.c?cvsroot=qemacs&r1=1.14&r2=1.15
http://cvs.savannah.gnu.org/viewcvs/qemacs/latex-mode.c?cvsroot=qemacs&r1=1.22&r2=1.23
http://cvs.savannah.gnu.org/viewcvs/qemacs/makemode.c?cvsroot=qemacs&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/qemacs/perl.c?cvsroot=qemacs&r1=1.4&r2=1.5
http://cvs.savannah.gnu.org/viewcvs/qemacs/qe.c?cvsroot=qemacs&r1=1.59&r2=1.60
http://cvs.savannah.gnu.org/viewcvs/qemacs/qe.h?cvsroot=qemacs&r1=1.55&r2=1.56
http://cvs.savannah.gnu.org/viewcvs/qemacs/qeconfig.h?cvsroot=qemacs&r1=1.26&r2=1.27
http://cvs.savannah.gnu.org/viewcvs/qemacs/shell.c?cvsroot=qemacs&r1=1.37&r2=1.38
http://cvs.savannah.gnu.org/viewcvs/qemacs/unihex.c?cvsroot=qemacs&r1=1.10&r2=1.11
http://cvs.savannah.gnu.org/viewcvs/qemacs/util.c?cvsroot=qemacs&r1=1.32&r2=1.33
http://cvs.savannah.gnu.org/viewcvs/qemacs/video.c?cvsroot=qemacs&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/qemacs/x11.c?cvsroot=qemacs&r1=1.20&r2=1.21
Patches:
Index: bufed.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/bufed.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- bufed.c 3 Jan 2008 18:31:24 -0000 1.12
+++ bufed.c 4 Jan 2008 22:24:37 -0000 1.13
@@ -172,7 +172,7 @@
/* XXX: must close this buffer when destroying window: add a
special buffer flag to tell this */
- b = eb_new("*bufed*", BF_READONLY | BF_SYSTEM);
+ b = eb_scratch("*bufed*", BF_READONLY | BF_SYSTEM);
width = qs->width / 5;
e = insert_window_left(b, width, WF_MODELINE);
@@ -299,7 +299,7 @@
/* first register mode */
qe_register_mode(&bufed_mode);
- qe_register_cmd_table(bufed_commands, "bufed");
+ qe_register_cmd_table(bufed_commands, &bufed_mode);
qe_register_cmd_table(bufed_global_commands, NULL);
return 0;
Index: buffer.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/buffer.c,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -b -r1.30 -r1.31
--- buffer.c 3 Jan 2008 18:31:24 -0000 1.30
+++ buffer.c 4 Jan 2008 22:24:38 -0000 1.31
@@ -493,7 +493,7 @@
}
/* Return an empty scratch buffer, create one if necessary */
-EditBuffer *eb_scratch(const char *name)
+EditBuffer *eb_scratch(const char *name, int flags)
{
EditBuffer *b;
@@ -501,7 +501,7 @@
if (b != NULL) {
eb_clear(b);
} else {
- b = eb_new(name, 0);
+ b = eb_new(name, flags);
}
return b;
}
@@ -575,6 +575,16 @@
return NULL;
}
+EditBuffer *eb_find_new(const char *name, int flags)
+{
+ EditBuffer *b;
+
+ b = eb_find(name);
+ if (!b)
+ b = eb_new(name, flags);
+ return b;
+}
+
EditBuffer *eb_find_file(const char *filename)
{
QEmacsState *qs = &qe_state;
Index: clang.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/clang.c,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -b -r1.24 -r1.25
--- clang.c 3 Jan 2008 18:31:24 -0000 1.24
+++ clang.c 4 Jan 2008 22:24:38 -0000 1.25
@@ -790,7 +790,7 @@
c_mode.mode_init = c_mode_init;
qe_register_mode(&c_mode);
- qe_register_cmd_table(c_commands, "C");
+ qe_register_cmd_table(c_commands, &c_mode);
qe_register_cmd_table(c_global_commands, NULL);
return 0;
Index: dired.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/dired.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- dired.c 3 Jan 2008 18:31:25 -0000 1.16
+++ dired.c 4 Jan 2008 22:24:38 -0000 1.17
@@ -502,7 +502,8 @@
*/
b0 = s->b;
- b = eb_new("*dired*", BF_READONLY | BF_SYSTEM);
+ /* Should reuse previous dired buffer for same filespec */
+ b = eb_scratch("*dired*", BF_READONLY | BF_SYSTEM);
/* set the filename to the directory of the current file */
pstrcpy(filename, sizeof(filename), s->b->filename);
@@ -587,7 +588,7 @@
/* first register mode */
qe_register_mode(&dired_mode);
- qe_register_cmd_table(dired_commands, "dired");
+ qe_register_cmd_table(dired_commands, &dired_mode);
qe_register_cmd_table(dired_global_commands, NULL);
return 0;
Index: hex.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/hex.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- hex.c 3 Jan 2008 09:51:31 -0000 1.16
+++ hex.c 4 Jan 2008 22:24:38 -0000 1.17
@@ -121,8 +121,8 @@
/* specific hex commands */
static CmdDef hex_commands[] = {
- CMD1( KEY_NONE, KEY_NONE, "decrease-width", do_incr_width, -1)
- CMD1( KEY_NONE, KEY_NONE, "increase-width", do_incr_width, 1)
+ CMD1( KEY_CTRL_LEFT, KEY_NONE, "decrease-width", do_incr_width, -1)
+ CMD1( KEY_CTRL_RIGHT, KEY_NONE, "increase-width", do_incr_width, 1)
CMD_( KEY_NONE, KEY_NONE, "set-width", do_set_width, ESi, "ui{Width: }")
CMDV( KEY_META('g'), KEY_NONE, "goto-byte", do_goto, ESsi, 'b', "us{Goto
byte: }v")
CMD0( KEY_NONE, KEY_NONE, "toggle-hex", do_toggle_hex)
@@ -348,12 +348,10 @@
qe_register_mode(&hex_mode);
/* commands and default keys */
- qe_register_cmd_table(hex_commands, "hex");
- qe_register_cmd_table(hex_commands, "ascii");
+ qe_register_cmd_table(hex_commands, &hex_mode);
+ qe_register_cmd_table(hex_commands, &ascii_mode);
/* additional mode specific keys */
- qe_register_binding(KEY_CTRL_LEFT, "decrease-width", "ascii|hex");
- qe_register_binding(KEY_CTRL_RIGHT, "increase-width", "ascii|hex");
qe_register_binding(KEY_TAB, "toggle-hex", "hex");
qe_register_binding(KEY_SHIFT_TAB, "toggle-hex", "hex");
Index: html.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/html.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- html.c 3 Jan 2008 09:51:31 -0000 1.13
+++ html.c 4 Jan 2008 22:24:38 -0000 1.14
@@ -100,9 +100,7 @@
{
EditBuffer *b;
- b = eb_find(HTML_ERROR_BUFFER);
- if (!b)
- b = eb_new(HTML_ERROR_BUFFER, BF_READONLY);
+ b = eb_find_new(HTML_ERROR_BUFFER, BF_READONLY);
if (!b)
return;
b->flags &= ~BF_READONLY;
@@ -894,7 +892,8 @@
css_init();
qe_register_mode(&html_mode);
- qe_register_cmd_table(html_commands, "html");
+ qe_register_cmd_table(html_commands, &html_mode);
+
return 0;
}
Index: htmlsrc.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/htmlsrc.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- htmlsrc.c 3 Jan 2008 09:51:31 -0000 1.2
+++ htmlsrc.c 4 Jan 2008 22:24:38 -0000 1.3
@@ -299,7 +299,7 @@
htmlsrc_mode.mode_init = htmlsrc_mode_init;
qe_register_mode(&htmlsrc_mode);
- qe_register_cmd_table(htmlsrc_commands, "html-src");
+ qe_register_cmd_table(htmlsrc_commands, &htmlsrc_mode);
return 0;
}
Index: image.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/image.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- image.c 3 Jan 2008 09:51:31 -0000 1.14
+++ image.c 4 Jan 2008 22:24:38 -0000 1.15
@@ -813,7 +813,8 @@
CMD1( '.', KEY_NONE, "image-larger-10", image_mult_size, 10)
CMD1( ',', KEY_NONE, "image-smaller-10", image_mult_size, -10)
CMD_( 'S', KEY_NONE, "image-set-display-size", image_set_size, ESii,
- "i{Displayed width: }i{Displayed height: }")
+ "i{Displayed width: }"
+ "i{Displayed height: }")
#endif
CMD_DEF_END,
};
@@ -844,7 +845,7 @@
av_register_all();
eb_register_data_type(&image_data_type);
qe_register_mode(&image_mode);
- qe_register_cmd_table(image_commands, "image");
+ qe_register_cmd_table(image_commands, &image_mode);
register_completion("pixel_format", pixel_format_completion);
/* additional mode specific keys */
qe_register_binding('f', "toggle-full-screen", "image");
Index: latex-mode.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/latex-mode.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -b -r1.22 -r1.23
--- latex-mode.c 3 Jan 2008 18:31:25 -0000 1.22
+++ latex-mode.c 4 Jan 2008 22:24:38 -0000 1.23
@@ -329,7 +329,7 @@
latex_mode.mode_init = latex_mode_init;
qe_register_mode(&latex_mode);
- qe_register_cmd_table(latex_commands, "LaTeX");
+ qe_register_cmd_table(latex_commands, &latex_mode);
register_completion("latex", latex_completion);
return 0;
Index: makemode.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/makemode.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- makemode.c 3 Jan 2008 09:51:31 -0000 1.2
+++ makemode.c 4 Jan 2008 22:24:38 -0000 1.3
@@ -183,7 +183,7 @@
makefile_mode.mode_init = makefile_mode_init;
qe_register_mode(&makefile_mode);
- qe_register_cmd_table(makefile_commands, "Makefile");
+ qe_register_cmd_table(makefile_commands, &makefile_mode);
return 0;
}
Index: perl.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/perl.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- perl.c 3 Jan 2008 09:51:31 -0000 1.4
+++ perl.c 4 Jan 2008 22:24:39 -0000 1.5
@@ -370,7 +370,7 @@
perl_mode.mode_init = perl_mode_init;
qe_register_mode(&perl_mode);
- qe_register_cmd_table(perl_commands, "Perl");
+ qe_register_cmd_table(perl_commands, &perl_mode);
return 0;
}
Index: qe.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/qe.c,v
retrieving revision 1.59
retrieving revision 1.60
diff -u -b -r1.59 -r1.60
--- qe.c 3 Jan 2008 18:31:25 -0000 1.59
+++ qe.c 4 Jan 2008 22:24:39 -0000 1.60
@@ -158,16 +158,19 @@
{
QEmacsState *qs = &qe_state;
KeyDef **lp, *p;
+ int i;
/* add key */
- p = qe_malloc_hack(KeyDef, (nb_keys - 1) * sizeof(unsigned int));
+ p = qe_malloc_hack(KeyDef, (nb_keys - 1) * sizeof(p->keys[0]));
if (!p)
return -1;
- p->nb_keys = nb_keys;
p->cmd = d;
p->mode = m;
- memcpy(p->keys, keys, nb_keys * sizeof(unsigned int));
- /* find position : mode keys should be before generic keys */
+ p->nb_keys = nb_keys;
+ for (i = 0; i < nb_keys; i++) {
+ p->keys[i] = keys[i];
+ }
+ /* find position: mode keys should be before generic keys */
if (m == NULL) {
lp = &qs->first_key;
while (*lp != NULL) lp = &(*lp)->next;
@@ -204,15 +207,10 @@
}
/* if mode is non NULL, the defined keys are only active in this mode */
-void qe_register_cmd_table(CmdDef *cmds, const char *mode)
+void qe_register_cmd_table(CmdDef *cmds, ModeDef *m)
{
QEmacsState *qs = &qe_state;
CmdDef **ld, *d;
- ModeDef *m;
-
- m = NULL;
- if (mode)
- m = find_mode(mode);
/* find last command table */
for (ld = &qs->first_cmd;;) {
@@ -268,12 +266,10 @@
p = mode_names;
for (;;) {
r = strchr(p, '|');
- /* XXX: overflows */
- if (!r) {
- strcpy(mode_name, p);
+ if (r) {
+ pstrncpy(mode_name, sizeof(mode_name), p, r - p);
} else {
- memcpy(mode_name, p, r - p);
- mode_name[r - p] = '\0';
+ pstrcpy(mode_name, sizeof(mode_name), p);
}
m = find_mode(mode_name);
if (m) {
@@ -304,8 +300,8 @@
#define MAX_KEYS 10
-void do_global_set_key(EditState *s, const char *keystr,
- const char *cmd_name)
+void do_set_key(EditState *s, const char *keystr,
+ const char *cmd_name, int local)
{
int nb_keys;
unsigned int keys[MAX_KEYS];
@@ -320,7 +316,7 @@
put_status(s, "No command %s", cmd_name);
return;
}
- qe_register_binding1(keys, nb_keys, d, NULL);
+ qe_register_binding1(keys, nb_keys, d, local ? s->mode : NULL);
}
void do_toggle_control_h(EditState *s, int set)
@@ -1380,19 +1376,23 @@
s->offset = 0;
}
-EditBuffer *new_yank_buffer(void)
+EditBuffer *new_yank_buffer(QEmacsState *qs)
{
- QEmacsState *qs = &qe_state;
+ char bufname[32];
EditBuffer *b;
if (qs->yank_buffers[qs->yank_current]) {
if (++qs->yank_current == NB_YANK_BUFFERS)
qs->yank_current = 0;
b = qs->yank_buffers[qs->yank_current];
- if (b)
+ if (b) {
+ /* problem if buffer is displayed in window, should instead
+ * just clear the buffer */
eb_free(b);
}
- b = eb_new("*yank*", BF_SYSTEM);
+ }
+ snprintf(bufname, sizeof(bufname), "*kill-%d*", qs->yank_current + 1);
+ b = eb_new(bufname, BF_SYSTEM);
qs->yank_buffers[qs->yank_current] = b;
return b;
}
@@ -1420,7 +1420,7 @@
b = qs->yank_buffers[qs->yank_current];
if (!b || !dir || qs->last_cmd_func != do_append_next_kill) {
/* append kill if last command was kill already */
- b = new_yank_buffer();
+ b = new_yank_buffer(qs);
}
/* insert at beginning or end depending on kill direction */
eb_insert_buffer(b, dir < 0 ? 0 : b->total_size, s->b, p1, len);
@@ -1563,7 +1563,6 @@
}
}
-
static void edit_set_mode_file(EditState *s, ModeDef *m,
ModeSavedData *saved_data, FILE *f1)
{
@@ -1946,7 +1945,6 @@
return pos;
}
-
void display_mode_line(EditState *s)
{
char buf[512];
@@ -3408,6 +3406,7 @@
{
EditState *s = es->s;
QEmacsState *qs = s->qe_state;
+ QErrorContext ec;
CmdDef *d = es->d;
char prompt[256];
char completion_name[64];
@@ -3512,9 +3511,11 @@
#ifndef CONFIG_TINY
save_selection();
#endif
- /* CG: Should save and restore ec context */
+ /* Save and restore ec context */
+ ec = qs->ec;
qs->ec.function = d->name;
call_func(d->sig, d->action, es->nb_args, es->args, es->args_type);
+ qs->ec = ec;
/* CG: This doesn't work if the function needs input */
/* CG: Should test for abort condition */
/* CG: Should follow qs->active_window ? */
@@ -3749,7 +3750,7 @@
def->action.ESs = do_execute_macro_keys;
qe_register_cmd_table(def, NULL);
- do_global_set_key(s, key_bind, name);
+ do_set_key(s, key_bind, name, 0);
}
#define MACRO_KEY_INCR 64
@@ -3877,11 +3878,8 @@
dpy_flush(&global_screen);
}
- /* special case for escape : we transform it as meta so
+ /* Special case for escape: we transform it as meta so
that unix users are happy ! */
- /* CG: should allow for other key compositions, such as
- * diacritics, and compositions of more than 2 keys
- */
if (key == KEY_ESC) {
c->is_escape = 1;
goto next;
@@ -3895,7 +3893,7 @@
for (kd = qs->first_key; kd != NULL; kd = kd->next) {
if (kd->nb_keys >= c->nb_keys) {
if (!memcmp(kd->keys, c->keys,
- c->nb_keys * sizeof(unsigned int)) &&
+ c->nb_keys * sizeof(c->keys[0])) &&
(kd->mode == NULL || kd->mode == s->mode)) {
break;
}
@@ -4046,9 +4044,7 @@
qs->ec.function);
len = strlen(header);
}
- eb = eb_find(bufname);
- if (!eb)
- eb = eb_new(bufname, BF_SYSTEM);
+ eb = eb_find_new(bufname, BF_SYSTEM);
if (eb) {
eb_printf(eb, "%s%s\n", header, message);
} else {
@@ -4082,7 +4078,9 @@
vsnprintf(buf, sizeof(buf), fmt, ap);
va_end(ap);
- if (qs->screen->dpy.dpy_init != dummy_dpy_init) {
+ if (qs->screen->dpy.dpy_init == dummy_dpy_init) {
+ eb_format_message(qs, "*errors*", buf);
+ } else {
if (strcmp(buf, qs->status_shadow) != 0) {
print_at_byte(qs->screen,
0, qs->screen->height - qs->status_height,
@@ -4094,8 +4092,6 @@
if (*p)
eb_format_message(qs, "*messages*", buf);
}
- } else {
- eb_format_message(qs, "*errors*", buf);
}
}
@@ -4691,7 +4687,7 @@
minibuffer_mode.name = "minibuffer";
minibuffer_mode.scroll_up_down = minibuf_complete_scroll_up_down;
qe_register_mode(&minibuffer_mode);
- qe_register_cmd_table(minibuffer_commands, "minibuffer");
+ qe_register_cmd_table(minibuffer_commands, &minibuffer_mode);
}
/* less mode */
@@ -4746,7 +4742,7 @@
memcpy(&less_mode, &text_mode, sizeof(ModeDef));
less_mode.name = "less";
qe_register_mode(&less_mode);
- qe_register_cmd_table(less_commands, "less");
+ qe_register_cmd_table(less_commands, &less_mode);
}
#ifndef CONFIG_TINY
@@ -4842,11 +4838,7 @@
{
EditBuffer *b;
- b = eb_find(bufname);
- if (!b) {
- /* Create a new buffer */
- b = eb_new(bufname, BF_SAVELOG);
- }
+ b = eb_find_new(bufname, BF_SAVELOG);
if (b)
switch_to_buffer(s, b);
}
@@ -6686,7 +6678,7 @@
int parse_config_file(EditState *s, const char *filename)
{
QEmacsState *qs = s->qe_state;
- QErrorContext ec = qs->ec;
+ QErrorContext ec;
FILE *f;
char line[1024], str[1024];
char prompt[64], cmd[128], *q, *strp;
@@ -6700,6 +6692,7 @@
f = fopen(filename, "r");
if (!f)
return -1;
+ ec = qs->ec;
skip = 0;
err = 0;
line_num = 0;
@@ -7273,18 +7266,19 @@
static void load_all_modules(QEmacsState *qs)
{
- QErrorContext ec = qs->ec;
+ QErrorContext ec;
FindFileState *ffst;
char filename[MAX_FILENAME_SIZE];
void *h;
int (*init_func)(void);
+ ec = qs->ec;
+ qs->ec.function = "load-all-modules";
+
ffst = find_file_open(qs->res_path, "*.so");
if (!ffst)
return;
- qs->ec.function = "load-all-modules";
-
while (!find_file_next(ffst, filename, sizeof(filename))) {
h = dlopen(filename, RTLD_LAZY);
if (!h) {
@@ -7408,18 +7402,25 @@
qe_key_init();
/* select the suitable display manager */
+ for (;;) {
dpy = probe_display();
if (!dpy) {
fprintf(stderr, "No suitable display found, exiting\n");
exit(1);
}
-
if (dpy->dpy_init(&global_screen, screen_width, screen_height) < 0) {
- fprintf(stderr, "Could not initialize display '%s', exiting\n",
- dpy->name);
- exit(1);
+ /* Just disable the display and try another */
+ //fprintf(stderr, "Could not initialize display '%s', exiting\n",
+ // dpy->name);
+ dpy->dpy_probe = NULL;
+ } else {
+ break;
+ }
}
+ put_status(NULL, "%s display %dx%d",
+ dpy->name, qs->screen->width, qs->screen->height);
+
qe_event_init();
do_refresh(s);
@@ -7448,6 +7449,7 @@
edit_display(qs);
dpy_flush(&global_screen);
}
+ qs->ec.function = NULL;
}
Index: qe.h
===================================================================
RCS file: /cvsroot/qemacs/qemacs/qe.h,v
retrieving revision 1.55
retrieving revision 1.56
diff -u -b -r1.55 -r1.56
--- qe.h 3 Jan 2008 18:31:25 -0000 1.55
+++ qe.h 4 Jan 2008 22:24:39 -0000 1.56
@@ -753,10 +753,11 @@
const void *buf, int size1);
void log_reset(EditBuffer *b);
EditBuffer *eb_new(const char *name, int flags);
-EditBuffer *eb_scratch(const char *name);
+EditBuffer *eb_scratch(const char *name, int flags);
void eb_clear(EditBuffer *b);
void eb_free(EditBuffer *b);
EditBuffer *eb_find(const char *name);
+EditBuffer *eb_find_new(const char *name, int flags);
EditBuffer *eb_find_file(const char *filename);
EditState *eb_find_window(EditBuffer *b, EditState *e);
@@ -770,6 +771,7 @@
int eb_delete_range(EditBuffer *b, int p1, int p2);
//int eb_clip_offset(EditBuffer *b, int offset);
void do_undo(EditState *s);
+//void do_redo(EditState *s);
int raw_load_buffer1(EditBuffer *b, FILE *f, int offset);
int mmap_buffer(EditBuffer *b, const char *filename);
@@ -945,11 +947,15 @@
int borders_invalid; /* true if window borders should be redrawn */
int show_selection; /* if true, the selection is displayed */
+ //int region_style;
+ //int curline_style;
+
/* display area info */
int width, height;
int ytop, xleft;
/* full window size, including borders */
int x1, y1, x2, y2; /* window coordinates in device units */
+ //int xx1, yy1, xx2, yy2; /* window coordinates in 1/1000 */
int flags; /* display flags */
#define WF_POPUP 0x0001 /* popup window (with borders) */
@@ -1032,6 +1038,8 @@
#define MODEF_NOCMD 0x0001 /* do not register xxx-mode command automatically */
EditBufferDataType *data_type; /* native buffer data type (NULL = raw) */
int (*mode_line)(EditState *s, char *buf, int buf_size); /* return mode
line */
+
+ /* mode specific key bindings */
//struct KeyDef *first_key;
struct ModeDef *next;
@@ -1239,7 +1247,7 @@
void qe_register_mode(ModeDef *m);
void mode_completion(StringArray *cs, const char *input);
-void qe_register_cmd_table(CmdDef *cmds, const char *mode);
+void qe_register_cmd_table(CmdDef *cmds, ModeDef *m);
void qe_register_binding(int key, const char *cmd_name,
const char *mode_names);
CmdDef *qe_find_cmd(const char *cmd_name);
@@ -1503,7 +1511,7 @@
void do_backspace(EditState *s, int argval);
void do_delete_char(EditState *s, int argval);
void do_tab(EditState *s, int argval);
-EditBuffer *new_yank_buffer(void);
+EditBuffer *new_yank_buffer(QEmacsState *qs);
void do_append_next_kill(EditState *s);
void do_kill(EditState *s, int p1, int p2, int dir);
void do_kill_region(EditState *s, int killtype);
@@ -1526,7 +1534,8 @@
void do_set_emulation(EditState *s, const char *name);
void do_set_trace(EditState *s);
void do_cd(EditState *s, const char *name);
-void do_global_set_key(EditState *s, const char *keystr, const char *cmd_name);
+void do_set_key(EditState *s, const char *keystr, const char *cmd_name, int
local);
+//void do_unset_key(EditState *s, const char *keystr, int local);
void do_bof(EditState *s);
void do_eof(EditState *s);
void do_bol(EditState *s);
Index: qeconfig.h
===================================================================
RCS file: /cvsroot/qemacs/qemacs/qeconfig.h,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -b -r1.26 -r1.27
--- qeconfig.h 3 Jan 2008 18:31:25 -0000 1.26
+++ qeconfig.h 4 Jan 2008 22:24:39 -0000 1.27
@@ -98,22 +98,28 @@
CMD_( KEY_META('~'), KEY_NONE, "not-modified", do_not_modified, ESi, "ui")
CMD_( KEY_NONE, KEY_NONE, "set-visited-file-name",
do_set_visited_file_name, ESss,
- "s{Set visited file name: }[file]|file|s{Rename file? }")
+ "s{Set visited file name: }[file]|file|"
+ "s{Rename file? }")
/*---------------- Search and replace ----------------*/
CMDV( KEY_META('S'), KEY_NONE, "search-forward", do_search_string, ESsi, 1,
- "s{Search forward: }|search|v")
+ "s{Search forward: }|search|"
+ "v")
CMDV( KEY_META('R'), KEY_NONE, "search-backward", do_search_string, ESsi,
-1,
- "s{Search backward: }|search|v")
+ "s{Search backward: }|search|"
+ "v")
/* passing argument should switch to regex incremental search */
CMD1( KEY_CTRL('r'), KEY_NONE, "isearch-backward", do_isearch, -1 )
CMD1( KEY_CTRL('s'), KEY_NONE, "isearch-forward", do_isearch, 1 )
CMD_( KEY_META('%'), KEY_NONE, "query-replace", do_query_replace, ESss,
- "*s{Query replace: }|search|s{With: }|replace|")
+ "*" "s{Query replace: }|search|"
+ "s{With: }|replace|")
/* passing argument restricts replace to word matches */
CMD_( KEY_META('r'), KEY_NONE, "replace-string", do_replace_string, ESssi,
- "*s{Replace String: }|search|s{With: }|replace|ui")
+ "*" "s{Replace String: }|search|"
+ "s{With: }|replace|"
+ "ui")
/*---------------- Paragraph / case handling ----------------*/
@@ -135,7 +141,8 @@
/*---------------- Command handling ----------------*/
CMD_( KEY_META('x'), KEY_NONE, "execute-command", do_execute_command, ESsi,
- "s{Command: }[command]|command|ui")
+ "s{Command: }[command]|command|"
+ "ui")
/* M-0 thru M-9 should start universal argument */
CMD0( KEY_CTRL('u'), KEY_META('-'), "universal-argument",
do_universal_argument)
@@ -144,10 +151,18 @@
CMD0( KEY_CTRLX(')'), KEY_NONE, "end-kbd-macro", do_end_macro)
CMD0( KEY_CTRLX('e'), KEY_CTRL('\\'), "call-last-kbd-macro", do_call_macro)
CMD_( KEY_NONE, KEY_NONE, "define-kbd-macro", do_define_kbd_macro, ESsss,
- "s{Macro name: }[command]s{Macro keys: }s{Bind to key: }[key]")
- /* global/local?, set/unset key? */
- CMD_( KEY_NONE, KEY_NONE, "global-set-key", do_global_set_key, ESss,
- "s{Set key globally: }[key]s{command: }[command]|command|")
+ "s{Macro name: }[command]"
+ "s{Macro keys: }"
+ "s{Bind to key: }[key]")
+ /* set/unset key? */
+ CMDV( KEY_NONE, KEY_NONE, "global-set-key", do_set_key, ESssi, 0,
+ "s{Set key globally: }[key]"
+ "s{command: }[command]|command|"
+ "v")
+ CMDV( KEY_NONE, KEY_NONE, "local-set-key", do_set_key, ESssi, 1,
+ "s{Set key locally: }[key]"
+ "s{command: }[command]|command|"
+ "v")
/*---------------- Window handling ----------------*/
@@ -191,7 +206,7 @@
"s{Charset: }[charset]")
CMD_( KEY_NONE, KEY_NONE, "convert-buffer-file-coding-system",
do_convert_buffer_file_coding_system, ESs,
- "*s{Charset: }[charset]")
+ "*" "s{Charset: }[charset]")
CMD0( KEY_CTRLXRET('b'), KEY_NONE, "toggle-bidir", do_toggle_bidir)
CMD_( KEY_CTRLXRET(KEY_CTRL('\\')), KEY_NONE, "set-input-method",
do_set_input_method, ESs,
@@ -201,15 +216,18 @@
/*---------------- Styles & display ----------------*/
CMD_( KEY_NONE, KEY_NONE, "define-color", do_define_color, ESss,
- "s{Color name: }[color]|color|s{Color value: }[color]|color|")
+ "s{Color name: }[color]|color|"
+ "s{Color value: }[color]|color|")
CMD_( KEY_NONE, KEY_NONE, "set-style", do_set_style, ESsss,
"s{Style: }[style]|style|"
"s{CSS Property Name: }"
"s{CSS Property Value: }")
CMD_( KEY_NONE, KEY_NONE, "set-display-size", do_set_display_size, ESii,
- "i{Width: }i{Height: }")
+ "i{Width: }"
+ "i{Height: }")
CMD_( KEY_NONE, KEY_NONE, "set-system-font", do_set_system_font, ESss,
- "s{Font family: }s{System fonts: }")
+ "s{Font family: }"
+ "s{System fonts: }")
/*---------------- Miscellaneous ----------------*/
@@ -218,8 +236,10 @@
CMD0( KEY_CTRL('l'), KEY_NONE, "refresh", do_refresh_complete)
CMD0( KEY_NONE, KEY_NONE, "doctor", do_doctor)
CMD0( KEY_CTRLX('u'), KEY_CTRL('_'), "undo", do_undo)
- CMDV( KEY_META('g'), KEY_NONE, "goto-line", do_goto, ESsi, 'l', "us{Goto
line: }v")
- CMDV( KEY_CTRLX('g'), KEY_NONE, "goto-char", do_goto, ESsi, 'c', "us{Goto
char: }v")
+ CMDV( KEY_META('g'), KEY_NONE, "goto-line", do_goto, ESsi, 'l',
+ "us{Goto line: }" "v")
+ CMDV( KEY_CTRLX('g'), KEY_NONE, "goto-char", do_goto, ESsi, 'c',
+ "us{Goto char: }" "v")
CMD0( KEY_CTRLX('l'), KEY_NONE, "count-lines", do_count_lines)
CMD0( KEY_CTRLX('='), KEY_NONE, "what-cursor-position",
do_what_cursor_position)
Index: shell.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/shell.c,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -b -r1.37 -r1.38
--- shell.c 3 Jan 2008 18:31:25 -0000 1.37
+++ shell.c 4 Jan 2008 22:24:39 -0000 1.38
@@ -1448,7 +1448,7 @@
qe_register_mode(&shell_mode);
/* commands and default keys */
- qe_register_cmd_table(shell_commands, "shell");
+ qe_register_cmd_table(shell_commands, &shell_mode);
qe_register_cmd_table(compile_commands, NULL);
return 0;
Index: unihex.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/unihex.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- unihex.c 3 Jan 2008 09:51:32 -0000 1.10
+++ unihex.c 4 Jan 2008 22:24:39 -0000 1.11
@@ -182,7 +182,8 @@
/* additional mode specific keys */
qe_register_binding(KEY_CTRL_LEFT, "decrease-width", "unihex");
qe_register_binding(KEY_CTRL_RIGHT, "increase-width", "unihex");
- qe_register_binding(KEY_CTRL('i'), "toggle-hex", "unihex");
+ qe_register_binding(KEY_TAB, "toggle-hex", "unihex");
+ qe_register_binding(KEY_SHIFT_TAB, "toggle-hex", "unihex");
return 0;
}
Index: util.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/util.c,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -b -r1.32 -r1.33
--- util.c 3 Jan 2008 18:31:25 -0000 1.32
+++ util.c 4 Jan 2008 22:24:39 -0000 1.33
@@ -766,6 +766,7 @@
#endif
/* Should also support backslash escapes: \000 \x00 \u0000 */
/* Should also support ^x and syntax and Ctrl- prefix for control keys */
+ /* Should test for p[2] in range 'a'..'z', '@'..'_', '?' */
if (p[0] == 'C' && p[1] == '-' && p1 == p + 3) {
/* control */
key = KEY_CTRL(p[2]);
Index: video.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/video.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- video.c 3 Jan 2008 09:51:32 -0000 1.9
+++ video.c 4 Jan 2008 22:24:39 -0000 1.10
@@ -968,7 +968,7 @@
{
eb_register_data_type(&video_data_type);
qe_register_mode(&video_mode);
- qe_register_cmd_table(video_commands, "av");
+ qe_register_cmd_table(video_commands, &video_mode);
/* additional mode specific keys */
qe_register_binding('f', "toggle-full-screen", "av");
return 0;
Index: x11.c
===================================================================
RCS file: /cvsroot/qemacs/qemacs/x11.c,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -b -r1.20 -r1.21
--- x11.c 3 Jan 2008 09:51:32 -0000 1.20
+++ x11.c 4 Jan 2008 22:24:40 -0000 1.21
@@ -1060,6 +1060,7 @@
if needed */
static void term_selection_request(__unused__ QEditScreen *s)
{
+ QEmacsState *qs = &qe_state;
Window w;
Atom prop;
long nread;
@@ -1088,7 +1089,7 @@
prop = xev.xselection.property;
/* copy GUI selection a new yank buffer */
- b = new_yank_buffer();
+ b = new_yank_buffer(qs);
nread = 0;
for (;;) {
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Qemacs-commit] qemacs bufed.c buffer.c clang.c dired.c hex.c h...,
Charlie Gordon <=