diff options
-rw-r--r-- | runtime/doc/todo.txt | 12 | ||||
-rw-r--r-- | runtime/doc/version7.txt | 15 | ||||
-rw-r--r-- | src/eval.c | 41 | ||||
-rw-r--r-- | src/gui_gtk_x11.c | 30 | ||||
-rw-r--r-- | src/gui_x11.c | 14 | ||||
-rw-r--r-- | src/proto/gui_amiga.pro | 2 | ||||
-rw-r--r-- | src/proto/gui_x11.pro | 1 | ||||
-rw-r--r-- | src/ui.c | 8 |
8 files changed, 105 insertions, 18 deletions
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt index d6da62fd77..cd4868791e 100644 --- a/runtime/doc/todo.txt +++ b/runtime/doc/todo.txt @@ -1,4 +1,4 @@ -*todo.txt* For Vim version 7.0aa. Last change: 2004 Dec 09 +*todo.txt* For Vim version 7.0aa. Last change: 2004 Dec 11 VIM REFERENCE MANUAL by Bram Moolenaar @@ -30,17 +30,8 @@ be worked on, but only if you sponsor Vim development. See |sponsor|. *known-bugs* -------------------- Known bugs and current work ----------------------- -Add a function to test if a font name actually works. - -When using "set laststatus=2 cmdheight=2" in the .gvimrc you only get one line -for the cmdline. (Christian Robinson) When the Vim window is resized (e.g., -xterm with many lines) it's OK. - ":e <cfile>" does not expand ~/file, very confusing compared to ":e ~/file". -SIGHUP is delayed until waiting for a character. Can the same thing be done -for SIGINT? Then also check when waiting for a short time. - When no termcap/termlib library is found, check that compiling Vim works in configure. Give an clear error message ("install termcap or ncurses-dev package") when it doesn't. @@ -1354,6 +1345,7 @@ Multi-byte characters: 8 The quickfix file is read without conversion, thus in 'encoding'. Add an option to specify the encoding of the errorfile and convert it. Also for ":grep" and ":helpgrep". + More generic solution: support a filter (e.g., by calling a function). 8 When a file was converted from 'fileencoding' to 'encoding', a tag search should also do this on the search pattern. (Andrzej M. Ostruszka) 7 When converting a file fails, mention which byte could not be converted, diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt index cdfb1a0a06..814752ba43 100644 --- a/runtime/doc/version7.txt +++ b/runtime/doc/version7.txt @@ -1,4 +1,4 @@ -*version7.txt* For Vim version 7.0aa. Last change: 2004 Dec 09 +*version7.txt* For Vim version 7.0aa. Last change: 2004 Dec 11 VIM REFERENCE MANUAL by Bram Moolenaar @@ -166,6 +166,7 @@ repeat(expr, count) |repeat()| Repeat "expr" "count" times. tr(expr, from, to) |tr()| Translate characters. (Ron Aaron) system(cmd, input) |system()| Filters {input} through a shell command. +getfontname([name]) |getfontname()| Get actual font name being used. New autocommand events: ~ @@ -223,6 +224,10 @@ Also fixes the problem that setting 'clipboard' to "unnamed" breaks using Mac: GUI font selector. (Peter "Rain Dog" Cucka) +Mac: better integration with Xcode. Post a fake mouse-up event after the odoc +event and the drag receive handler to work around a stall after Vim loads a +file. Fixed an off-by-one line number error. (Da Woon Jung) + The netrw plugin now also supports viewing a directory, when "scp://" is used. Deleting and renaming files is possible. (Charles Campbell) @@ -494,7 +499,11 @@ After "Y" '[ and '] were not at start/end of the yanked text. When a telnet connection is dropped Vim preserves files and exits. While doing that a SIGHUP may arrive and disturbe us, thus ignore it. (Scott -Anderson) Also postpone SIGHUP until it's safe to handle. Added -handle_sighup(). +Anderson) Also postpone SIGHUP, SIGQUIT and SIGTERM until it's safe to +handle. Added handle_signal(). + +When using "set laststatus=2 cmdheight=2" in the .gvimrc you may only get one +line for the cmdline. (Christian Robinson) Invoke command_height() after the +GUI has started up. vim:tw=78:ts=8:ft=help:norl: diff --git a/src/eval.c b/src/eval.c index 27783792f0..b5b4b792a3 100644 --- a/src/eval.c +++ b/src/eval.c @@ -300,6 +300,7 @@ static void f_getcharmod __ARGS((VAR argvars, VAR retvar)); static void f_getcmdline __ARGS((VAR argvars, VAR retvar)); static void f_getcmdpos __ARGS((VAR argvars, VAR retvar)); static void f_getcwd __ARGS((VAR argvars, VAR retvar)); +static void f_getfontname __ARGS((VAR argvars, VAR retvar)); static void f_getfperm __ARGS((VAR argvars, VAR retvar)); static void f_getfsize __ARGS((VAR argvars, VAR retvar)); static void f_getftime __ARGS((VAR argvars, VAR retvar)); @@ -2864,6 +2865,7 @@ static struct fst {"getcmdline", 0, 0, f_getcmdline}, {"getcmdpos", 0, 0, f_getcmdpos}, {"getcwd", 0, 0, f_getcwd}, + {"getfontname", 0, 1, f_getfontname}, {"getfperm", 1, 1, f_getfperm}, {"getfsize", 1, 1, f_getfsize}, {"getftime", 1, 1, f_getftime}, @@ -4732,6 +4734,45 @@ f_getcwd(argvars, retvar) } /* + * "getfontname()" function + */ + static void +f_getfontname(argvars, retvar) + VAR argvars; + VAR retvar; +{ + retvar->var_type = VAR_STRING; + retvar->var_val.var_string = NULL; +#ifdef FEAT_GUI + if (gui.in_use) + { + GuiFont font; + char_u *name = NULL; + + if (argvars[0].var_type == VAR_UNKNOWN) + { + /* Get the "Normal" font. Either the name saved by + * hl_set_font_name() or from the font ID. */ + font = gui.norm_font; + name = hl_get_font_name(); + } + else + { + name = get_var_string(&argvars[0]); + if (STRCMP(name, "*") == 0) /* don't use font dialog */ + return; + font = gui_mch_get_font(name, FALSE); + if (font == NOFONT) + return; /* Invalid font name, return empty string. */ + } + retvar->var_val.var_string = gui_mch_get_fontname(font, name); + if (argvars[0].var_type != VAR_UNKNOWN) + gui_mch_free_font(font); + } +#endif +} + +/* * "getfperm({fname})" function */ static void diff --git a/src/gui_gtk_x11.c b/src/gui_gtk_x11.c index b67b6f2d21..34bbed5333 100644 --- a/src/gui_gtk_x11.c +++ b/src/gui_gtk_x11.c @@ -2722,7 +2722,7 @@ mainwin_screen_changed_cb(GtkWidget *widget, if (gui.norm_font != NULL) { - gui_mch_init_font(p_guifont, 0); + gui_mch_init_font(p_guifont, FALSE); gui_set_shellsize(FALSE, FALSE); } } @@ -4792,6 +4792,34 @@ gui_mch_get_font(char_u *name, int report_error) return font; } +/* + * Return the name of font "font" in allocated memory. + */ +/*ARGSUSED*/ + char_u * +gui_mch_get_fontname(GuiFont font, char_u *name) +{ +#ifdef HAVE_GTK2 + if (font != NOFONT) + { + char *name = pango_font_description_to_string(font); + + if (name != NULL) + { + char_u *s = vim_strsave((char_u *)name); + + g_free(name); + return s; + } + } +#else + /* Don't know how to get the name, return what we got. */ + if (name != NULL) + return vim_strsave(name); +#endif + return NULL; +} + #if !defined(HAVE_GTK2) || defined(PROTO) /* * Set the current text font. diff --git a/src/gui_x11.c b/src/gui_x11.c index e57bb9279f..90e6fbd946 100644 --- a/src/gui_x11.c +++ b/src/gui_x11.c @@ -1988,6 +1988,20 @@ gui_mch_get_font(name, giveErrorIfMissing) return (GuiFont)font; } +/* + * Return the name of font "font" in allocated memory. + * Don't know how to get the actual name, thus use the provided name. + */ + char_u * +gui_mch_get_fontname(font, name) + GuiFont font; + char_u *name; +{ + if (name == NULL) + return NULL; + return vim_strsave(name); +} + int gui_mch_adjust_charsize() { diff --git a/src/proto/gui_amiga.pro b/src/proto/gui_amiga.pro index ec70bc1028..2f8d2ac593 100644 --- a/src/proto/gui_amiga.pro +++ b/src/proto/gui_amiga.pro @@ -20,9 +20,11 @@ void gui_mch_set_scrollbar_thumb __ARGS((scrollbar_T *sb, long val, long size, l void gui_mch_set_scrollbar_pos __ARGS((scrollbar_T *sb, int x, int y, int w, int h)); void gui_mch_create_scrollbar __ARGS((scrollbar_T *sb, int orient)); void gui_mch_destroy_scrollbar __ARGS((scrollbar_T *sb)); +char_u *gui_mch_getfontname __ARGS((GuiFont font)); int gui_mch_init_font __ARGS((char_u *font_name, int fontset)); int gui_mch_adjust_charsize __ARGS((void)); GuiFont gui_mch_get_font __ARGS((char_u *name, int giveErrorIfMissing)); +char_u *gui_mch_get_fontname __ARGS((GuiFont font, char_u *name)); void gui_mch_set_font __ARGS((GuiFont font)); void gui_mch_free_font __ARGS((GuiFont font)); guicolor_T gui_mch_get_color __ARGS((char_u *name)); diff --git a/src/proto/gui_x11.pro b/src/proto/gui_x11.pro index 6524c265de..035c27f95e 100644 --- a/src/proto/gui_x11.pro +++ b/src/proto/gui_x11.pro @@ -15,6 +15,7 @@ void gui_mch_set_shellsize __ARGS((int width, int height, int min_width, int min void gui_mch_get_screen_dimensions __ARGS((int *screen_w, int *screen_h)); int gui_mch_init_font __ARGS((char_u *font_name, int do_fontset)); GuiFont gui_mch_get_font __ARGS((char_u *name, int giveErrorIfMissing)); +char_u *gui_mch_get_fontname __ARGS((GuiFont font, char_u *name)); int gui_mch_adjust_charsize __ARGS((void)); void gui_mch_set_font __ARGS((GuiFont font)); void gui_mch_set_fontset __ARGS((GuiFontset fontset)); @@ -177,11 +177,11 @@ ui_inchar(buf, maxlen, wtime, tb_change_cnt) else # endif { - if (wtime == -1) - handle_sighup(SIGHUP_UNBLOCK); /* allow SIGHUP to kill us */ + if (wtime == -1 || wtime > 100L) + (void)handle_signal(SIGNAL_UNBLOCK); /* allow signals to kill us */ retval = mch_inchar(buf, maxlen, wtime, tb_change_cnt); - if (wtime == -1) - handle_sighup(SIGHUP_BLOCK); /* block SIGHUP */ + if (wtime == -1 || wtime > 100L) + (void)handle_signal(SIGNAL_BLOCK); /* block SIGHUP et al. */ } #endif |