diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/GvimExt/GvimExt.reg | 4 | ||||
-rw-r--r-- | src/Makefile | 2 | ||||
-rw-r--r-- | src/feature.h | 3 | ||||
-rw-r--r-- | src/gui.c | 14 | ||||
-rw-r--r-- | src/gui.h | 4 | ||||
-rw-r--r-- | src/gui_mac.icns | bin | 38515 -> 37818 bytes | |||
-rw-r--r-- | src/gui_w32.c | 51 | ||||
-rw-r--r-- | src/gui_w48.c | 110 | ||||
-rw-r--r-- | src/message.c | 7 | ||||
-rw-r--r-- | src/misc1.c | 8 | ||||
-rw-r--r-- | src/option.c | 13 | ||||
-rw-r--r-- | src/proto/gui_w16.pro | 4 | ||||
-rw-r--r-- | src/proto/gui_w32.pro | 4 | ||||
-rw-r--r-- | src/spell.c | 3 | ||||
-rw-r--r-- | src/undo.c | 2 | ||||
-rw-r--r-- | src/version.h | 16 |
16 files changed, 223 insertions, 22 deletions
diff --git a/src/GvimExt/GvimExt.reg b/src/GvimExt/GvimExt.reg index 604e91160..b59234564 100644 --- a/src/GvimExt/GvimExt.reg +++ b/src/GvimExt/GvimExt.reg @@ -15,6 +15,6 @@ REGEDIT4 [HKEY_LOCAL_MACHINE\Software\Vim\Gvim] "path"="gvim.exe" -[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\Vim 7.0b] - "DisplayName"="Vim 7.0b: Edit with Vim popup menu entry" +[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\Vim 7.0c] + "DisplayName"="Vim 7.0c: Edit with Vim popup menu entry" "UninstallString"="uninstal.exe" diff --git a/src/Makefile b/src/Makefile index 5ac4cee3c..15d954d54 100644 --- a/src/Makefile +++ b/src/Makefile @@ -880,7 +880,7 @@ MAN1DIR = /man1 ### Vim version (adjusted by a script) VIMMAJOR = 7 -VIMMINOR = 0b +VIMMINOR = 0c ### Location of Vim files (should not need to be changed, and {{{1 ### some things might not work when they are changed!) diff --git a/src/feature.h b/src/feature.h index a92fedd96..5d395d737 100644 --- a/src/feature.h +++ b/src/feature.h @@ -753,7 +753,8 @@ /* * GUI tabline */ -#if defined(FEAT_GUI_GTK) && defined(FEAT_WINDOWS) +#if defined(FEAT_WINDOWS) && (defined(FEAT_GUI_GTK) \ + || (defined(FEAT_GUI_MSWIN) && WINVER > 0x0400)) # define FEAT_GUI_TABLINE #endif @@ -1142,6 +1142,11 @@ gui_position_components(total_width) text_area_y = TOOLBAR_BUTTON_HEIGHT + TOOLBAR_BORDER_HEIGHT; #endif +#if defined(FEAT_GUI_TABLINE) && defined(FEAT_GUI_MSWIN) + if (gui_has_tabline()) + text_area_y += TABLINE_HEIGHT; +#endif + #if defined(FEAT_TOOLBAR) && (defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA)) if (vim_strchr(p_go, GO_TOOLBAR) != NULL) { @@ -1223,6 +1228,10 @@ gui_get_base_height() base_height += gui.toolbar_height; # endif # endif +# if defined(FEAT_GUI_TABLINE) && defined(FEAT_GUI_MSWIN) + if (gui_has_tabline()) + base_height += TABLINE_HEIGHT; +# endif # ifdef FEAT_FOOTER if (vim_strchr(p_go, GO_FOOTER) != NULL) base_height += gui.footer_height; @@ -3924,6 +3933,11 @@ gui_update_scrollbars(force) # endif #endif +#if defined(FEAT_GUI_TABLINE) && defined(FEAT_GUI_MSWIN) + if (gui_has_tabline()) + y += TABLINE_HEIGHT; +#endif + #ifdef FEAT_WINDOWS if (wp->w_winrow == 0) #endif @@ -158,6 +158,10 @@ #endif #define TOOLBAR_BORDER_HEIGHT 12 /* room above+below buttons for MSWindows */ +#ifdef FEAT_GUI_MSWIN +# define TABLINE_HEIGHT 24 +#endif + #if defined(NO_CONSOLE) || defined(FEAT_GUI_GTK) || defined(FEAT_GUI_X11) # define NO_CONSOLE_INPUT /* use no_console_input() to check if there is no console input possible */ diff --git a/src/gui_mac.icns b/src/gui_mac.icns Binary files differindex b65fa11d8..8405dc127 100644 --- a/src/gui_mac.icns +++ b/src/gui_mac.icns diff --git a/src/gui_w32.c b/src/gui_w32.c index 12d607146..b25f50db9 100644 --- a/src/gui_w32.c +++ b/src/gui_w32.c @@ -297,6 +297,10 @@ static void initialise_toolbar(void); static int get_toolbar_bitmap(vimmenu_T *menu); #endif +#ifdef FEAT_GUI_TABLINE +static void initialise_tabline(void); +#endif + #ifdef FEAT_MBYTE_IME static LRESULT _OnImeComposition(HWND hwnd, WPARAM dbcs, LPARAM param); static char_u *GetResultStr(HWND hwnd, int GCS, int *lenp); @@ -760,10 +764,11 @@ _WndProc( case WM_SETTINGCHANGE: return _OnSettingChange((UINT)wParam); -#ifdef FEAT_TOOLBAR +#if defined(FEAT_TOOLBAR) || defined(FEAT_GUI_TABLINE) case WM_NOTIFY: switch (((LPNMHDR) lParam)->code) { +# ifdef FEAT_TOOLBAR case TTN_NEEDTEXT: { LPTOOLTIPTEXT lpttt; @@ -785,7 +790,20 @@ _WndProc( } } break; +# endif +# ifdef FEAT_GUI_TABLINE + case TCN_SELCHANGE: + if (gui_mch_showing_tabline() + && ((LPNMHDR)lParam)->hwndFrom == s_tabhwnd) + send_tabline_event(TabCtrl_GetCurSel(s_tabhwnd) + 1); + break; +# endif default: +# ifdef FEAT_GUI_TABLINE + if (gui_mch_showing_tabline() + && ((LPNMHDR)lParam)->hwndFrom == s_tabhwnd) + return MyWindowProc(hwnd, uMsg, wParam, lParam); +# endif break; } break; @@ -831,6 +849,19 @@ _WndProc( result = MyWindowProc(hwnd, uMsg, wParam, lParam); if (result == HTCLIENT) { +#ifdef FEAT_GUI_TABLINE + if (gui_mch_showing_tabline()) + { + int yPos = GET_Y_LPARAM(lParam); + RECT rct; + + /* If the cursor is on the GUI tabline, don't process this + * event */ + GetWindowRect(s_textArea, &rct); + if (yPos < rct.top) + return result; + } +#endif gui_mch_get_winpos(&x, &y); xPos -= x; @@ -1280,6 +1311,12 @@ gui_mch_init(void) */ initialise_toolbar(); #endif +#ifdef FEAT_GUI_TABLINE + /* + * Create the tabline + */ + initialise_tabline(); +#endif #ifdef MSWIN_FIND_REPLACE /* * Initialise the dialog box stuff @@ -3884,6 +3921,18 @@ get_toolbar_bitmap(vimmenu_T *menu) } #endif +#if defined(FEAT_GUI_TABLINE) || defined(PROTO) + static void +initialise_tabline(void) +{ + InitCommonControls(); + + s_tabhwnd = CreateWindow(WC_TABCONTROL, "", WS_CHILD|TCS_FOCUSNEVER, + CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, + CW_USEDEFAULT, s_hwnd, NULL, s_hinst, NULL); +} +#endif + #if defined(FEAT_OLE) || defined(FEAT_EVAL) || defined(PROTO) /* * Make the GUI window come to the foreground. diff --git a/src/gui_w48.c b/src/gui_w48.c index 35c215ac9..b586af84f 100644 --- a/src/gui_w48.c +++ b/src/gui_w48.c @@ -28,7 +28,7 @@ #ifndef __MINGW32__ # include <shellapi.h> #endif -#if defined(FEAT_TOOLBAR) || defined(FEAT_BEVAL) +#if defined(FEAT_TOOLBAR) || defined(FEAT_BEVAL) || defined(FEAT_GUI_TABLINE) # include <commctrl.h> #endif #ifdef WIN16 @@ -170,6 +170,11 @@ static HBRUSH s_brush = NULL; static HWND s_toolbarhwnd = NULL; #endif +#ifdef FEAT_GUI_TABLINE +static HWND s_tabhwnd = NULL; +static int showing_tabline = 0; +#endif + static WPARAM s_wParam = 0; static LPARAM s_lParam = 0; @@ -1105,6 +1110,20 @@ gui_mch_set_text_area_pos(int x, int y, int w, int h) SendMessage(s_toolbarhwnd, WM_SIZE, (WPARAM)0, (LPARAM)(w + ((long)(TOOLBAR_BUTTON_HEIGHT+8)<<16))); #endif +#if defined(FEAT_GUI_TABLINE) + if (showing_tabline) + { + int top = 0; + +#ifdef FEAT_TOOLBAR + if (vim_strchr(p_go, GO_TOOLBAR) != NULL) + top = TOOLBAR_BUTTON_HEIGHT + TOOLBAR_BORDER_HEIGHT; +#endif + + MoveWindow(s_tabhwnd, 0, top, w, TABLINE_HEIGHT, TRUE); + } +#endif + /* When side scroll bar is unshown, the size of window will change. * then, the text area move left or right. thus client rect should be * forcely redraw. (Yasuhiro Matsumoto) */ @@ -2156,6 +2175,95 @@ gui_mch_show_toolbar(int showit) #endif +#if defined(FEAT_GUI_TABLINE) || defined(PROTO) +/* + * Show or hide the tabline. + */ + void +gui_mch_show_tabline(int showit) +{ + if (s_tabhwnd == NULL) + return; + + if (!showit != !showing_tabline) + { + if (showit) + ShowWindow(s_tabhwnd, SW_SHOW); + else + ShowWindow(s_tabhwnd, SW_HIDE); + showing_tabline = showit; + } +} + +/* + * Return TRUE when tabline is displayed. + */ + int +gui_mch_showing_tabline(void) +{ + return s_tabhwnd != NULL && showing_tabline; +} + +/* + * Update the labels of the tabline. + */ + void +gui_mch_update_tabline(void) +{ + tabpage_T *tp; + TCITEM tie; + int nr = 0; + int curtabidx = 0; + RECT rc; + + if (s_tabhwnd == NULL) + return; + + tie.mask = TCIF_TEXT; + tie.iImage = -1; + + /* Add a label for each tab page. They all contain the same text area. */ + for (tp = first_tabpage; tp != NULL; tp = tp->tp_next, ++nr) + { + if (tp == curtab) + curtabidx = nr; + + if (!TabCtrl_GetItemRect(s_tabhwnd, nr, &rc)) + { + /* Add the tab */ + tie.pszText = "-Empty-"; + TabCtrl_InsertItem(s_tabhwnd, nr, &tie); + } + + get_tabline_label(tp); + tie.pszText = NameBuff; + TabCtrl_SetItem(s_tabhwnd, nr, &tie); + } + + /* Remove any old labels. */ + while (TabCtrl_GetItemRect(s_tabhwnd, nr, &rc)) + TabCtrl_DeleteItem(s_tabhwnd, nr); + + if (TabCtrl_GetCurSel(s_tabhwnd) != curtabidx) + TabCtrl_SetCurSel(s_tabhwnd, curtabidx); +} + +/* + * Set the current tab to "nr". First tab is 1. + */ + void +gui_mch_set_curtab(nr) + int nr; +{ + if (s_tabhwnd == NULL) + return; + + if (TabCtrl_GetCurSel(s_tabhwnd) != nr) + TabCtrl_SetCurSel(s_tabhwnd, nr); +} + +#endif + /* * ":simalt" command. */ diff --git a/src/message.c b/src/message.c index d25d48501..481236b96 100644 --- a/src/message.c +++ b/src/message.c @@ -4167,8 +4167,13 @@ vim_snprintf(str, str_m, fmt, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) { /* memchr on HP does not like n > 2^31 !!! */ char *q = memchr(str_arg, '\0', +#if SIZEOF_INT <= 2 + precision +#else precision <= (size_t)0x7fffffffL ? precision - : (size_t)0x7fffffffL); + : (size_t)0x7fffffffL +#endif + ); str_arg_l = (q == NULL) ? precision : q - str_arg; } break; diff --git a/src/misc1.c b/src/misc1.c index 00921dc9b..162864282 100644 --- a/src/misc1.c +++ b/src/misc1.c @@ -3112,6 +3112,7 @@ get_number(colon, mouse_used) { int n = 0; int c; + int typed = 0; if (mouse_used != NULL) *mouse_used = FALSE; @@ -3134,11 +3135,16 @@ get_number(colon, mouse_used) { n = n * 10 + c - '0'; msg_putchar(c); + ++typed; } else if (c == K_DEL || c == K_KDEL || c == K_BS || c == Ctrl_H) { + if (typed > 0) + { + MSG_PUTS("\b \b"); + --typed; + } n /= 10; - MSG_PUTS("\b \b"); } #ifdef FEAT_MOUSE else if (mouse_used != NULL && c == K_LEFTMOUSE) diff --git a/src/option.c b/src/option.c index 4b669be72..e4195cf77 100644 --- a/src/option.c +++ b/src/option.c @@ -438,6 +438,16 @@ struct vimoption # define ISP_LATIN1 (char_u *)"@,161-255" #endif +/* The 16 bit MS-DOS version is low on space, make the string as short as + * possible when compiling with few features. */ +#if defined(FEAT_DIFF) || defined(FEAT_FOLDING) || defined(FEAT_SPELL) \ + || defined(FEAT_VERTSPLIT) || defined(FEAT_CLIPBOARD) \ + || defined(FEAT_INS_EXPAND) || defined(FEAT_SYN_HL) +# define HIGHLIGHT_INIT "8:SpecialKey,@:NonText,d:Directory,e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg,M:ModeMsg,n:LineNr,r:Question,s:StatusLine,S:StatusLineNC,c:VertSplit,t:Title,v:Visual,V:VisualNOS,w:WarningMsg,W:WildMenu,f:Folded,F:FoldColumn,A:DiffAdd,C:DiffChange,D:DiffDelete,T:DiffText,>:SignColumn,B:SpellBad,P:SpellCap,R:SpellRare,L:SpellLocal,+:Pmenu,=:PmenuSel,x:PmenuSbar,X:PmenuThumb,*:TabLine,#:TabLineSel,_:TabLineFill,!:CursorColumn,.:CursorLine" +#else +# define HIGHLIGHT_INIT "8:SpecialKey,@:NonText,d:Directory,e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg,M:ModeMsg,n:LineNr,r:Question,s:StatusLine,S:StatusLineNC,t:Title,v:Visual,w:WarningMsg,W:WildMenu,>:SignColumn,*:TabLine,#:TabLineSel,_:TabLineFill" +#endif + /* * options[] is initialized here. * The order of the options MUST be alphabetic for ":set all" and findoption(). @@ -1284,8 +1294,7 @@ static struct vimoption {(char_u *)FALSE, (char_u *)0L}}, {"highlight", "hl", P_STRING|P_VI_DEF|P_RCLR|P_COMMA|P_NODUP, (char_u *)&p_hl, PV_NONE, - {(char_u *)"8:SpecialKey,@:NonText,d:Directory,e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg,M:ModeMsg,n:LineNr,r:Question,s:StatusLine,S:StatusLineNC,c:VertSplit,t:Title,v:Visual,V:VisualNOS,w:WarningMsg,W:WildMenu,f:Folded,F:FoldColumn,A:DiffAdd,C:DiffChange,D:DiffDelete,T:DiffText,>:SignColumn,B:SpellBad,P:SpellCap,R:SpellRare,L:SpellLocal,+:Pmenu,=:PmenuSel,x:PmenuSbar,X:PmenuThumb,*:TabLine,#:TabLineSel,_:TabLineFill,!:CursorColumn,.:CursorLine", - (char_u *)0L}}, + {(char_u *)HIGHLIGHT_INIT, (char_u *)0L}}, {"history", "hi", P_NUM|P_VIM, (char_u *)&p_hi, PV_NONE, {(char_u *)0L, (char_u *)20L}}, diff --git a/src/proto/gui_w16.pro b/src/proto/gui_w16.pro index 4ca3ded53..6a22c3e9a 100644 --- a/src/proto/gui_w16.pro +++ b/src/proto/gui_w16.pro @@ -34,6 +34,10 @@ extern void gui_mch_draw_menubar __ARGS((void)); extern long_u gui_mch_get_rgb __ARGS((guicolor_T pixel)); extern void gui_mch_activate_window __ARGS((void)); extern void gui_mch_show_toolbar __ARGS((int showit)); +extern void gui_mch_show_tabline __ARGS((int showit)); +extern int gui_mch_showing_tabline __ARGS((void)); +extern void gui_mch_update_tabline __ARGS((void)); +extern void gui_mch_set_curtab __ARGS((int nr)); extern void ex_simalt __ARGS((exarg_T *eap)); extern void gui_mch_find_dialog __ARGS((exarg_T *eap)); extern void gui_mch_replace_dialog __ARGS((exarg_T *eap)); diff --git a/src/proto/gui_w32.pro b/src/proto/gui_w32.pro index 9e411565e..731636d1e 100644 --- a/src/proto/gui_w32.pro +++ b/src/proto/gui_w32.pro @@ -34,6 +34,10 @@ extern void gui_mch_draw_menubar __ARGS((void)); extern long_u gui_mch_get_rgb __ARGS((guicolor_T pixel)); extern void gui_mch_activate_window __ARGS((void)); extern void gui_mch_show_toolbar __ARGS((int showit)); +extern void gui_mch_show_tabline __ARGS((int showit)); +extern int gui_mch_showing_tabline __ARGS((void)); +extern void gui_mch_update_tabline __ARGS((void)); +extern void gui_mch_set_curtab __ARGS((int nr)); extern void ex_simalt __ARGS((exarg_T *eap)); extern void gui_mch_find_dialog __ARGS((exarg_T *eap)); extern void gui_mch_replace_dialog __ARGS((exarg_T *eap)); diff --git a/src/spell.c b/src/spell.c index c2bf58d01..32ce2b49d 100644 --- a/src/spell.c +++ b/src/spell.c @@ -4667,7 +4667,6 @@ struct affentry_S char_u *ae_flags; /* flags on the affix (can be NULL) */ char_u *ae_cond; /* condition (NULL for ".") */ regprog_T *ae_prog; /* regexp program for ae_cond or NULL */ - char_u ae_nocomp; /* word with affix not compoundable */ }; #ifdef FEAT_MBYTE @@ -5474,7 +5473,6 @@ spell_read_aff(spin, fname) && itemcnt >= 5) { affentry_T *aff_entry; - int nocomp = FALSE; int upper = FALSE; int lasti = 5; @@ -5492,7 +5490,6 @@ spell_read_aff(spin, fname) sizeof(affentry_T), TRUE); if (aff_entry == NULL) break; - aff_entry->ae_nocomp = nocomp; if (STRCMP(items[2], "0") != 0) aff_entry->ae_chop = getroom_save(spin, items[2]); diff --git a/src/undo.c b/src/undo.c index 8d23e7702..efbd4ccf4 100644 --- a/src/undo.c +++ b/src/undo.c @@ -1387,7 +1387,7 @@ u_add_time(buf, buflen, tt) if (time(NULL) - tt >= 100) { curtime = localtime(&tt); - (void)strftime((char *)buf, buflen, "%T", curtime); + (void)strftime((char *)buf, buflen, "%H:%M:%S", curtime); } else #endif diff --git a/src/version.h b/src/version.h index 965ee8362..ce5ff07de 100644 --- a/src/version.h +++ b/src/version.h @@ -19,9 +19,9 @@ #define VIM_VERSION_MINOR_STR "0" #define VIM_VERSION_100 (VIM_VERSION_MAJOR * 100 + VIM_VERSION_MINOR) -#define VIM_VERSION_BUILD 257 -#define VIM_VERSION_BUILD_BCD 0x101 -#define VIM_VERSION_BUILD_STR "257" +#define VIM_VERSION_BUILD 258 +#define VIM_VERSION_BUILD_BCD 0x102 +#define VIM_VERSION_BUILD_STR "258" #define VIM_VERSION_PATCHLEVEL 0 #define VIM_VERSION_PATCHLEVEL_STR "0" /* Used by MacOS port should be one of: development, alpha, beta, final */ @@ -33,8 +33,8 @@ * VIM_VERSION_MEDIUM is used for the startup-screen. * VIM_VERSION_LONG is used for the ":version" command and "Vim -h". */ -#define VIM_VERSION_NODOT "vim70b" -#define VIM_VERSION_SHORT "7.0b" -#define VIM_VERSION_MEDIUM "7.0b BETA" -#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0b BETA (2006 Mar 26)" -#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0b BETA (2006 Mar 26, compiled " +#define VIM_VERSION_NODOT "vim70c" +#define VIM_VERSION_SHORT "7.0c" +#define VIM_VERSION_MEDIUM "7.0c BETA" +#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0c BETA (2006 Mar 27)" +#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0c BETA (2006 Mar 27, compiled " |