diff options
author | Bram Moolenaar <Bram@vim.org> | 2006-04-09 21:54:49 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2006-04-09 21:54:49 +0000 |
commit | c6fe919573e82727a7de014daab122ffc5001854 (patch) | |
tree | 237b3cac7ceeee2c16d574a99f1c37e9bd94ea53 | |
parent | 61660eadced09491ef8ee0a7d4af73cc75fdc349 (diff) | |
download | vim-git-c6fe919573e82727a7de014daab122ffc5001854.tar.gz |
updated for version 7.0c13v7.0c13
-rw-r--r-- | runtime/colors/slate.vim | 13 | ||||
-rw-r--r-- | runtime/doc/change.txt | 5 | ||||
-rw-r--r-- | runtime/doc/eval.txt | 20 | ||||
-rw-r--r-- | runtime/doc/help.txt | 7 | ||||
-rw-r--r-- | runtime/doc/intro.txt | 8 | ||||
-rw-r--r-- | runtime/doc/options.txt | 8 | ||||
-rw-r--r-- | runtime/doc/tabpage.txt | 4 | ||||
-rw-r--r-- | runtime/doc/tags | 1 | ||||
-rw-r--r-- | runtime/doc/todo.txt | 9 | ||||
-rw-r--r-- | runtime/doc/usr_41.txt | 120 | ||||
-rw-r--r-- | runtime/doc/version7.txt | 5 | ||||
-rw-r--r-- | runtime/syntax/sisu.vim | 56 | ||||
-rw-r--r-- | src/gui.c | 21 | ||||
-rw-r--r-- | src/gui_gtk_x11.c | 9 | ||||
-rw-r--r-- | src/gui_motif.c | 109 | ||||
-rw-r--r-- | src/gui_w32.c | 12 | ||||
-rw-r--r-- | src/gui_w48.c | 10 | ||||
-rw-r--r-- | src/option.c | 2 | ||||
-rw-r--r-- | src/proto/gui.pro | 1 | ||||
-rw-r--r-- | src/proto/window.pro | 114 | ||||
-rw-r--r-- | src/structs.h | 2 | ||||
-rw-r--r-- | src/version.h | 6 | ||||
-rw-r--r-- | src/window.c | 29 |
23 files changed, 368 insertions, 203 deletions
diff --git a/runtime/colors/slate.vim b/runtime/colors/slate.vim index c091c7258..b948b602c 100644 --- a/runtime/colors/slate.vim +++ b/runtime/colors/slate.vim @@ -28,13 +28,14 @@ endif :hi Visual gui=none guifg=khaki guibg=olivedrab cterm=reverse :hi WarningMsg guifg=salmon ctermfg=1 :hi String guifg=SkyBlue ctermfg=darkcyan -:hi Comment guifg=DimGrey ctermfg=darkgrey +:hi Comment term=bold ctermfg=11 guifg=#80a0ff :hi Constant guifg=#ffa0a0 ctermfg=brown -:hi Special guifg=DarkKhaki ctermfg=brown -:hi Identifier guifg=salmon ctermfg=darkred -:hi Include guifg=darkred ctermfg=darkred -:hi PreProc guifg=olivedrab ctermfg=red -:hi Operator guifg=CornflowerBlue ctermfg=darkcyan +:hi Special guifg=green ctermfg=brown +:hi Identifier guifg=salmon ctermfg=red +:hi Include guifg=red ctermfg=red +:hi PreProc guifg=red guibg=white ctermfg=red +:hi Operator guifg=Red ctermfg=Red +":hi Operator guifg=CornflowerBlue ctermfg=darkcyan :hi Define guifg=gold gui=bold ctermfg=yellow :hi Type guifg=darkkhaki ctermfg=2 :hi Function guifg=navajowhite ctermfg=brown diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt index abb528ee1..4a321758e 100644 --- a/runtime/doc/change.txt +++ b/runtime/doc/change.txt @@ -1,4 +1,4 @@ -*change.txt* For Vim version 7.0c. Last change: 2006 Mar 16 +*change.txt* For Vim version 7.0c. Last change: 2006 Apr 09 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1542,6 +1542,9 @@ found here: |sort()|. < To sort on the text at virtual column 10 (thus ignoring the difference between tabs and spaces): > :sort /.*\%10v/ +< To sort on the first number in the line, no matter + what is in front of it: > + :sort /.*\ze\d/ < Note that using ":sort" with ":global" doesn't sort the matching lines, it's quite useless. diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 040007a15..711de353d 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 7.0c. Last change: 2006 Apr 06 +*eval.txt* For Vim version 7.0c. Last change: 2006 Apr 09 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1549,29 +1549,33 @@ eval( {string}) any evaluate {string} into its value eventhandler( ) Number TRUE if inside an event handler executable( {expr}) Number 1 if executable {expr} exists exists( {expr}) Number TRUE if {expr} exists +extend({expr1}, {expr2} [, {expr3}]) + List/Dict insert items of {expr2} into {expr1} expand( {expr}) String expand special keywords in {expr} filereadable( {file}) Number TRUE if {file} is a readable file +filewritable( {file}) Number TRUE if {file} is a writable file filter( {expr}, {string}) List/Dict remove items from {expr} where {string} is 0 finddir( {name}[, {path}[, {count}]]) - String Find directory {name} in {path} + String find directory {name} in {path} findfile( {name}[, {path}[, {count}]]) - String Find file {name} in {path} -filewritable( {file}) Number TRUE if {file} is a writable file + String find file {name} in {path} fnamemodify( {fname}, {mods}) String modify file name foldclosed( {lnum}) Number first line of fold at {lnum} if closed foldclosedend( {lnum}) Number last line of fold at {lnum} if closed foldlevel( {lnum}) Number fold level at {lnum} foldtext( ) String line displayed for closed fold +foldtextresult( {lnum}) String text for closed fold at {lnum} foreground( ) Number bring the Vim window to the foreground function( {name}) Funcref reference to function {name} +garbagecollect() none free memory, breaking cyclic references get( {list}, {idx} [, {def}]) any get item {idx} from {list} or {def} get( {dict}, {key} [, {def}]) any get item {key} from {dict} or {def} getbufline( {expr}, {lnum} [, {end}]) List lines {lnum} to {end} of buffer {expr} +getbufvar( {expr}, {varname}) any variable {varname} in buffer {expr} getchar( [expr]) Number get one character from the user getcharmod( ) Number modifiers for the last typed character -getbufvar( {expr}, {varname}) variable {varname} in buffer {expr} getcmdline() String return the current command-line getcmdpos() Number return cursor position in command-line getcmdtype() String return the current command-line type @@ -1590,7 +1594,7 @@ getreg( [{regname} [, 1]]) String contents of register getregtype( [{regname}]) String type of register getwinposx() Number X coord in pixels of GUI Vim window getwinposy() Number Y coord in pixels of GUI Vim window -getwinvar( {nr}, {varname}) variable {varname} in window {nr} +getwinvar( {nr}, {varname}) any variable {varname} in window {nr} glob( {expr}) String expand file wildcards in {expr} globpath( {path}, {expr}) String do glob({expr}) for all dirs in {path} has( {feature}) Number TRUE if feature {feature} supported @@ -1611,6 +1615,7 @@ index( {list}, {expr} [, {start} [, {ic}]]) input( {prompt} [, {text} [, {completion}]]) String get input from the user inputdialog( {p} [, {t} [, {c}]]) String like input() but in a GUI dialog +inputlist( {textlist}) Number let the user pick from a choice list inputrestore() Number restore typeahead inputsave() Number save and clear typeahead inputsecret( {prompt} [, {text}]) String like input() but hiding the text @@ -1689,6 +1694,7 @@ setcmdpos( {pos}) Number set cursor position in command-line setline( {lnum}, {line}) Number set line {lnum} to {line} setloclist( {nr}, {list}[, {action}]) Number modify location list using {list} +setpos( {expr}, {list}) none set the {expr} position to {list} setqflist( {list}[, {action}]) Number modify quickfix list using {list} setreg( {n}, {v}[, {opt}]) Number set register to value and type setwinvar( {nr}, {varname}, {val}) set {varname} in window {nr} to {val} @@ -2730,7 +2736,7 @@ getfontname([{name}]) *getfontname()* font name. If not then an empty string is returned. Otherwise the actual font name is returned, or {name} if the GUI does not support obtaining the real name. - Only works when the GUI is running, thus not you your vimrc or + Only works when the GUI is running, thus not in your vimrc or gvimrc file. Use the |GUIEnter| autocommand to use this function just after the GUI has started. Note that the GTK 2 GUI accepts any font name, thus checking diff --git a/runtime/doc/help.txt b/runtime/doc/help.txt index 229220f14..f6a9e2b20 100644 --- a/runtime/doc/help.txt +++ b/runtime/doc/help.txt @@ -171,6 +171,7 @@ Versions ~ |version4.txt| Differences between Vim version 3.0 and 4.x |version5.txt| Differences between Vim version 4.6 and 5.x |version6.txt| Differences between Vim version 5.7 and 6.x +|version7.txt| Differences between Vim version 6.4 and 7.x *sys-file-list* Remarks about specific systems ~ |os_390.txt| OS/390 Unix @@ -195,12 +196,6 @@ Standard plugins ~ |pi_zip.txt| Zip archive explorer LOCAL ADDITIONS: *local-additions* -|cecutil.txt| DrChip's Utilities Jun 11, 2004 -|example.txt| Example for a locally added help file -|matchit.txt| Extended "%" matching -|test.txt| Testing the hélp cömmånd nôw -|typecorr.txt| Plugin for correcting typing mistakes -|helpp.txt| Dummy line to avoid an error message ------------------------------------------------------------------------------ *bars* Bars example diff --git a/runtime/doc/intro.txt b/runtime/doc/intro.txt index e9fe36937..d23fe7c55 100644 --- a/runtime/doc/intro.txt +++ b/runtime/doc/intro.txt @@ -1,4 +1,4 @@ -*intro.txt* For Vim version 7.0c. Last change: 2005 Sep 01 +*intro.txt* For Vim version 7.0c. Last change: 2006 Apr 09 VIM REFERENCE MANUAL by Bram Moolenaar @@ -94,13 +94,15 @@ mention that. There are several mailing lists for Vim: <vim@vim.org> For discussions about using existing versions of Vim: Useful mappings, - questions, answers, where to get a specific version, etc. + questions, answers, where to get a specific version, etc. There are + quite a few people watching this list and answering questions, also + for beginners. Don't hesitate to ask your question here. <vim-dev@vim.org> *vim-dev* *vimdev* For discussions about changing Vim: New features, porting, patches, beta-test versions, etc. <vim-announce@vim.org> *vim-announce* Announcements about new versions of Vim; also for beta-test versions - and ports to different systems. + and ports to different systems. This is a read-only list. <vim-multibyte@vim.org> *vim-multibyte* For discussions about using and improving the multi-byte aspects of Vim. diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index b04bb5562..1c5f5def5 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 7.0c. Last change: 2006 Apr 05 +*options.txt* For Vim version 7.0c. Last change: 2006 Apr 09 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1442,6 +1442,8 @@ A jump table for the options with a short description can be found at |Q_op|. {not in Vi} Number of screen lines to use for the command-line. Helps avoiding |hit-enter| prompts. + The value of this option is stored with the tab page, so that each tab + page can have a different value. *'cmdwinheight'* *'cwh'* 'cmdwinheight' 'cwh' number (default 7) @@ -6522,8 +6524,8 @@ A jump table for the options with a short description can be found at |Q_op|. 'tagrelative' 'tr' boolean (Vim default: on, Vi default: off) global {not in Vi} - If on and using a tag file in another directory, file names in that - tag file are relative to the directory where the tag file is. + If on and using a tags file in another directory, file names in that + tags file are relative to the directory where the tags file is. NOTE: This option is set to the Vi default value when 'compatible' is set and to the Vim default value when 'compatible' is reset. diff --git a/runtime/doc/tabpage.txt b/runtime/doc/tabpage.txt index 5439fd4db..55f12d9cc 100644 --- a/runtime/doc/tabpage.txt +++ b/runtime/doc/tabpage.txt @@ -1,4 +1,4 @@ -*tabpage.txt* For Vim version 7.0c. Last change: 2006 Apr 06 +*tabpage.txt* For Vim version 7.0c. Last change: 2006 Apr 09 VIM REFERENCE MANUAL by Bram Moolenaar @@ -205,6 +205,8 @@ files. Variables local to a tab page start with "t:". |tabpage-variable| +Currently there is only one option local to a tab page: 'cmdheight'. + The TabLeave and TabEnter autocommand events can be used to do something when switching from one tab page to another. The exact order depends on what you are doing. When creating a new tab page this works as if you create a new diff --git a/runtime/doc/tags b/runtime/doc/tags index 3daf3ba4d..4134a1da1 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -5611,6 +5611,7 @@ hebrew hebrew.txt /*hebrew* hebrew.txt hebrew.txt /*hebrew.txt* help various.txt /*help* help-context help.txt /*help-context* +help-tags tags 1 help-translated various.txt /*help-translated* help-xterm-window various.txt /*help-xterm-window* help.txt help.txt /*help.txt* diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt index bf7f42881..8ddf52fa0 100644 --- a/runtime/doc/todo.txt +++ b/runtime/doc/todo.txt @@ -1,4 +1,4 @@ -*todo.txt* For Vim version 7.0c. Last change: 2006 Apr 07 +*todo.txt* For Vim version 7.0c. Last change: 2006 Apr 09 VIM REFERENCE MANUAL by Bram Moolenaar @@ -33,7 +33,7 @@ be worked on, but only if you sponsor Vim development. See |sponsor|. Handle postponed prefix with COMPOUNDPERMITFLAG or COMPOUNDFORBIDFLAG. WFP_COMPPERMIT and WFP_COMPFORBID -":mkspell" still takes too long in Hungarian dictionary. +":mkspell" still takes much too long in Hungarian dictionary. Use ~/tmp/hungarian*.txt to test dictionary with. @@ -1805,6 +1805,11 @@ Shared libraries: Tags: +9 With ":set tags=./tags,../tags" and a tag appears in both tags files it is + added twice. Requires figuring out the actual file name for each found + match. Remove tag_fname from the match and combine it with the fname in + the match (without expanding or other things that take time). When + 'tagrelative' is off tag_fname isn't needed at all. 7 Can CTRL-] (jump to tag) include a following "." and "->" to restrict the number of possible matches? Check tags file for an item that has members. (Flemming Madsen) diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt index 3ff134087..5b7fbb040 100644 --- a/runtime/doc/usr_41.txt +++ b/runtime/doc/usr_41.txt @@ -1,4 +1,4 @@ -*usr_41.txt* For Vim version 7.0c. Last change: 2006 Mar 24 +*usr_41.txt* For Vim version 7.0c. Last change: 2006 Apr 09 VIM USER MANUAL - by Bram Moolenaar @@ -577,15 +577,19 @@ used for. You can find an alphabetical list here: |functions|. Use CTRL-] on the function name to jump to detailed help on it. String manipulation: - char2nr() get ASCII value of a character nr2char() get a character by its ASCII value + char2nr() get ASCII value of a character + str2nr() convert a string to a number + printf() format a string according to % items escape() escape characters in a string with a '\' + tr() translate characters from one set to another strtrans() translate a string to make it printable tolower() turn a string to lowercase toupper() turn a string to uppercase match() position where a pattern matches in a string matchend() position where a pattern match ends in a string matchstr() match of a pattern in a string + matchlist() like matchstr() and also return submatches stridx() first index of a short string in a long string strridx() last index of a short string in a long string strlen() length of a string @@ -594,6 +598,9 @@ String manipulation: strpart() get part of a string expand() expand special keywords iconv() convert text from one encoding to another + byteidx() byte index of a character in a string + repeat() repeat a string multiple times + eval() evaluate a string expression List manipulation: get() get an item without error for wrong index @@ -611,12 +618,14 @@ List manipulation: reverse() reverse the order of a List split() split a String into a List join() join List items into a String + range() return a List with a sequence of numbers string() String representation of a List call() call a function with List as arguments index() index of a value in a List max() maximum value in a List min() minimum value in a List count() count number of times a value appears in a List + repeat() repeat a List multiple times Dictionary manipulation: get() get an entry without an error for a wrong key @@ -637,15 +646,30 @@ Dictionary manipulation: min() minimum value in a Dictionary count() count number of times a value appears -Working with text in the current buffer: - byte2line() get line number at a specific byte count - line2byte() byte count at a specific line +Variables: + type() type of a variable + islocked() check if a variable is locked + function() get a Funcref for a function name + getbufvar() get a variable value from a specific buffer + setbufvar() set a variable in a specific buffer + getwinvar() get a variable value from a specific window + setwinvar() set a variable in a specific window + garbagecollect() possibly free memory + +Cursor and mark position: col() column number of the cursor or a mark virtcol() screen column of the cursor or a mark line() line number of the cursor or mark wincol() window column number of the cursor winline() window line number of the cursor cursor() position the cursor at a line/column + getpos() get position of cursor, mark, etc. + setpos() set position of cursor, mark, etc. + byte2line() get line number at a specific byte count + line2byte() byte count at a specific line + diff_filler() get the number of filler lines above a line + +Working with text in the current buffer: getline() get a line or list of lines from the buffer setline() replace a line in the buffer append() append line or list of lines in the buffer @@ -658,24 +682,27 @@ Working with text in the current buffer: searchpos() find a match for a pattern searchpair() find the other end of a start/skip/end searchpairpos() find the other end of a start/skip/end + searchdecl() search for the declaration of a name System functions and manipulation of files: - browse() put up a file requester glob() expand wildcards globpath() expand wildcards in a number of directories + findfile() find a file in a list of directories + finddir() find a directory in a list of directories resolve() find out where a shortcut points to fnamemodify() modify a file name + pathshorten() shorten directory names in a path + simplify() simplify a path without changing its meaning executable() check if an executable program exists filereadable() check if a file can be read filewritable() check if a file can be written to - mkdir() create a new directory + getfperm() get the permissions of a file + getftype() get the kind of a file isdirectory() check if a directory exists - getcwd() get the current working directory getfsize() get the size of a file - getftime() get last modification time of a file - localtime() get current time - strftime() convert time to a string + getcwd() get the current working directory tempname() get the name of a temporary file + mkdir() create a new directory delete() delete a file rename() rename a file system() get the result of a shell command @@ -683,6 +710,13 @@ System functions and manipulation of files: readfile() read a file into a List of lines writefile() write a List of lines into a file +Date and Time: + getftime() get last modification time of a file + localtime() get current time in seconds + strftime() convert time to a string + reltime() get the current or elapsed time accurately + reltimestr() convert reltime() result to a string + Buffers, windows and the argument list: argc() number of entries in the argument list argidx() current position in the argument list @@ -692,27 +726,52 @@ Buffers, windows and the argument list: bufloaded() check if a buffer exists and is loaded bufname() get the name of a specific buffer bufnr() get the buffer number of a specific buffer + tabpagebuflist() return List of buffers in a tab page + tabpagenr() get the number of a tab page + tabpagewinnr() like winnr() for a specified tab page winnr() get the window number for the current window bufwinnr() get the window number of a specific buffer winbufnr() get the buffer number of a specific window getbufline() get a list of lines from the specified buffer - getbufvar() get a variable value from a specific buffer - setbufvar() set a variable in a specific buffer - getwinvar() get a variable value from a specific window - setwinvar() set a variable in a specific window + +Command line: + getcmdline() get the current command line + getcmdpos() get position of the cursor in the command line + setcmdpos() set position of the cursor in the command line + getcmdtype() return the current command-line type + +Quickfix and location lists: + getqflist() list of quickfix errors + setqflist() modify a quickfix list + getloclist() list of location list items + setloclist() modify a location list + +Insert mode completion: + complete() set found matches + complete_add() add to found matches + complete_check() check if completion should be aborted + pumvisible() check if the popup menu is displayed Folding: foldclosed() check for a closed fold at a specific line foldclosedend() like foldclosed() but return the last line foldlevel() check for the fold level at a specific line foldtext() generate the line displayed for a closed fold + foldtextresult() get the text displayed for a closed fold -Syntax highlighting: +Syntax and highlighting: hlexists() check if a highlight group exists hlID() get ID of a highlight group synID() get syntax ID at a specific position synIDattr() get a specific attribute of a syntax ID synIDtrans() get translated syntax ID + diff_hlID() get highlight ID for diff mode at a position + matcharg() get info about |:match| arguments + +Spelling: + spellbadword() locate badly spelled word at or after cursor + spellsuggest() return suggested spelling corrections + soundfold() return the sound-a-like equivalent of a word History: histadd() add an item to a history @@ -721,15 +780,23 @@ History: histnr() get highest index of a history list Interactive: + browse() put up a file requester + browsedir() put up a directory requester confirm() let the user make a choice getchar() get a character from the user getcharmod() get modifiers for the last typed character input() get a line from the user + inputlist() let the user pick an entry from a list inputsecret() get a line from the user without showing it inputdialog() get a line from the user in a dialog inputsave() save and clear typeahead inputrestore() restore typeahead +GUI: + getfontname() get name of current font being used + getwinposx() X position of the GUI Vim window + getwinposy() Y position of the GUI Vim window + Vim server: serverlist() return the list of server names remote_send() send command characters to a Vim server @@ -740,8 +807,14 @@ Vim server: foreground() move the Vim window to the foreground remote_foreground() move the Vim server window to the foreground +Window size and position: + winheight() get height of a specific window + winwidth() get width of a specific window + winrestcmd() return command to restore window sizes + winsaveview() get view of current window + winrestview() restore saved view of current window + Various: - type() type of a variable mode() get current editing mode visualmode() last visual mode used hasmapto() check if a mapping exists @@ -749,23 +822,20 @@ Various: maparg() get rhs of a mapping exists() check if a variable, function, etc. exists has() check if a feature is supported in Vim - getqflist() list of quickfix errors - getloclist() list of location list items + changenr() return number of most recent change cscope_connection() check if a cscope connection exists did_filetype() check if a FileType autocommand was used eventhandler() check if invoked by an event handler - getwinposx() X position of the GUI Vim window - getwinposy() Y position of the GUI Vim window - winheight() get height of a specific window - winwidth() get width of a specific window + libcall() call a function in an external library libcallnr() idem, returning a number + getreg() get contents of a register getregtype() get type of a register - setqflist() modify a quickfix list - setloclist() modify a location list setreg() set contents and type of a register + taglist() get list of matching tags + tagfiles() get a list of tags files ============================================================================== *41.7* Defining a function diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt index 1cac881cf..8bd9dad1f 100644 --- a/runtime/doc/version7.txt +++ b/runtime/doc/version7.txt @@ -1,4 +1,4 @@ -*version7.txt* For Vim version 7.0c. Last change: 2006 Apr 07 +*version7.txt* For Vim version 7.0c. Last change: 2006 Apr 09 VIM REFERENCE MANUAL by Bram Moolenaar @@ -2411,4 +2411,7 @@ needed on the spell file. glob('/dir/\$ABC/*') didn't work. +When using several tab pages and changing 'cmdheight' the display could become +messed up. Now store the value of 'cmdheight' separately for each tab page. + vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime/syntax/sisu.vim b/runtime/syntax/sisu.vim index d71aa22a3..166f50bad 100644 --- a/runtime/syntax/sisu.vim +++ b/runtime/syntax/sisu.vim @@ -9,9 +9,8 @@ elseif exists("b:current_syntax") finish else endif -"% 12 Errors? +"% 11 Errors? syn match sisu_error contains=sisu_contain,sisu_control,sisu_markpara,sisu_mark,sisu_content_alt,sisu_error_wspace "<![^ei]\S\+!>" -"% 11 Expression Substitution: and Backslash Notation "% 10 Markers: Endnote Identifiers, Pagebreaks etc.: if !exists("sisu_no_identifiers") syn match sisu_mark_endnote "\~^" @@ -19,20 +18,16 @@ if !exists("sisu_no_identifiers") syn match sisu_break "<br>\|<br />" syn match sisu_control "<p>\|</p>\|<p />\|<:p[bn]>" syn match sisu_html "<center>\|</center>" - syn match sisu_markpara "^_\([12]\*\?\|\*\)\s\+" - syn match sisu_markpara "#[ 1]\|_# " syn match sisu_marktail "[~-]#" syn match sisu_html "<td>\|<td \|<tr>\|</td>\|</tr>\|<table>\|<table \|</table>" syn match sisu_control "\"" - syn match sisu_underline "\(^\| \)_[a-zA-Z0-9]\+_\([ .,]\|$\)"he=e-1 + syn match sisu_underline "\(^\| \)_[a-zA-Z0-9]\+_\([ .,]\|$\)" + syn match sisu_number "[0-9a-f]\{32\}\|[0-9a-f]\{64\}" "metaverse specific syn match sisu_ocn "<\~\d\+;\w\d\+;\w\d\+>" - syn match sisu_digest "<[0-9a-f]\{32\}:[0-9a-f]\{32\}>\|<[0-9a-f]\{32\}>" - syn match sisu_digest "<[0-9a-f]\{64\}:[0-9a-f]\{64\}>\|<[0-9a-f]\{64\}>" syn match sisu_marktail "<\~#>" syn match sisu_markpara "<:i[12]>" syn match sisu_link " \*\~\S\+" - syn match sisu_action "^<<.\+" syn match sisu_action "^<:insert\d\+>" syn match sisu_contain "<:e>" endif @@ -46,24 +41,25 @@ syn match sisu_error "<a href\|</a>]" contains=sisu_error "% 7 Simple Enclosed Markup: " Simple Markup: "% header -syn region sisu_header contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break matchgroup=sisu_header start="0\~" end="$" +syn region sisu_header_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break matchgroup=sisu_header start="^0\~\(\S\+\|[^-]\)" end="$" "% headings -syn region sisu_heading contains=sisu_mark_endnote,sisu_content_endnote,sisu_marktail,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_ocn,sisu_digest,sisu_error,sisu_error_wspace,sisu_error_spell matchgroup=sisu_heading start="[1-8]\~[^-]" end="$" +syn region sisu_heading contains=sisu_mark_endnote,sisu_content_endnote,sisu_marktail,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_ocn,sisu_error,sisu_error_wspace,sisu_error_spell matchgroup=sisu_structure start="^[1-8]\~\(\S\+\|[^-]\)" end="$" "% grouped text syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_spell matchgroup=sisu_contain start="table{.\+" end="}table" syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_spell matchgroup=sisu_contain start="{t\~h}" end="$$" syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_spell matchgroup=sisu_contain start="^\(alt\|group\|poem\){" end="^}\(alt\|group\|poem\)" syn region sisu_content_alt contains=sisu_error matchgroup=sisu_contain start="^code{" end="^}code" "% endnotes -syn region sisu_content_endnote contains=sisu_digest,sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_error_spell,sisu_mark,sisu_break matchgroup=sisu_mark_endnote start="\~{" end="}\~" skip="\n" +syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_error_spell,sisu_mark,sisu_break matchgroup=sisu_mark_endnote start="\~{" end="}\~" skip="\n" syn region sisu_content_endnote contains=sisu_strikeout,sisu_number,sisu_control,sisu_link,sisu_identifier,sisu_error,sisu_error_wspace,sisu_error_spell,sisu_mark,sisu_break matchgroup=sisu_mark_endnote start="\^\~" end="\n\n" "% images -syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_control,sisu_error,sisu_error_spell matchgroup=sisu_link start="{" end="}\(\(http://\|\.\./\)\S\+\|image\)" oneline -"syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_spell matchgroup=sisu_link start="{" end="}\(\(http://\|\.\./\)\S\+\|image\)" oneline -"sisu_identifier fix -""syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_spell matchgroup=sisu_link start="{" end="}\(http\S\+\|image\)" oneline +syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_spell matchgroup=sisu_link start="{" end="}\(\(http://\|\.\./\)\S\+\|image\)" oneline +"% line operations +syn region sisu_link contains=sisu_error,sisu_error_wspace,sisu_error_spell matchgroup=sisu_action start="^<<\s*|[a-zA-Z0-9^._-]\+|@|[a-zA-Z0-9^._-]\+|"rs=s+2 end="$" +syn region sisu_control contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_error,sisu_error_wspace,sisu_error_spell matchgroup=sisu_control start="\(\(^\| \)!_ \|<:b>\)" end="$" +syn region sisu_normal contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_error,sisu_error_wspace,sisu_error_spell matchgroup=sisu_markpara start="^_\([12]\*\?\|\*\) " end="$" +syn region sisu_normal contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_error,sisu_error_wspace,sisu_error_spell matchgroup=sisu_markpara start="^\(#[ 1]\|_# \)" end="$" "% font face curly brackets -syn region sisu_control contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_error,sisu_error_spell matchgroup=sisu_control start="\(\(^\| \)!_ \|<:b>\)" end="$" syn region sisu_control contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_spell matchgroup=sisu_fontface start="\*{" end="}\*" syn region sisu_control contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_spell matchgroup=sisu_fontface start="!{" end="}!" syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_spell matchgroup=sisu_fontface start="_{" end="}_" @@ -72,23 +68,19 @@ syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_control,sisu_ syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_spell matchgroup=sisu_fontface start="\^{" end="}\^" syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_spell matchgroup=sisu_fontface start=",{" end="}," syn region sisu_strikeout contains=sisu_error matchgroup=sisu_fontface start="-{" end="}-" -syn region sisu_control contains=sisu_error matchgroup=sisu_content_alt start="<b>" end="</b>" oneline -syn region sisu_control contains=sisu_error matchgroup=sisu_content_alt start="<em>" end="</em>" oneline -syn region sisu_identifier contains=sisu_error matchgroup=sisu_content_alt start="<u>" end="</u>" oneline -syn region sisu_identifier contains=sisu_error matchgroup=sisu_content_alt start="<i>" end="</i>" oneline -syn region sisu_identifier contains=sisu_error matchgroup=sisu_content_alt start="<ins>" end="</ins>" skip="\\\\\|\\'" oneline -syn region sisu_identifier contains=sisu_error matchgroup=sisu_content_alt start="<del>" end="</del>" oneline syn region sisu_html contains=sisu_error contains=sisu_strikeout matchgroup=sisu_contain start="<a href=\".\{-}\">" end="</a>" oneline "% single words bold italicise etc. "workon syn region sisu_control contains=sisu_error matchgroup=sisu_control start="\([ (]\|^\)\*[^\|{\n\~\\]"hs=e-1 end="\*"he=e-0 skip="[a-zA-Z0-9']" oneline syn region sisu_identifier contains=sisu_error matchgroup=sisu_content_alt start="\([ ]\|^\)/[^{ \|\n\\]"hs=e-1 end="/\[ \.\]" skip="[a-zA-Z0-9']" oneline -"syn region sisu_underline matchgroup=sisu_underline start="\([ (]\|^\)_\([^ !*{\\][\w]\|[^12][^*]\)"hs=e-2 end="\(_\([ )\.]\|$\)\| \)"he=e-1 skip="[a-zA-Z0-9']" oneline "% html -syn region sisu_number contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_spell,sisu_mark matchgroup=sisu_contain start="<b>" end="</b>" skip="\n" -syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_spell,sisu_mark matchgroup=sisu_contain start="<i>" end="</i>" skip="\n" -syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_spell,sisu_mark matchgroup=sisu_contain start="<u>" end="</u>" skip="\n" +syn region sisu_number contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_spell,sisu_mark matchgroup=sisu_html start="<b>" end="</b>" skip="\n" oneline +syn region sisu_number contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_spell,sisu_mark matchgroup=sisu_html start="<em>" end="</em>" oneline +syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_spell,sisu_mark matchgroup=sisu_html start="<i>" end="</i>" skip="\n" oneline +syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_spell,sisu_mark matchgroup=sisu_html start="<u>" end="</u>" skip="\n" oneline +syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_spell,sisu_mark matchgroup=sisu_html start="<ins>" end="</ins>" skip="\\\\\|\\'" oneline +syn region sisu_identifier contains=sisu_error matchgroup=sisu_html start="<del>" end="</del>" oneline "% misc -syn region sisu_identifier contains=sisu_error matchgroup=sisu_content_alt start="\^[^{\|\n\\]" end="\^[ ,.;:'})\\\n]" skip="[a-zA-Z0-9']" oneline +syn region sisu_identifier contains=sisu_error matchgroup=sisu_fontface start="\^[^ {\|\n\\]"rs=s+1 end="\^[ ,.;:'})\\\n]" skip="[a-zA-Z0-9']" oneline "% metaverse syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_spell matchgroup=sisu_contain start="<:Table.\{-}>" end="<:Table[-_]end>" syn region sisu_content_alt contains=sisu_error matchgroup=sisu_contain start="<:code>" end="<:code[-_]end>" @@ -101,8 +93,7 @@ else " not Expensive syn region sisu_content_alt matchgroup=sisu_control start="^\s*def\s" matchgroup=NONE end="[?!]\|\>" skip="\.\|\(::\)" oneline endif " Expensive? "% 5 Headers: and Headings (Document Instructions) -"syn match sisu_header contains=sisu_error,sisu_error_wspace,sisu_mark "0\~.*" -syn match sisu_comment contains=sisu_error "^% .*\|^%% .*" +syn match sisu_comment "^% .*\|^%% .*" syn match sisu_control contains=sisu_error,sisu_error_wspace "4\~! \S\+" syn region sisu_markpara contains=sisu_error,sisu_error_wspace start="^=begin" end="^=end.*$" "% 4 Errors? @@ -110,6 +101,7 @@ syn match sisu_error_wspace contains=sisu_error_wspace "^\s\+" syn match sisu_error_wspace contains=sisu_error_wspace "\s\s\+" syn match sisu_error_wspace contains=sisu_error_wspace " \s*$" syn match sisu_error contains=sisu_error,sisu_error_wspace "[^ (}]http:\S\+" +syn match sisu_error contains=sisu_error_wspace "\t\+" syn match sisu_error contains=sisu_error "http:\S\+[}><]" syn match sisu_error contains=sisu_error "\([!*/_\+,^]\){\([^(\}\1)]\)\{-}\n\n" syn match sisu_error contains=sisu_error "^[\-\~]{[^{]\{-}\n\n" @@ -139,8 +131,11 @@ if version >= 508 || !exists("did_sisu_syntax_inits") command -nargs=+ HiLink hi def link <args> endif "% 1 Defined + HiLink sisu_normal Normal HiLink sisu_header PreProc + HiLink sisu_header_content Statement HiLink sisu_heading Title + HiLink sisu_structure Operator HiLink sisu_contain Include HiLink sisu_mark_endnote Include HiLink sisu_link NonText @@ -151,7 +146,6 @@ if version >= 508 || !exists("did_sisu_syntax_inits") HiLink sisu_content_endnote Special HiLink sisu_control Define HiLink sisu_ocn Include - HiLink sisu_digest Identifier HiLink sisu_number Number HiLink sisu_identifier Function HiLink sisu_underline Underlined @@ -165,8 +159,6 @@ if version >= 508 || !exists("did_sisu_syntax_inits") HiLink sisu_error_spell SpellErrors "line does nothing HiLink sisu_error_wspace Error HiLink sisu_error Error - "HiLink sisu_ Statement - "HiLink sisu_ Operator delcommand HiLink endif let b:current_syntax = "sisu" @@ -591,7 +591,7 @@ gui_init() /* When 'cmdheight' was set during startup it may not have taken * effect yet. */ if (p_ch != 1L) - command_height(-1L); + command_height(); return; } @@ -3497,6 +3497,25 @@ send_tabline_event(nr) return TRUE; } +/* + * Send a tabline menu event + */ + void +send_tabline_menu_event(tabidx, event) + int tabidx; + int event; +{ + char_u string[3]; + + string[0] = CSI; + string[1] = KS_TABMENU; + string[2] = KE_FILLER; + add_to_input_buf(string, 3); + string[0] = tabidx; + string[1] = (char_u)(long)event; + add_to_input_buf_csi(string, 2); +} + #endif /* diff --git a/src/gui_gtk_x11.c b/src/gui_gtk_x11.c index 832933a55..adb603a6c 100644 --- a/src/gui_gtk_x11.c +++ b/src/gui_gtk_x11.c @@ -3128,16 +3128,9 @@ static int clicked_page; /* page clicked in tab line */ static void tabline_menu_handler(GtkMenuItem *item, gpointer user_data) { - char_u string[3]; /* Add the string cmd into input buffer */ - string[0] = CSI; - string[1] = KS_TABMENU; - string[2] = KE_FILLER; - add_to_input_buf(string, 3); - string[0] = clicked_page; - string[1] = (char_u)(long)user_data; - add_to_input_buf_csi(string, 2); + send_tabline_menu_event(clicked_page, (int)(long)user_data); if (gtk_main_level() > 0) gtk_main_quit(); diff --git a/src/gui_motif.c b/src/gui_motif.c index a98c9d1c6..4caecc308 100644 --- a/src/gui_motif.c +++ b/src/gui_motif.c @@ -27,6 +27,7 @@ #include <Xm/ToggleBG.h> #include <Xm/SeparatoG.h> #include <Xm/Notebook.h> +#include <Xm/XmP.h> #include <X11/keysym.h> #include <X11/Xatom.h> @@ -151,19 +152,52 @@ tabline_button_cb(w, client_data, call_data) Widget w; XtPointer client_data, call_data; { - char_u string[3]; int cmd, tab_idx; XtVaGetValues(w, XmNuserData, &cmd, NULL); XtVaGetValues(tabLine_menu, XmNuserData, &tab_idx, NULL); - string[0] = CSI; - string[1] = KS_TABMENU; - string[2] = KE_FILLER; - add_to_input_buf(string, 3); - string[0] = tab_idx; - string[1] = (char_u)(long)cmd; - add_to_input_buf_csi(string, 2); + send_tabline_menu_event(tab_idx, cmd); +} + +/* + * Tabline single mouse click timeout handler + */ +/*ARGSUSED*/ + static void +motif_tabline_timer_cb (timed_out, interval_id) + XtPointer timed_out; + XtIntervalId *interval_id; +{ + *((int *)timed_out) = TRUE; +} + +/* + * check if the tabline tab scroller is clicked + */ + static int +tabline_scroller_clicked(scroller_name, event) + char *scroller_name; + XButtonPressedEvent *event; +{ + Widget tab_scroll_w; + Position pos_x, pos_y; + Dimension width, height; + + tab_scroll_w = XtNameToWidget(tabLine, scroller_name); + if (tab_scroll_w != (Widget)0) { + XtVaGetValues(tab_scroll_w, XmNx, &pos_x, XmNy, &pos_y, XmNwidth, + &width, XmNheight, &height, NULL); + if (pos_x >= 0) { + /* Tab scroller (next) is visible */ + if ((event->x >= pos_x) && (event->x <= pos_x + width) && + (event->y >= pos_y) && (event->y <= pos_y + height)) { + /* Clicked on the scroller */ + return TRUE; + } + } + } + return FALSE; } /*ARGSUSED*/ @@ -179,15 +213,47 @@ tabline_menu_cb(w, closure, e, continue_dispatch) int tab_idx = 0; WidgetList children; Cardinal numChildren; + static XtIntervalId timer = (XtIntervalId)0; + static int timed_out = TRUE; event = (XButtonPressedEvent *)e; + if (event->button == Button1) + { + if (tabline_scroller_clicked("MajorTabScrollerNext", event) + || tabline_scroller_clicked("MajorTabScrollerPrevious", event)) + return; + + if (!timed_out) + { + XtRemoveTimeOut(timer); + timed_out = TRUE; + + /* + * Double click on the tabline gutter, add a new tab + */ + send_tabline_menu_event(0, TABLINE_MENU_NEW); + } + else + { + /* + * Single click on the tabline gutter, start a timer to check + * for double clicks + */ + timer = XtAppAddTimeOut(app_context, (long_u)p_mouset, + motif_tabline_timer_cb, &timed_out); + timed_out = FALSE; + } + return; + } + if (event->button != Button3) return; if (event->subwindow != None) { tab_w = XtWindowToWidget(XtDisplay(w), event->subwindow); + /* LINTED: avoid warning: dubious operation on enum */ if (tab_w != (Widget)0 && XmIsPushButton(tab_w)) XtVaGetValues(tab_w, XmNpageNumber, &tab_idx, NULL); } @@ -3169,6 +3235,9 @@ gui_mch_show_tabline(int showit) { XtManageChild(tabLine); XtUnmanageChild(XtNameToWidget(tabLine, "PageScroller")); + XtUnmanageChild(XtNameToWidget(tabLine, "MinorTabScrollerNext")); + XtUnmanageChild(XtNameToWidget(tabLine, + "MinorTabScrollerPrevious")); #ifdef FEAT_MENU # ifdef FEAT_TOOLBAR if (XtIsManaged(XtParent(toolBar))) @@ -3237,6 +3306,8 @@ gui_mch_update_tabline(void) XmNotebookPageInfo page_info; XmNotebookPageStatus page_status; int last_page, tab_count; + XmString label_str; + char *label_cstr; if (tabLine == (Widget)0) return; @@ -3265,9 +3336,25 @@ gui_mch_update_tabline(void) tab = page_info.major_tab_widget; XtVaSetValues(tab, XmNpageNumber, nr, NULL); - get_tabline_label(tp); - XtVaSetValues(tab, XtVaTypedArg, XmNlabelString, XmRString, - NameBuff, STRLEN(NameBuff) + 1, NULL); + + /* + * Change the label text only if it is different + */ + XtVaGetValues(tab, XmNlabelString, &label_str, NULL); + if (XmStringGetLtoR(label_str, XmSTRING_DEFAULT_CHARSET, &label_cstr)) + { + get_tabline_label(tp); + if (STRCMP(label_cstr, NameBuff) != 0) { + XtVaSetValues(tab, XtVaTypedArg, XmNlabelString, XmRString, + NameBuff, STRLEN(NameBuff) + 1, NULL); + /* + * Force a resize of the tab label button + */ + XtUnmanageChild(tab); + XtManageChild(tab); + } + XtFree(label_cstr); + } } tab_count = nr - 1; diff --git a/src/gui_w32.c b/src/gui_w32.c index 0e6e85704..21b757b60 100644 --- a/src/gui_w32.c +++ b/src/gui_w32.c @@ -740,17 +740,7 @@ _WndProc( GetCursorPos((LPPOINT)&pt); GetWindowRect(s_textArea, &rect); if (pt.y < rect.top) - { - char_u string[3]; - - string[0] = CSI; - string[1] = KS_TABMENU; - string[2] = KE_FILLER; - add_to_input_buf(string, 3); - string[0] = 0; - string[1] = (char_u)(long)TABLINE_MENU_NEW; - add_to_input_buf_csi(string, 2); - } + send_tabline_menu_event(0, TABLINE_MENU_NEW); } return MyWindowProc(hwnd, uMsg, wParam, lParam); } diff --git a/src/gui_w48.c b/src/gui_w48.c index b940a2735..7592c7f71 100644 --- a/src/gui_w48.c +++ b/src/gui_w48.c @@ -1120,6 +1120,7 @@ gui_mch_set_text_area_pos(int x, int y, int w, int h) if (showing_tabline) { int top = 0; + RECT rect; #ifdef FEAT_TOOLBAR if (vim_strchr(p_go, GO_TOOLBAR) != NULL) @@ -2191,7 +2192,6 @@ show_tabline_popup_menu(void) MENUITEMINFO minfo; long rval; POINT pt; - char_u string[3]; tab_pmenu = CreatePopupMenu(); if (tab_pmenu == NULL) @@ -2236,13 +2236,7 @@ show_tabline_popup_menu(void) else idx += 1; - string[0] = CSI; - string[1] = KS_TABMENU; - string[2] = KE_FILLER; - add_to_input_buf(string, 3); - string[0] = idx; - string[1] = (char_u)(long)rval; - add_to_input_buf_csi(string, 2); + send_tabline_menu_event(idx, (int)rval); } } diff --git a/src/option.c b/src/option.c index f809a736d..8ed4f3469 100644 --- a/src/option.c +++ b/src/option.c @@ -7743,7 +7743,7 @@ set_num_option(opt_idx, varp, value, errbuf, errbuflen, opt_flags) && !gui.starting #endif ) - command_height(old_value); + command_height(); } /* when 'updatecount' changes from zero to non-zero, open swap files */ diff --git a/src/proto/gui.pro b/src/proto/gui.pro index b926eb0bd..7105a6f83 100644 --- a/src/proto/gui.pro +++ b/src/proto/gui.pro @@ -38,6 +38,7 @@ extern int gui_use_tabline __ARGS((void)); extern void gui_update_tabline __ARGS((void)); extern void get_tabline_label __ARGS((tabpage_T *tp)); extern int send_tabline_event __ARGS((int nr)); +extern void send_tabline_menu_event __ARGS((int tabidx, int event)); extern void gui_remove_scrollbars __ARGS((void)); extern void gui_create_scrollbar __ARGS((scrollbar_T *sb, int type, win_T *wp)); extern scrollbar_T *gui_find_scrollbar __ARGS((long ident)); diff --git a/src/proto/window.pro b/src/proto/window.pro index 362f00a45..f0ca77bba 100644 --- a/src/proto/window.pro +++ b/src/proto/window.pro @@ -1,59 +1,59 @@ /* window.c */ -extern void do_window __ARGS((int nchar, long Prenum, int xchar)); -extern int win_split __ARGS((int size, int flags)); -extern int win_valid __ARGS((win_T *win)); -extern int win_count __ARGS((void)); -extern int make_windows __ARGS((int count, int vertical)); -extern void win_move_after __ARGS((win_T *win1, win_T *win2)); -extern void win_equal __ARGS((win_T *next_curwin, int current, int dir)); -extern void close_windows __ARGS((buf_T *buf, int keep_curwin)); -extern void win_close __ARGS((win_T *win, int free_buf)); -extern void win_close_othertab __ARGS((win_T *win, int free_buf, tabpage_T *tp)); -extern void win_free_all __ARGS((void)); -extern void close_others __ARGS((int message, int forceit)); -extern void curwin_init __ARGS((void)); -extern int win_alloc_first __ARGS((void)); -extern void win_init_size __ARGS((void)); -extern int win_new_tabpage __ARGS((int after)); -extern int may_open_tabpage __ARGS((void)); -extern int make_tabpages __ARGS((int maxcount)); -extern int valid_tabpage __ARGS((tabpage_T *tpc)); -extern tabpage_T *find_tabpage __ARGS((int n)); -extern int tabpage_index __ARGS((tabpage_T *ftp)); -extern void goto_tabpage __ARGS((int n)); -extern void goto_tabpage_tp __ARGS((tabpage_T *tp)); -extern void tabpage_move __ARGS((int nr)); -extern void win_goto __ARGS((win_T *wp)); -extern win_T *win_find_nr __ARGS((int winnr)); -extern void win_enter __ARGS((win_T *wp, int undo_sync)); -extern win_T *buf_jump_open_win __ARGS((buf_T *buf)); -extern int win_alloc_lines __ARGS((win_T *wp)); -extern void win_free_lsize __ARGS((win_T *wp)); -extern void shell_new_rows __ARGS((void)); -extern void shell_new_columns __ARGS((void)); -extern void win_size_save __ARGS((garray_T *gap)); -extern void win_size_restore __ARGS((garray_T *gap)); -extern int win_comp_pos __ARGS((void)); -extern void win_setheight __ARGS((int height)); -extern void win_setheight_win __ARGS((int height, win_T *win)); -extern void win_setwidth __ARGS((int width)); -extern void win_setwidth_win __ARGS((int width, win_T *wp)); -extern void win_setminheight __ARGS((void)); -extern void win_drag_status_line __ARGS((win_T *dragwin, int offset)); -extern void win_drag_vsep_line __ARGS((win_T *dragwin, int offset)); -extern void win_comp_scroll __ARGS((win_T *wp)); -extern void command_height __ARGS((long old_p_ch)); -extern void last_status __ARGS((int morewin)); -extern int tabline_height __ARGS((void)); -extern char_u *grab_file_name __ARGS((long count, linenr_T *file_lnum)); -extern char_u *file_name_at_cursor __ARGS((int options, long count, linenr_T *file_lnum)); -extern char_u *file_name_in_line __ARGS((char_u *line, int col, int options, long count, char_u *rel_fname, linenr_T *file_lnum)); -extern char_u *find_file_name_in_path __ARGS((char_u *ptr, int len, int options, long count, char_u *rel_fname)); -extern int path_with_url __ARGS((char_u *fname)); -extern int vim_isAbsName __ARGS((char_u *name)); -extern int vim_FullName __ARGS((char_u *fname, char_u *buf, int len, int force)); -extern int min_rows __ARGS((void)); -extern int only_one_window __ARGS((void)); -extern void check_lnums __ARGS((int do_curwin)); -extern int win_hasvertsplit __ARGS((void)); +void do_window __ARGS((int nchar, long Prenum, int xchar)); +int win_split __ARGS((int size, int flags)); +int win_valid __ARGS((win_T *win)); +int win_count __ARGS((void)); +int make_windows __ARGS((int count, int vertical)); +void win_move_after __ARGS((win_T *win1, win_T *win2)); +void win_equal __ARGS((win_T *next_curwin, int current, int dir)); +void close_windows __ARGS((buf_T *buf, int keep_curwin)); +void win_close __ARGS((win_T *win, int free_buf)); +void win_close_othertab __ARGS((win_T *win, int free_buf, tabpage_T *tp)); +void win_free_all __ARGS((void)); +void close_others __ARGS((int message, int forceit)); +void curwin_init __ARGS((void)); +int win_alloc_first __ARGS((void)); +void win_init_size __ARGS((void)); +int win_new_tabpage __ARGS((int after)); +int may_open_tabpage __ARGS((void)); +int make_tabpages __ARGS((int maxcount)); +int valid_tabpage __ARGS((tabpage_T *tpc)); +tabpage_T *find_tabpage __ARGS((int n)); +int tabpage_index __ARGS((tabpage_T *ftp)); +void goto_tabpage __ARGS((int n)); +void goto_tabpage_tp __ARGS((tabpage_T *tp)); +void tabpage_move __ARGS((int nr)); +void win_goto __ARGS((win_T *wp)); +win_T *win_find_nr __ARGS((int winnr)); +void win_enter __ARGS((win_T *wp, int undo_sync)); +win_T *buf_jump_open_win __ARGS((buf_T *buf)); +int win_alloc_lines __ARGS((win_T *wp)); +void win_free_lsize __ARGS((win_T *wp)); +void shell_new_rows __ARGS((void)); +void shell_new_columns __ARGS((void)); +void win_size_save __ARGS((garray_T *gap)); +void win_size_restore __ARGS((garray_T *gap)); +int win_comp_pos __ARGS((void)); +void win_setheight __ARGS((int height)); +void win_setheight_win __ARGS((int height, win_T *win)); +void win_setwidth __ARGS((int width)); +void win_setwidth_win __ARGS((int width, win_T *wp)); +void win_setminheight __ARGS((void)); +void win_drag_status_line __ARGS((win_T *dragwin, int offset)); +void win_drag_vsep_line __ARGS((win_T *dragwin, int offset)); +void win_comp_scroll __ARGS((win_T *wp)); +void command_height __ARGS((void)); +void last_status __ARGS((int morewin)); +int tabline_height __ARGS((void)); +char_u *grab_file_name __ARGS((long count, linenr_T *file_lnum)); +char_u *file_name_at_cursor __ARGS((int options, long count, linenr_T *file_lnum)); +char_u *file_name_in_line __ARGS((char_u *line, int col, int options, long count, char_u *rel_fname, linenr_T *file_lnum)); +char_u *find_file_name_in_path __ARGS((char_u *ptr, int len, int options, long count, char_u *rel_fname)); +int path_with_url __ARGS((char_u *fname)); +int vim_isAbsName __ARGS((char_u *name)); +int vim_FullName __ARGS((char_u *fname, char_u *buf, int len, int force)); +int min_rows __ARGS((void)); +int only_one_window __ARGS((void)); +void check_lnums __ARGS((int do_curwin)); +int win_hasvertsplit __ARGS((void)); /* vim: set ft=c : */ diff --git a/src/structs.h b/src/structs.h index ce3bf9b1f..6710b7218 100644 --- a/src/structs.h +++ b/src/structs.h @@ -1625,6 +1625,8 @@ struct tabpage_S win_T *tp_lastwin; /* last window in this Tab page */ long tp_old_Rows; /* Rows when Tab page was left */ long tp_old_Columns; /* Columns when Tab page was left */ + long tp_ch_used; /* value of 'cmdheight' when frame size + was set */ #ifdef FEAT_GUI int tp_prev_which_scrollbars[3]; /* previous value of which_scrollbars */ diff --git a/src/version.h b/src/version.h index 993e7475c..a5c7e8869 100644 --- a/src/version.h +++ b/src/version.h @@ -35,6 +35,6 @@ */ #define VIM_VERSION_NODOT "vim70c" #define VIM_VERSION_SHORT "7.0c" -#define VIM_VERSION_MEDIUM "7.0c12 BETA" -#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0c12 BETA (2006 Apr 7)" -#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0c12 BETA (2006 Apr 7, compiled " +#define VIM_VERSION_MEDIUM "7.0c13 BETA" +#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0c13 BETA (2006 Apr 8)" +#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0c13 BETA (2006 Apr 8, compiled " diff --git a/src/window.c b/src/window.c index 26003f37a..5e9553b6e 100644 --- a/src/window.c +++ b/src/window.c @@ -85,8 +85,6 @@ static void win_new_height __ARGS((win_T *, int)); #define NOWIN (win_T *)-1 /* non-exisiting window */ #ifdef FEAT_WINDOWS -static long p_ch_used = 1L; /* value of 'cmdheight' when frame - size was set */ # define ROWS_AVAIL (Rows - p_ch - tabline_height()) #else # define ROWS_AVAIL (Rows - p_ch) @@ -3087,9 +3085,6 @@ win_alloc_firstwin(oldwin) topframe->fr_width = Columns; #endif topframe->fr_height = Rows - p_ch; -#ifdef FEAT_WINDOWS - p_ch_used = p_ch; -#endif topframe->fr_win = curwin; curwin->w_frame = topframe; @@ -3137,6 +3132,7 @@ alloc_tabpage() /* init t: variables */ init_var_dict(&tp->tp_vars, &tp->tp_winvar); #endif + tp->tp_ch_used = p_ch; } return tp; } @@ -3419,7 +3415,9 @@ enter_tabpage(tp, old_curbuf) /* The tabpage line may have appeared or disappeared, may need to resize * the frames for that. When the Vim window was resized need to update - * frame sizes too. */ + * frame sizes too. Use the stored value of p_ch, so that it can be + * different for each tab page. */ + p_ch = curtab->tp_ch_used; if (curtab->tp_old_Rows != Rows || (old_off != firstwin->w_winrow #ifdef FEAT_GUI_TABLINE && !gui_use_tabline() @@ -4215,7 +4213,7 @@ shell_new_rows() #endif compute_cmdrow(); #ifdef FEAT_WINDOWS - p_ch_used = p_ch; + curtab->tp_ch_used = p_ch; #endif #if 0 @@ -4961,6 +4959,7 @@ win_drag_status_line(dragwin, offset) p_ch = Rows - cmdline_row; if (p_ch < 1) p_ch = 1; + curtab->tp_ch_used = p_ch; redraw_all_later(SOME_VALID); showmode(); } @@ -5257,19 +5256,17 @@ win_comp_scroll(wp) * command_height: called whenever p_ch has been changed */ void -command_height(old_p_ch) - long old_p_ch; +command_height() { #ifdef FEAT_WINDOWS int h; frame_T *frp; + int old_p_ch = curtab->tp_ch_used; - /* When passed a negative value use the value of p_ch that we remembered. - * This is needed for when the GUI starts up, we can't be sure in what - * order things happen. */ - if (old_p_ch < 0) - old_p_ch = p_ch_used; - p_ch_used = p_ch; + /* Use the value of p_ch that we remembered. This is needed for when the + * GUI starts up, we can't be sure in what order things happen. And when + * p_ch was changed in another tab page. */ + curtab->tp_ch_used = p_ch; /* Find bottom frame with width of screen. */ frp = lastwin->w_frame; @@ -5328,8 +5325,8 @@ command_height(old_p_ch) if (frp != lastwin->w_frame) (void)win_comp_pos(); #else - win_setheight((int)(firstwin->w_height + old_p_ch - p_ch)); cmdline_row = Rows - p_ch; + win_setheight(cmdline_row); #endif } |