]> granicus.if.org Git - vim/commitdiff
updated for version 7.0026
authorBram Moolenaar <Bram@vim.org>
Wed, 29 Dec 2004 20:58:21 +0000 (20:58 +0000)
committerBram Moolenaar <Bram@vim.org>
Wed, 29 Dec 2004 20:58:21 +0000 (20:58 +0000)
38 files changed:
runtime/doc/change.txt
runtime/doc/editing.txt
runtime/doc/fold.txt
runtime/doc/gui.txt
runtime/doc/gui_x11.txt
runtime/doc/index.txt
runtime/doc/map.txt
runtime/doc/motion.txt
runtime/doc/pi_expl.txt
runtime/doc/tags
runtime/doc/usr_40.txt
runtime/doc/visual.txt
runtime/doc/windows.txt
runtime/indent/php.vim
runtime/lang/menu_zh.big5.vim
runtime/lang/menu_zh_tw.big5.vim
runtime/plugin/netrw.vim
src/Makefile
src/buffer.c
src/charset.c
src/configure.in
src/ex_docmd.c
src/ex_getln.c
src/feature.h
src/globals.h
src/gui.c
src/gui_kde.cc
src/gui_kde_wid.cc
src/gui_kde_wid.h
src/gui_kde_x11.cc
src/mbyte.c
src/os_unix.c
src/proto/buffer.pro
src/proto/gui_kde_x11.pro
src/quickfix.c
src/screen.c
src/version.h
src/vim.h

index 4ed7200ffc2361b313d0e20e832d4b210cef7746..77347fbb49c66fd4802ffea55b92f3fc1270ea3c 100644 (file)
@@ -1,4 +1,4 @@
-*change.txt*    For Vim version 7.0aa.  Last change: 2004 Dec 24
+*change.txt*    For Vim version 7.0aa.  Last change: 2004 Dec 29
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -985,10 +985,11 @@ Vim fills this register with text deleted with the "d", "c", "s", "x" commands
 or copied with the yank "y" command, regardless of whether or not a specific
 register was used (e.g.  "xdd).  This is like the unnamed register is pointing
 to the last used register.  An exception is the '_' register: "_dd does not
-store the deleted text in any register.  Vim uses the contents of this
-register for any put command (p or P) which does not specify a register.
-Additionally you can access it with the name '"'.  This means you have to type
-two double quotes.  Writing to the "" register writes to register "0.
+store the deleted text in any register.
+Vim uses the contents of the unnamed register for any put command (p or P)
+which does not specify a register.  Additionally you can access it with the
+name '"'.  This means you have to type two double quotes.  Writing to the ""
+register writes to register "0.
 {Vi: register contents are lost when changing files, no '"'}
 
 2. Numbered registers "0 to "9         *quote_number* *quote0* *quote1*
@@ -999,9 +1000,9 @@ unless the command specified another register with ["x].
    Numbered register 1 contains the text deleted by the most recent delete or
 change command, unless the command specified another register or the text is
 less than one line (the small delete register is used then).  An exception is
-made for these commands: |%|, |(|, |)|, |`|, |/|, |?|, |n|, |N|, |{| and |}|.
-Register "1 is always used then (this is Vi compatible).  The "- register is
-used as well if the delete is within a line.
+made for the delete operator with these movement commands: |%|, |(|, |)|, |`|,
+|/|, |?|, |n|, |N|, |{| and |}|.  Register "1 is always used then (this is Vi
+compatible).  The "- register is used as well if the delete is within a line.
    With each successive deletion or change, Vim shifts the previous contents
 of register 1 into register 2, 2 into 3, and so forth, losing the previous
 contents of register 9.
index 753e2ac235432f2c68e2071d30029bff1d918fa3..1921fbc66942f250a9c24a87950ab4b5f0109560 100644 (file)
@@ -1,4 +1,4 @@
-*editing.txt*   For Vim version 7.0aa.  Last change: 2004 Dec 16
+*editing.txt*   For Vim version 7.0aa.  Last change: 2004 Dec 29
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -46,7 +46,7 @@ However, the alternate file name is not changed when |:keepalt| is used.
                        name.  {not in Vi}
 
 All file names are remembered in the buffer list.  When you enter a file name,
-for editing (e.g., with ":e filename") or writing (e.g., with (:w file name"),
+for editing (e.g., with ":e filename") or writing (e.g., with ":w file name"),
 the file name is added to the list.  You can use the buffer list to remember
 which files you edited and to quickly switch from one file to another (e.g.,
 to copy text) with the |CTRL-^| command.  First type the number of the file
@@ -57,7 +57,7 @@ CTRL-G                or                              *CTRL-G* *:f* *:fi* *:file*
 :f[ile]                        Prints the current file name (as typed), the
                        cursor position (unless the 'ruler' option is set),
                        and the file status (readonly, modified, read errors,
-                       new file)).  See the 'shortmess' option about how tho
+                       new file).  See the 'shortmess' option about how tho
                        make this message shorter.  {Vi does not include
                        column number}
 
@@ -111,7 +111,7 @@ string, it is often displayed with HOME replaced with "~".  This was done to
 keep file names short.  When reading or writing files the full name is still
 used, the "~" is only used when displaying file names.  When replacing the
 file name would result in just "~", "~/" is used instead (to avoid confusion
-with 'backupext' set to "~").
+between options set to $HOME with 'backupext' set to "~").
 
 When writing the buffer, the default is to use the current file name.  Thus
 when you give the "ZZ" or ":wq" command, the original file will be
@@ -260,12 +260,12 @@ If you want to keep the changed buffer without saving it, switch on the
 
                                                        *:vi* *:visual*
 :vi[sual][!] [++opt] [+cmd] [file]
-                       When entered in Ex mode: Leave |Ex-mode|, go back to
+                       When used in Ex mode: Leave |Ex-mode|, go back to
                        Normal mode.  Otherwise same as |:edit|.
 
                                                        *:vie* *:view*
 :vie[w] [++opt] [+cmd] file
-                       When entered in Ex mode: Leave Ex mode, go back to
+                       When used in Ex mode: Leave |Ex mode|, go back to
                        Normal mode.  Otherwise same as |:edit|, but set
                        'readonly' option for this buffer.  {not in Vi}
 
@@ -666,7 +666,7 @@ list of the current window.
                        in Vi}
 
 :[count]wN[ext][!] [++opt] [+cmd] [file]               *:wN* *:wNext*
-:[count]wp[revous][!] [++opt] [+cmd] [file]            *:wp* *:wprevious*
+:[count]wp[revious][!] [++opt] [+cmd] [file]           *:wp* *:wprevious*
                        Same as :wnext, but go to previous file instead of
                        next.  {not in Vi}
 
@@ -1402,7 +1402,7 @@ options.  There are three different types of searching:
 
    '**' is more sophisticated:
       - It ONLY matches directories.
-      - It matches up to 30  directories deep, so you can use it to search an
+      - It matches up to 30 directories deep, so you can use it to search an
        entire directory tree
       - The maximum number of levels matched can be given by appending a number
        to '**'.
index 66444395d0bac75ac791fc42a17c0570d484e449..2aadd766dd220f1e70ec1f12853489da17e4f87f 100644 (file)
@@ -1,4 +1,4 @@
-*fold.txt*      For Vim version 7.0aa.  Last change: 2004 Oct 15
+*fold.txt*      For Vim version 7.0aa.  Last change: 2004 Dec 29
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -279,7 +279,7 @@ zF          Create a fold for N lines.  Works like "zf".
                Create a fold for the lines in {range}.  Works like "zf".
 
                                                        *zd* *E351*
-zd             Delete one fold at the cursor.  When the cursor is on folded
+zd             Delete one fold at the cursor.  When the cursor is on folded
                line, that fold is deleted.  Nested folds are moved one level
                up.  In Visual mode all folds (partially) in the selected area
                are deleted.  Careful: This easily deletes more folds than you
@@ -457,7 +457,7 @@ FOLDLEVEL                                           *fold-foldlevel*
 
 'foldlevel' is a number option: The higher the more folded regions are open.
 When 'foldlevel' is 0, all folds are closed.
-When 'foldlevel' is positive, some folds closed.
+When 'foldlevel' is positive, some folds are closed.
 When 'foldlevel' is very high, all folds are open.
 'foldlevel' is applied when it is changed.  After that manually folds can be
 opened and closed.
index b83acd6c22db30d5bdc4f22db1e84ecf1ed3f7e0..a7da5e0a04c398844e9a383532cb56d149d0bd11 100644 (file)
@@ -1,4 +1,4 @@
-*gui.txt*       For Vim version 7.0aa.  Last change: 2004 Jun 15
+*gui.txt*       For Vim version 7.0aa.  Last change: 2004 Dec 29
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -52,7 +52,8 @@ When the GUI starts up initializations are carried out, in this order:
        :let bmenu_max_pathlen = 50
 - If the "-U {gvimrc}" command-line option has been used when starting Vim,
   the {gvimrc} file will be read for initializations.  The following
-  initializations are skipped.
+  initializations are skipped.  When {gvimrc} is "NONE" no file will be read
+  for initializations.
 - For Unix and MS-Windows, if the system gvimrc exists, it is sourced.  The
   name of this file is normally "$VIM/gvimrc".  You can check this with
   ":version".  Also see |$VIM|.
index 8dee2a2bdd86fe51e2675ce46771ff7cb95d2962..2cbc4c9942c6a989584ebf26a38a895b40c170b2 100644 (file)
@@ -1,4 +1,4 @@
-*gui_x11.txt*   For Vim version 7.0aa.  Last change: 2004 Jul 02
+*gui_x11.txt*   For Vim version 7.0aa.  Last change: 2004 Dec 29
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -437,6 +437,9 @@ command line argument).
 ==============================================================================
 7. KDE version                                 *gui-kde* *kde* *KDE* *KVim*
 
+NOTE: The KDE version is still under development.  It is not recommended for
+daily work.
+
 The KDE version of Vim works with KDE 2.x and KDE 3.x.
 KVim (name code for gui-kde) does not use traditional X settings for its
 configuration.
index a0bc07b63f9e8acebf155e5c26af4cd181b6b9f0..a973c598e99cc8001d554535b5cdb9787b00de77 100644 (file)
@@ -1,4 +1,4 @@
-*index.txt*     For Vim version 7.0aa.  Last change: 2004 Dec 24
+*index.txt*     For Vim version 7.0aa.  Last change: 2004 Dec 29
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -807,6 +807,7 @@ tag         command       note action in Visual mode        ~
 ------------------------------------------------------------------------------
 |v_CTRL-\_CTRL-N| CTRL-\ CTRL-N           stop Visual mode
 |v_CTRL-\_CTRL-G| CTRL-\ CTRL-G           go to mode specified with 'insertmode'
+|v_CTRL-C|     CTRL-C             stop Visual mode
 |v_CTRL-G|     CTRL-G             toggle between Visual mode and Select mode
 |v_<BS>|       <BS>            2  Select mode: delete highlighted area
 |v_CTRL-H|     CTRL-H          2  same as <BS>
@@ -814,6 +815,7 @@ tag         command       note action in Visual mode        ~
                                   command
 |v_CTRL-V|     CTRL-V             make Visual mode blockwise or stop Visual
                                   mode
+|v_<Esc>|      <Esc>              stop Visual mode
 |v_CTRL-]|     CTRL-]             jump to highlighted tag
 |v_!|          !{filter}       2  filter the highlighted lines through the
                                   external command {filter}
index 8cd88549c7cc744b23198dfb0700d723db71edce..4921f1a7944f021449c4255372e846d3ba9f7dee 100644 (file)
@@ -1,4 +1,4 @@
-*map.txt*       For Vim version 7.0aa.  Last change: 2004 Dec 09
+*map.txt*       For Vim version 7.0aa.  Last change: 2004 Dec 29
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -613,7 +613,7 @@ Examples: ({CURSOR} is where you type a non-keyword character) >
 <              "#i{CURSOR}"      is expanded to "#include"
                ">#i{CURSOR}"     is not expanded
 >
-   :ab ;; <endofline>"
+   :ab ;; <endofline>
 <              "test;;"          is not expanded
                "test ;;"         is expanded to "test <endofline>"
 
@@ -735,7 +735,7 @@ You see:    ab esc ^V^V^[
        how it should appear in your .exrc file, if you choose to go that
        route.  The first ^V is there to quote the second ^V; the :ab
        command uses ^V as its own quote character, so you can include quoted
-       whitespace or the | character in the abbreviation.   The :ab command
+       whitespace or the | character in the abbreviation.  The :ab command
        doesn't do anything special with the ^[ character, so it doesn't need
        to be quoted.  (Although quoting isn't harmful; that's why typing 7
        [but not 8!] ^Vs works.)
@@ -750,7 +750,7 @@ Stored as:  esc     ^V^[
        Later, when the abbreviation is expanded because the user typed in
        the word "esc", the long form is subjected to the same type of
        ^V interpretation as keyboard input.  So the ^V protects the ^[
-       character from being interpreted as the "exit input-mode" character.
+       character from being interpreted as the "exit Insert mode" character.
        Instead, the ^[ is inserted into the text.
 
 Expands to: ^[
@@ -778,7 +778,7 @@ make it local to the script.  But when a mapping is executed from outside of
 the script, it doesn't know in which script the function was defined.  To
 avoid this problem, use "<SID>" instead of "s:".  The same translation is done
 as for mappings.  This makes it possible to define a call to the function in
-mapping.
+mapping.
 
 When a local function is executed, it runs in the context of the script it was
 defined in.  This means that new functions and mappings it defines can also
@@ -1054,7 +1054,7 @@ Examples >
         Replace <line1>-pu_|<line1>,<line2>d|r <args>|<line1>d
 
    " Count the number of lines in the range
-   :com! -range -nargs=0 Lines :echo <line2> - <line1> + 1 "lines"
+   :com! -range -nargs=0 Lines  echo <line2> - <line1> + 1 "lines"
 
    " Call a user function (example of <f-args>)
    :com -nargs=* Mycmd call Myfunc(<f-args>)
index 4f9405fef4317f19e050e3cb29ea9b82879b4931..d7f6cbc40ceaf96ca6b7cfc4953095f807ef80a8 100644 (file)
@@ -1,4 +1,4 @@
-*motion.txt*    For Vim version 7.0aa.  Last change: 2004 Nov 23
+*motion.txt*    For Vim version 7.0aa.  Last change: 2004 Dec 29
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -831,8 +831,8 @@ was made yet in the current file.
 
                                                        *'^* *`^*
 '^  `^                 To the position where the cursor was the last time
-                       when Insert mode was stopped  This is used by the |gi|
-                       command.  Not set when the |:keepjumps| command
+                       when Insert mode was stopped.  This is used by the
+                       |gi| command.  Not set when the |:keepjumps| command
                        modifier was used.  {not in Vi}
 
                                                        *'.* *`.*
index 4c962ffc836e532e61b790c390d5530696df1454..62ee2c3966a25adbda4b80a5e5b3b20f2bb3dd55 100644 (file)
@@ -1,4 +1,4 @@
-*pi_expl.txt*   For Vim version 7.0aa.  Last change: 2002 Nov 08
+*pi_expl.txt*   For Vim version 7.0aa.  Last change: 2004 Dec 29
 
 
                  VIM REFERENCE MANUAL    by M A Aziz Ahmed
@@ -65,7 +65,7 @@ splitting horizontally, use the variable: >
 The default for this is the setting of splitbelow at the time the plugin is
 loaded.
 
-To control where the windows goes relative to the explorer window when
+To control where the window goes relative to the explorer window when
 splitting vertically, use the variable: >
   let g:explSplitRight=1    " Put new window to the right of the explorer
   let g:explSplitRight=0    " Put new window to the left of the explorer
@@ -77,14 +77,14 @@ To use a different split method for the explorer window, use: >
                            " current window
   let g:explStartRight=0    " Put new explorer window to the left of the
                            " current window
-The default for this set to g:explSplitRight at the time the plugin is loaded.
+The default is the value of g:explSplitRight at the time the plugin is loaded.
 
 To use a different split method for the explorer window, use: >
   let g:explStartBelow=1    " Put new explorer window below the
                            " current window
   let g:explStartBelow=0    " Put new explorer window above the
                            " current window
-The default for this set to g:explSplitBelow at the time the plugin is loaded.
+The default is the value of g:explSplitBelow at the time the plugin is loaded.
 
 The start splits allow for the explorer window to be placed in a file browser
 type arrangement, where the directories are shown on the left and the contents
index 51755a18baf073ebb7652d81b5845fea9676efd6..1f6cefb0a618f78d9c7ea491e851f3ab467655f6 100644 (file)
@@ -2520,6 +2520,10 @@ $VIMRUNTIME      starting.txt    /*$VIMRUNTIME*
 :vi    editing.txt     /*:vi*
 :vie   editing.txt     /*:vie*
 :view  editing.txt     /*:view*
+:vim   quickfix.txt    /*:vim*
+:vimgrep       quickfix.txt    /*:vimgrep*
+:vimgrepa      quickfix.txt    /*:vimgrepa*
+:vimgrepadd    quickfix.txt    /*:vimgrepadd*
 :visual        editing.txt     /*:visual*
 :visual_example        visual.txt      /*:visual_example*
 :viu   various.txt     /*:viu*
@@ -4951,7 +4955,6 @@ 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*
@@ -5601,6 +5604,7 @@ new-user-manual   version6.txt    /*new-user-manual*
 new-utf-8      version6.txt    /*new-utf-8*
 new-vertsplit  version6.txt    /*new-vertsplit*
 new-vim-server version6.txt    /*new-vim-server*
+new-vimgrep    version7.txt    /*new-vimgrep*
 new-virtedit   version6.txt    /*new-virtedit*
 news   intro.txt       /*news*
 nextnonblank() eval.txt        /*nextnonblank()*
index 90664163e7ca025604c14466ca7557a6f2e32f42..afc3696ae536f4f8b6b5a46a5a581f200fdf3dfe 100644 (file)
@@ -1,4 +1,4 @@
-*usr_40.txt*   For Vim version 7.0aa.  Last change: 2004 Feb 13
+*usr_40.txt*   For Vim version 7.0aa.  Last change: 2004 Dec 29
 
                     VIM USER MANUAL - by Bram Moolenaar
 
@@ -60,7 +60,8 @@ It looks a lot like the mapping for <F2> in Normal mode, only the start is
 different.  The <F2> mapping for Normal mode is still there.  Thus you can map
 the same key differently for each mode.
    Notice that, although this mapping starts in Insert mode, it ends in Normal
-mode.  If you want it to continue in Insert mode, append a "a" to the mapping.
+mode.  If you want it to continue in Insert mode, append an "a" to the
+mapping.
 
 Here is an overview of map commands and in which mode they work:
 
index 4100578381238e086c289fd863ebc1ab7531f6df..0ff9dfe1b35427aeb1151485be53d1de28d066c9 100644 (file)
@@ -1,4 +1,4 @@
-*visual.txt*    For Vim version 7.0aa.  Last change: 2004 Jun 08
+*visual.txt*    For Vim version 7.0aa.  Last change: 2004 Dec 29
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -46,7 +46,7 @@ However, when the 'selection' option is set to "exclusive" and the cursor is
 after the Visual area, the character under the cursor is not included.
 
 With "v" the text before the start position and after the end position will
-not be highlighted.  However, All uppercase and non-alpha operators, except
+not be highlighted.  However, all uppercase and non-alpha operators, except
 "~" and "U", will work on whole lines anyway.  See the list of operators
 below.
 
@@ -139,6 +139,9 @@ extended to the rightmost column of the longest line.
 If you want to highlight exactly the same area as the last time, you can use
 "gv" |gv| |v_gv|.
 
+                                                       *v_<Esc>*
+<Esc>                  In Visual mode: Stop Visual mode.
+
                                                        *v_CTRL-C*
 CTRL-C                 In Visual mode: Stop Visual mode.  When insert mode is
                        pending (the mode message shows
@@ -176,7 +179,7 @@ When switching to another window on the same buffer, the cursor position in
 that window is adjusted, so that the same Visual area is still selected.  This
 is especially useful to view the start of the Visual area in one window, and
 the end in another.  You can then use <RightMouse> (or <S-LeftMouse> when
-'mousemodel' is "popup") to move either end of the Visual area.
+'mousemodel' is "popup") to drag either end of the Visual area.
 
 ==============================================================================
 4. Operating on the Visual area                                *visual-operators*
@@ -362,7 +365,7 @@ Note that special characters (like '.' and '*') will cause problems.
 Visual-block Examples                                  *blockwise-examples*
 With the following text, I will indicate the commands to produce the block and
 the results below. In all cases, the cursor begins on the 'a' in the first
-line if the test text.
+line of the test text.
 The following modeline settings are assumed ":ts=8:sw=4:".
 
 It will be helpful to
index 130b0f52ca85e00a23a7cc1944327f75916140f8..4ba6d4a268a2724292a441cf7b0bcbe375bee085 100644 (file)
@@ -1,4 +1,4 @@
-*windows.txt*   For Vim version 7.0aa.  Last change: 2004 Dec 21
+*windows.txt*   For Vim version 7.0aa.  Last change: 2004 Dec 29
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -877,7 +877,7 @@ list of buffers. |unlisted-buffer|
 
                        1 #h  "/test/text"              line 1 ~
                        2u    "asdf"                    line 0 ~
-                       3 %l+ "version.c"               line 1 ~
+                       3 %a+ "version.c"               line 1 ~
 
                When the [!] is included the list will show unlisted buffers
                (the term "unlisted" is a bit confusing then...).
index 208df3ab085b2bbe791584c4677ddfe25b1ff408..cda861e2836e9c16965e79b87ca5d30aecfc2546 100644 (file)
@@ -3,7 +3,7 @@
 " Author:      Miles Lott <milos@groupwhere.org>
 " URL:         http://milosch.dyndns.org/php.vim
 " Last Change: 2004 May 18
-" Version:     0.5
+" Version:     0.4
 " Notes:  Close all switches with default:\nbreak; and it will look better.
 "         Also, open and close brackets should be alone on a line.
 "         This is my preference, and the only way this will look nice.
@@ -11,9 +11,7 @@
 "         switch/case.  It is nearly perfect for anyone regardless of your
 "         stance on brackets.
 "
-" Changes: 0.5 - fix duplicate indent on open tag, and empty bracketed
-"          statements.
-"          0.4 - Fixes for closing php tag, switch statement closure, and php_indent_shortopentags
+" Changes: Fixes for closing php tag, switch statement closure, and php_indent_shortopentags
 "          option from Steffen Bruentjen <vim@kontraphon.de>
 "
 " Options: php_noindent_switch=1 -- do not try to indent switch/case statements (version 0.1 behavior)
@@ -51,16 +49,16 @@ function GetPhpIndent()
        let pline = getline(lnum - 1) " previous to last line
        let ind = indent(lnum)
 
-       " Indent after php open tag
+       " Indent after php open tags
        if line =~ '<?php'
                let ind = ind + &sw
-       elseif exists('g:php_indent_shortopentags')
-               " indent after short open tag
+               " indent after short open tags
+       endif
+       if exists('g:php_indent_shortopentags')
                if line =~ '<?'
                        let ind = ind + &sw
                endif
        endif
-       " indent after php closing tag
        if cline =~ '\M?>'
                let ind = ind - &sw
        endif
@@ -74,17 +72,7 @@ function GetPhpIndent()
                        let ind = ind - &sw
                endif
                return ind
-       else
-               " Search the matching bracket (with searchpair()) and set the indent of
-               " to the indent of the matching line.
-               if cline =~ '^\s*}'
-                       call cursor(line('.'), 1)
-                       let ind = indent(searchpair('{', '', '}',
-                       'bW', 'synIDattr(synID(line("."), col("."),
-                       0), "name") =~? "string"'))
-                       return ind
-               endif
-               " Try to indent switch/case statements as well
+       else " Try to indent switch/case statements as well
                " Indent blocks enclosed by {} or () or case statements, with some anal requirements
                if line =~ 'case.*:\|[{(]\s*\(#[^)}]*\)\=$'
                        let ind = ind + &sw
@@ -104,7 +92,7 @@ function GetPhpIndent()
                " Search the matching bracket (with searchpair()) and set the indent of cline
                " to the indent of the matching line.
                if cline =~ '^\s*}'
-                       call cursor(line('. '), 1)
+                       call cursor(line('.'), 1)
                        let ind = indent(searchpair('{', '', '}', 'bW', 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string"'))
                        return ind
                endif
index b07d8ef5fb357afeea40cb5383d88313786fd7f5..081015918002a27358343171ad47ce0578b4e4a5 100644 (file)
@@ -1 +1 @@
-source <sfile>:p:h/menu_chinese(taiwan)_taiwan.950.vim
+source <sfile>:p:h/menu_chinese_taiwan.950.vim
index b07d8ef5fb357afeea40cb5383d88313786fd7f5..081015918002a27358343171ad47ce0578b4e4a5 100644 (file)
@@ -1 +1 @@
-source <sfile>:p:h/menu_chinese(taiwan)_taiwan.950.vim
+source <sfile>:p:h/menu_chinese_taiwan.950.vim
index e4868a3d75904c4b7be0d980180c15cbc6810485..0653aabc2a7b91d5da7b58fdfda93ef310d15bba 100644 (file)
@@ -1,7 +1,7 @@
 " netrw.vim: Handles file transfer and remote directory listing across a network
-" last change: Dec 06, 2004
+" last change: Dec 29, 2004
 " Maintainer:  Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
-" Version:     53
+" Version:     54
 " License:     Vim License  (see vim's :help license)
 "
 "  But be doers of the Word, and not only hearers, deluding your own selves
@@ -14,7 +14,7 @@
 if exists("g:loaded_netrw") || &cp
   finish
 endif
-let g:loaded_netrw  = "v53"
+let g:loaded_netrw  = "v54"
 let s:save_cpo      = &cpo
 let loaded_explorer = 1
 set cpo&vim
@@ -228,9 +228,9 @@ if version >= 600
    au BufReadCmd  file://localhost/*   exe "silent doau BufReadPre ".expand("<afile>")|exe 'e /'.substitute(expand("<afile>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<afile>")
   endif
   au BufReadCmd   ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://*  exe "silent doau BufReadPre ".expand("<afile>")|exe "Nread 0r ".expand("<afile>")|exe "silent doau BufReadPost ".expand("<afile>")
-  au FileReadCmd  ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://*  exe "silent doau BufReadPre ".expand("<afile>")|exe "Nread "   .expand("<afile>")|exe "silent doau BufReadPost ".expand("<afile>")
+  au FileReadCmd  ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://*  exe "silent doau BufReadPre ".expand("<afile>")|exe "Nread "   .expand("<afile>")|exe "silent doau FileReadPost ".expand("<afile>")
   au BufWriteCmd  ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://*           exe "silent doau BufWritePre ".expand("<afile>")|exe "Nwrite " .expand("<afile>")|exe "silent doau BufWritePost ".expand("<afile>")
-  au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://*           exe "silent doau BufWritePre ".expand("<afile>")|exe "'[,']Nwrite " .expand("<afile>")|exe "silent doau BufWritePost ".expand("<afile>")
+  au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://*           exe "silent doau BufWritePre ".expand("<afile>")|exe "'[,']Nwrite " .expand("<afile>")|exe "silent doau FileWritePost ".expand("<afile>")
  augroup END
 endif
 
@@ -262,15 +262,21 @@ endfun
 fun! <SID>NetRestorePosn()
 "  call Dfunc("NetRestorePosn() winnr=".s:netrw_winnr." line=".s:netrw_line." col=".s:netrw_col." hline=".s:netrw_hline)
 
+  " restore window
+"  call Decho("restore window: exe silent! ".s:netrw_winnr."wincmd w")
   exe "silent! ".s:netrw_winnr."wincmd w"
   if v:shell_error == 0
    " as suggested by Bram M: redraw on no error
    " allows protocol error messages to remain visible
    redraw!
   endif
+
   " restore top-of-screen line
+"  call Decho("restore topofscreen: exe norm! ".s:netrw_hline."G0z")
   exe "norm! ".s:netrw_hline."G0z\<CR>"
+
   " restore position
+"  call Decho("restore posn: exe norm! ".s:netrw_line."G0".s:netrw_col."|")
   exe "norm! ".s:netrw_line."G0".s:netrw_col."\<bar>"
 
 "  call Dret("NetRestorePosn")
@@ -670,77 +676,40 @@ fun! s:NetGetFile(readcmd, fname, method)
 "   call Decho("(copied) fname<".fname.">")
   endif
  
-  " get the file, but disable undo when reading a new buffer
   if a:readcmd[0] == '0'
-   let use_e_cmd = 0           " 1 when using ':edit'
-   let delline   = 0           " 1 when have to delete empty last line
-   if line("$") == 1 && getline(1) == ""
-    " Now being asked to 0r a file into an empty file.
-    " Safe to :e it instead, unless there is another window on the same buffer.
-    let curbufnr  = bufnr("%")
-    let use_e_cmd = 1
-    let delline   = 1
-    " Loop over all windows,
-    " reset use_e_cmd when another one is editing the current buffer.
-    let i = 1
-    while 1
-      if i != winnr() && winbufnr(i) == curbufnr
-        let use_e_cmd = 0
-        break
-      endif
-      let i = i + 1
-      if winbufnr(i) < 0
-        break
-      endif
-    endwhile
-   endif
-   if use_e_cmd > 0
-    " ':edit' the temp file, wipe out the old buffer and rename the buffer
-    let curfilename = expand("%")
-    let binlocal = &l:bin
-    let binglobal = &g:bin
-    if binlocal
-      setglobal bin            " Need to set 'bin' globally for ":e" command.
-    endif
-    silent exe "e! ".v:cmdarg." ".fname
-    if binlocal && !binglobal
-      setglobal nobin
-      setlocal bin
-    endif
-    exe curbufnr . "bwipe!"
-    exe "f ".escape(curfilename," ")
-    " the ":f newname" apparently leaves the temporary file as the alternate
-    " file in the buffer list (see :ls!).  The following command wipes it out.
-    exe bufnr("#")."bwipe!"
-   else
-    let oldul= &ul
-    setlocal ul=-1
-    exe a:readcmd." ".v:cmdarg." ".escape(fname," ")
-    if delline > 0
-     " wipe out last line, which should be a blank line anyway
-     $del
-    endif
-    let &ul= oldul
-   endif
+  " get file into buffer
+   " record remote filename
+   let rfile= bufname("%")
+"   call Decho("edit remotefile<".rfile.">")
+   " rename the current buffer to the temp file (ie. fname)
+   exe "keepalt file ".fname
+   " edit temporary file
+   e
+   " rename buffer back to remote filename
+   exe "keepalt file ".rfile
+   " wipe out the buffer with the temp file name
+   exe "bwipe ".fname
+   let line1 = 1
+   let line2 = line("$")
+
   elseif filereadable(fname)
-"   call Decho("exe<".a:readcmd." ".v:cmdarg." ".fname.">")
+   " read file after current line
+   let curline = line(".")
+   let lastline= line("$")
+"   call Decho("exe<".a:readcmd." ".v:cmdarg." ".fname.">  line#".curline)
    exe a:readcmd." ".v:cmdarg." ".fname
+   let line1        = curline + 1
+   let line2        = line("$") - lastline + 1
+   let s:netrw_line = s:netrw_line + 1
+   let s:netrw_col  = 1
   else
-"   call Dret("NetGetFile")
+   " not readable
+"   call Dret("NetGetFile : fname<".fname."> not readable")
    return
   endif
  
   " User-provided (ie. optional) fix-it-up command
   if exists("*NetReadFixup")
-   let line1= line(".")
-   if a:readcmd == "r"
-    let line2= line("$") - line2 + line1
-   else
-    let line2= line("$") - line2
-   endif
 "   call Decho("calling NetReadFixup(method<".a:method."> line1=".line1." line2=".line2.")")
    call NetReadFixup(a:method, line1, line2)
   endif
@@ -2604,7 +2573,7 @@ fun! s:NetMethod(choice)  " globals: method machine id passwd fname
 "   call Decho("scp://...")
    let b:netrw_method = 4
    let g:netrw_machine= substitute(a:choice,scpurm,'\1',"")
-   let b:netrw_port   = substitute(a:choice,scpurm,'\2',"")
+   let g:netrw_port   = substitute(a:choice,scpurm,'\2',"")
    let b:netrw_fname  = substitute(a:choice,scpurm,'\3',"")
  
   " http://user@hostname/...path-to-file
@@ -2639,9 +2608,6 @@ fun! s:NetMethod(choice)  " globals: method machine id passwd fname
    let g:netrw_machine= substitute(a:choice,ftpurm,'\3',"")
    let g:netrw_port   = substitute(a:choice,ftpurm,'\4',"")
    let b:netrw_fname  = substitute(a:choice,ftpurm,'\5',"")
-   if g:netrw_port != ""
-     let g:netrw_port = substitute(g:netrw_port,"[#:]","","")
-   endif
    if userid != ""
     let g:netrw_uid= userid
    endif
@@ -2725,6 +2691,11 @@ fun! s:NetMethod(choice)  " globals: method machine id passwd fname
    endif
    let b:netrw_method  = -1
   endif
+
+  " remove any leading [:#] from port number
+  if g:netrw_port != ""
+    let g:netrw_port = substitute(g:netrw_port,'[#:]\+','','')
+  endif
  
 "  call Decho("a:choice       <".a:choice.">")
 "  call Decho("b:netrw_method <".b:netrw_method.">")
index 4a676c240e6dca0b73bc958ff4ab94e96b369152..9b21a2e76a8786c453c66c196f3fe4860a68f3c1 100644 (file)
@@ -335,6 +335,8 @@ CClink = $(CC)
 # automatically be used if it is found.  If you have GNOME, but do not want to
 # use it (e.g., want a GTK-only version), then use --enable-gui=gtk.
 #
+# KDE doesn't fully work, unfortunately.  See the todo list.
+#
 # If the selected GUI isn't found, the GUI is disabled automatically
 #CONF_OPT_GUI = --enable-gui=gtk
 #CONF_OPT_GUI = --enable-gui=gtk --disable-gtktest
index 1ed7a0055f78cd8e8720d79aa540b8d13c17a683..bb58685ded9854317dd83c7978e7f5caf8f39917 100644 (file)
@@ -1641,6 +1641,8 @@ buflist_new(ffname, sfname, lnum, flags)
 #endif
     buf->b_u_synced = TRUE;
     buf->b_flags = BF_CHECK_RO | BF_NEVERLOADED;
+    if (flags & BLN_DUMMY)
+       buf->b_flags |= BF_DUMMY;
     buf_clear_file(buf);
     clrallmarks(buf);                  /* clear marks */
     fmarks_check_names(buf);           /* check file marks for this file */
@@ -1874,9 +1876,40 @@ buflist_getfpos()
     }
 }
 
+#if defined(FEAT_QUICKFIX) || defined(FEAT_EVAL) || defined(PROTO)
+/*
+ * Find file in buffer list by name (it has to be for the current window).
+ * Returns NULL if not found.
+ */
+    buf_T *
+buflist_findname_exp(fname)
+    char_u *fname;
+{
+    char_u     *ffname;
+    buf_T      *buf = NULL;
+
+    /* First make the name into a full path name */
+    ffname = FullName_save(fname,
+#ifdef UNIX
+           TRUE            /* force expansion, get rid of symbolic links */
+#else
+           FALSE
+#endif
+           );
+    if (ffname != NULL)
+    {
+       buf = buflist_findname(ffname);
+       vim_free(ffname);
+    }
+    return buf;
+}
+#endif
+
 /*
  * Find file in buffer list by name (it has to be for the current window).
  * "ffname" must have a full path.
+ * Skips dummy buffers.
+ * Returns NULL if not found.
  */
     buf_T *
 buflist_findname(ffname)
@@ -1893,6 +1926,7 @@ buflist_findname(ffname)
 /*
  * Same as buflist_findname(), but pass the stat structure to avoid getting it
  * twice for the same file.
+ * Returns NULL if not found.
  */
     static buf_T *
 buflist_findname_stat(ffname, stp)
@@ -1903,7 +1937,7 @@ buflist_findname_stat(ffname, stp)
     buf_T      *buf;
 
     for (buf = firstbuf; buf != NULL; buf = buf->b_next)
-       if (!otherfile_buf(buf, ffname
+       if ((buf->b_flags & BF_DUMMY) == 0 && !otherfile_buf(buf, ffname
 #ifdef UNIX
                    , stp
 #endif
@@ -2457,9 +2491,9 @@ buflist_name_nr(fnum, fname, lnum)
 setfname(buf, ffname, sfname, message)
     buf_T      *buf;
     char_u     *ffname, *sfname;
-    int                message;
+    int                message;        /* give message when buffer already exists */
 {
-    buf_T      *obuf;
+    buf_T      *obuf = NULL;
 #ifdef UNIX
     struct stat st;
 #endif
@@ -2489,9 +2523,12 @@ setfname(buf, ffname, sfname, message)
 #ifdef UNIX
        if (mch_stat((char *)ffname, &st) < 0)
            st.st_dev = (dev_T)-1;
-       obuf = buflist_findname_stat(ffname, &st);
+#endif
+       if (!(buf->b_flags & BF_DUMMY))
+#ifdef UNIX
+           obuf = buflist_findname_stat(ffname, &st);
 #else
-       obuf = buflist_findname(ffname);
+           obuf = buflist_findname(ffname);
 #endif
        if (obuf != NULL && obuf != buf)
        {
index 0a46306fc24ea50d39f57e5bb7fdbab84cef795b..7d01980bdb7cd88c1fea5673862dd590bb66cd19 100644 (file)
@@ -820,8 +820,8 @@ win_linetabsize(wp, p, len)
 }
 
 /*
- * return TRUE if 'c' is a normal identifier character
- * letters and characters from 'isident' option.
+ * Return TRUE if 'c' is a normal identifier character:
+ * Letters and characters from the 'isident' option.
  */
     int
 vim_isIDc(c)
index f2fdcd1d8434318d7dbd89e5a76d78d1b3648004..16bbf1328c230334e9e5be22347e79ff8e93f285 100644 (file)
@@ -2153,6 +2153,10 @@ if test "x$GUITYPE:$enable_fontset" = "xGTK:yes" -a "0$gtk_major_version" -ge 2;
   AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
   enable_fontset="no"
 fi
+if test "x$GUITYPE:$enable_fontset" = "xKDE:yes"; then
+  AC_MSG_RESULT(KDE GUI selected; fontset has been disabled)
+  enable_fontset="no"
+fi
 
 dnl There is no test for the BeOS GUI, if it's selected it's used
 if test -z "$SKIP_BEOS"; then
index 3e5870bb90a15a884fc22dd372b94b6f2de04c73..3304167f1458850d49966e6f5677a77d71e9738d 100644 (file)
@@ -2114,7 +2114,7 @@ do_one_cmd(cmdlinep, sourcing,
      */
     if ((ea.cmdidx == CMD_make
                         || ea.cmdidx == CMD_grep || ea.cmdidx == CMD_grepadd)
-           && !grep_internal(&ea))
+           && !grep_internal(ea.cmdidx))
     {
        char_u          *new_cmdline;
        char_u          *program;
@@ -3164,7 +3164,13 @@ set_one_cmd_context(xp, buff)
        p++;
     xp->xp_pattern = p;
 
-    if (argt & XFILE)
+    if ((argt & XFILE)
+#ifdef FEAT_QUICKFIX
+           || cmdidx == CMD_vimgrep
+           || cmdidx == CMD_vimgrepadd
+           || grep_internal(cmdidx)
+#endif
+       )
     {
        int in_quote = FALSE;
        char_u *bow = NULL;     /* Beginning of word */
@@ -4204,14 +4210,19 @@ separate_nextcmd(eap)
 
     p = eap->arg;
 #ifdef FEAT_QUICKFIX
-    if (eap->cmdidx == CMD_vimgrep
-           || eap->cmdidx == CMD_vimgrepadd
-           || grep_internal(eap))
+    if (*p != NUL && (eap->cmdidx == CMD_vimgrep
+               || eap->cmdidx == CMD_vimgrepadd
+               || grep_internal(eap->cmdidx)))
     {
        /* Skip over the pattern. */
-       p = skip_regexp(p + 1, *p, TRUE, NULL);
-       if (*p == *eap->arg)
-           ++p;
+       if (vim_isIDc(*p))
+           p = skiptowhite(p);
+       else
+       {
+           p = skip_regexp(p + 1, *p, TRUE, NULL);
+           if (*p == *eap->arg)
+               ++p;
+       }
     }
 #endif
 
index 103bf1b301028b96890eb315650ba9128686c294..235e29e0b67b17ec3009a0837f47ad4f76cf133f 100644 (file)
@@ -2080,7 +2080,8 @@ cmdline_at_end()
 }
 #endif
 
-#if (defined(FEAT_XIM) && defined(FEAT_GUI_GTK)) || defined(PROTO)
+#if (defined(FEAT_XIM) && (defined(FEAT_GUI_GTK) || defined(FEAT_GUI_KDE))) \
+                                                            || defined(PROTO)
 /*
  * Return the virtual column number at the current cursor position.
  * This is used by the IM code to obtain the start of the preedit string.
index 928234c68b1553aa2a141e672913419145ebcddf..7e4ddd52b43aa99a6d1013ee7bd436546a87194d 100644 (file)
  * +xfontset           X fontset support.  For outputting wide characters.
  */
 #ifndef FEAT_XFONTSET
-# if defined(FEAT_MBYTE) && defined(HAVE_X11) && !defined(HAVE_GTK2)
+# if defined(FEAT_MBYTE) && defined(HAVE_X11) \
+               && !defined(HAVE_GTK2) && !defined(FEAT_GUI_KDE)
 #  define FEAT_XFONTSET
 # else
 /* #  define FEAT_XFONTSET */
            || defined(FEAT_NETBEANS_INTG))
 # define FEAT_BEVAL
 # if !defined(FEAT_XFONTSET) && !defined(FEAT_GUI_GTK) \
-       && !defined(FEAT_GUI_W32)
+       && !defined(FEAT_GUI_KDE) && !defined(FEAT_GUI_W32)
 #  define FEAT_XFONTSET
 # endif
 #endif
index 7e78e8ef6d98ec6fd35e7dd0da500612319a231f..97e2f90cd027da2e69b46e42bbb777174d27dd5e 100644 (file)
@@ -725,6 +725,7 @@ EXTERN int* (*iconv_errno) (void);
 #ifdef FEAT_XIM
 # ifdef FEAT_GUI_KDE
 EXTERN colnr_T         preedit_start_col INIT(= MAXCOL);
+EXTERN colnr_T         preedit_end_col INIT(= MAXCOL);
 EXTERN char            *draw_feedback INIT(= NULL);
 # endif
 # ifdef FEAT_GUI_GTK
index 32ae3bf4befae8c1cc65a9a35f8bbab5db24849e..726158ad84980f37c7718b5aad1fead6cef8cad5 100644 (file)
--- a/src/gui.c
+++ b/src/gui.c
@@ -1918,7 +1918,7 @@ gui_outstr_nowrap(s, len, flags, fg, bg, back)
     long_u     hl_mask_todo;
     guicolor_T fg_color;
     guicolor_T bg_color;
-#if !defined(MSWIN16_FASTTEXT) && !defined(HAVE_GTK2)
+#if !defined(MSWIN16_FASTTEXT) && !defined(HAVE_GTK2) && !defined(FEAT_GUI_KDE)
     GuiFont    font = NOFONT;
 # ifdef FEAT_XFONTSET
     GuiFontset fontset = NOFONTSET;
@@ -1972,7 +1972,7 @@ gui_outstr_nowrap(s, len, flags, fg, bg, back)
        highlight_mask = gui.highlight_mask;
     hl_mask_todo = highlight_mask;
 
-#if !defined(MSWIN16_FASTTEXT) && !defined(HAVE_GTK2)
+#if !defined(MSWIN16_FASTTEXT) && !defined(HAVE_GTK2) && !defined(FEAT_GUI_KDE)
     /* Set the font */
     if (aep != NULL && aep->ae_u.gui.font != NOFONT)
        font = aep->ae_u.gui.font;
@@ -2148,7 +2148,7 @@ gui_outstr_nowrap(s, len, flags, fg, bg, back)
            /* print the string so far if it's the last character or there is
             * a composing character. */
            if (i + cl >= len || (comping && i > start) || dowide
-#  if defined(FEAT_GUI_X11) || defined(FEAT_GUI_GTK) || defined (FEAT_GUI_KDE)
+#  if defined(FEAT_GUI_X11) || defined(FEAT_GUI_GTK) || defined(FEAT_GUI_KDE)
                    || (cn > 1
 #   ifdef FEAT_XFONTSET
                        /* No fontset: At least draw char after wide char at
@@ -2173,10 +2173,14 @@ gui_outstr_nowrap(s, len, flags, fg, bg, back)
                cells = 0;
                if (dowide)
                {
+#ifndef FEAT_GUI_KDE
                    gui_mch_set_font(gui.wide_font);
+#endif
                    gui_mch_draw_string(gui.row, scol - cn,
                                                   s + start, cl, draw_flags);
+#ifndef FEAT_GUI_KDE
                    gui_mch_set_font(font);
+#endif
                    start += cl;
                }
 
index 1ac8db990e402a8f250f566afb8f87994ed8d2a1..62c4ba61a0f85faa04ccc15719d3f16f403783d8 100644 (file)
@@ -206,9 +206,7 @@ pixmap_create_by_dir(char_u *name)//{{{
     char_u full_pathname[MAXPATHL + 1];
 
     if (gui_find_bitmap(name, full_pathname, "xpm") == OK)
-    {
        return QPixmap((const char *)full_pathname);
-    }
     else
        return QPixmap();
 }//}}}
@@ -222,7 +220,7 @@ pixmap_create_from_file(char_u *file)
 #endif
 
     void
-gui_mch_add_menu(vimmenu_T * menu, int idx)//{{{
+gui_mch_add_menu(vimmenu_T *menu, int idx)//{{{
 {
 #ifdef FEAT_MENU
     QPopupMenu *me;
@@ -230,7 +228,7 @@ gui_mch_add_menu(vimmenu_T * menu, int idx)//{{{
 
     if (menu_is_popup(menu->name))
     {
-       menu->widget = new QPopupMenu(vmw , (const char *)menu->name);
+       menu->widget = new QPopupMenu(vmw , QSTR(menu->name));
        QObject::connect(menu->widget, SIGNAL(activated(int)), vmw,
                                                   SLOT(menu_activated(int)));
        return;
@@ -242,15 +240,13 @@ gui_mch_add_menu(vimmenu_T * menu, int idx)//{{{
     if (parent)
     {
        idx++; // for tearoffs to be first in menus
-       me = new QPopupMenu(parent->widget, (const char *)menu->name);
-       parent->widget->insertItem(QString((const char *)menu->name), me,
-                                                               (int)me, idx);
+       me = new QPopupMenu(parent->widget, QSTR(menu->name));
+       parent->widget->insertItem(QSTR(menu->name), me, (int)me, idx);
     }
     else
     {
-       me = new QPopupMenu(vmw->menuBar() , (const char *)menu->name);
-       vmw->menuBar()->insertItem(QString((const char *)menu->name), me,
-                                                               (int)me, idx);
+       me = new QPopupMenu(vmw->menuBar(), QSTR(menu->name));
+       vmw->menuBar()->insertItem(QSTR(menu->name), me, (int)me, idx);
     }
 
     me->setCaption((const char *)(menu->dname));
@@ -264,7 +260,7 @@ gui_mch_add_menu(vimmenu_T * menu, int idx)//{{{
 
 
     void
-gui_mch_add_menu_item(vimmenu_T * menu, int idx)//{{{
+gui_mch_add_menu_item(vimmenu_T *menu, int idx)//{{{
 {
 #ifdef FEAT_MENU
     vimmenu_T *parent = menu->parent;
@@ -302,7 +298,7 @@ gui_mch_add_menu_item(vimmenu_T * menu, int idx)//{{{
                pix,
                (int)menu, // id
                true,
-               (char *)(menu->strings[MENU_INDEX_TIP]), // tooltip or text
+               QSTR(menu->strings[MENU_INDEX_TIP]), // tooltip or text
                idx);
        menu->parent=parent;
        return;
@@ -315,7 +311,7 @@ gui_mch_add_menu_item(vimmenu_T * menu, int idx)//{{{
        parent->widget->insertSeparator();
        return;
     }
-    parent->widget->insertItem(QString((const char *)menu->name), (int)menu, idx);
+    parent->widget->insertItem(QSTR(menu->name), (int)menu, idx);
 #endif
 }//}}}
 
@@ -378,8 +374,8 @@ toggle_tearoffs(vimmenu_T *menu, int enable)//{{{
        void
 gui_mch_toggle_tearoffs(int enable)//{{{
 {
-       vmw->have_tearoff=enable;
-       toggle_tearoffs(root_menu, enable);
+    vmw->have_tearoff=enable;
+    toggle_tearoffs(root_menu, enable);
 }//}}}
 #endif
 
@@ -389,7 +385,7 @@ gui_mch_toggle_tearoffs(int enable)//{{{
  * Destroy the machine specific menu widget.
  */
     void
-gui_mch_destroy_menu(vimmenu_T * menu)//{{{
+gui_mch_destroy_menu(vimmenu_T *menu)//{{{
 {
 #ifdef FEAT_TOOLBAR
     if (menu->parent && menu_is_toolbar(menu->parent->name))
@@ -429,6 +425,7 @@ gui_mch_set_scrollbar_pos(scrollbar_T *sb, int x, int y, int w, int h)//{{{
 {
     if (!sb->w)
        return;
+
     //we add the menubar and toolbar height/width
     int X = 0;
     int Y = 0;
@@ -480,7 +477,7 @@ gui_mch_create_scrollbar(scrollbar_T *sb, int orient)//{{{
 }//}}}
 
     void
-gui_mch_destroy_scrollbar(scrollbar_T * sb)//{{{
+gui_mch_destroy_scrollbar(scrollbar_T *sb)//{{{
 {
     sbpool->destroy(sb);
 }//}}}
@@ -503,11 +500,11 @@ gui_mch_destroy_scrollbar(scrollbar_T * sb)//{{{
 /*ARGSUSED*/
     char_u *
 gui_mch_browse(int saving,//{{{
-               char_u * title,
-               char_u * dflt,
-               char_u * ext,
-               char_u * initdir,
-               char_u * filter)
+               char_u *title,
+               char_u *dflt,
+               char_u *ext,
+               char_u *initdir,
+               char_u *filter)
 {
     char *filt_glob;
 
@@ -524,8 +521,8 @@ gui_mch_browse(int saving,//{{{
 
     QString s;
     if (!saving)
-       s = KFileDialog::getOpenFileName((char *)initdir, (char *)filt_glob,
-                                                         vmw, (char *)title);
+       s = KFileDialog::getOpenFileName(QSTR(initdir), QSTR(filt_glob),
+                                                         vmw, QSTR(title));
     else
        s = KFileDialog::getSaveFileName();
 
@@ -552,7 +549,7 @@ gui_mch_dialog(int type,            /* type of dialog *///{{{
                char_u *title,          /* title of dialog */
                char_u *message,        /* message text */
                char_u *buttons,        /* names of buttons */
-               int def_but,            /* default button */
+               int    def_but,         /* default button */
                char_u *textfield)
 {
     gui_mch_mousehide(FALSE);
@@ -566,7 +563,7 @@ gui_mch_dialog(int type,            /* type of dialog *///{{{
 
 #if defined(FEAT_MENU) || defined(PROTO)
     void
-gui_mch_show_popupmenu(vimmenu_T * menu)//{{{
+gui_mch_show_popupmenu(vimmenu_T *menu)//{{{
 {
     menu->widget->popup(QCursor::pos());
 }//}}}
index fefbe9a4b9321871bc54a11881a541a38add19b2..52d1c9eadc0bee23435db61b5a877dc44f9703cd 100644 (file)
@@ -69,84 +69,85 @@ struct special_key {//{{{
     char_u code1;
 } special_keys[] =
 {
-    { Qt::Key_Up,              'k', 'u' },
-    { Qt::Key_Down,            'k', 'd' },
-    { Qt::Key_Left,            'k', 'l' },
-    { Qt::Key_Right,           'k', 'r' },
-    { Qt::Key_F1,              'k', '1' },
-    { Qt::Key_F2,              'k', '2' },
-    { Qt::Key_F3,              'k', '3' },
-    { Qt::Key_F4,              'k', '4' },
-    { Qt::Key_F5,              'k', '5' },
-    { Qt::Key_F6,              'k', '6' },
-    { Qt::Key_F7,              'k', '7' },
-    { Qt::Key_F8,              'k', '8' },
-    { Qt::Key_F9,              'k', '9' },
-    { Qt::Key_F10,             'k', ';' },
-    { Qt::Key_F11,             'F', '1' },
-    { Qt::Key_F12,             'F', '2' },
-    { Qt::Key_F13,             'F', '3' },
-    { Qt::Key_F14,             'F', '4' },
-    { Qt::Key_F15,             'F', '5' },
-    { Qt::Key_F16,             'F', '6' },
-    { Qt::Key_F17,             'F', '7' },
-    { Qt::Key_F18,             'F', '8' },
-    { Qt::Key_F19,             'F', '9' },
-    { Qt::Key_F20,             'F', 'A' },
-    { Qt::Key_F21,             'F', 'B' },
-    { Qt::Key_F22,             'F', 'C' },
-    { Qt::Key_F23,             'F', 'D' },
-    { Qt::Key_F24,             'F', 'E' },
-    { Qt::Key_F25,             'F', 'F' },
-    { Qt::Key_F26,             'F', 'G' },
-    { Qt::Key_F27,             'F', 'H' },
-    { Qt::Key_F28,             'F', 'I' },
-    { Qt::Key_F29,             'F', 'J' },
-    { Qt::Key_F30,             'F', 'K' },
-    { Qt::Key_F31,             'F', 'L' },
-    { Qt::Key_F32,             'F', 'M' },
-    { Qt::Key_F33,             'F', 'N' },
-    { Qt::Key_F34,             'F', 'O' },
-    { Qt::Key_F35,             'F', 'P' },
-    { Qt::Key_Help,            '%', '1' },
-    //    { Qt::Key_Undo,              '&', '8' }, <= hmmm ?
-    { Qt::Key_BackSpace,       'k', 'b' },
-    { Qt::Key_Insert,          KS_EXTRA, KE_KINS },
-    { Qt::Key_Delete,          KS_EXTRA, KE_KDEL },
-    { Qt::Key_Home,            'K', '1' },
-    { Qt::Key_End,             'K', '4' },
-    { Qt::Key_Prior,           'K', '3' },
-    { Qt::Key_Next,            'K', '5' },
-    { Qt::Key_Print,           '%', '9' },
-
-    { Qt::Key_Plus,    'K', '6'},
-    { Qt::Key_Minus,   'K', '7'},
-    { Qt::Key_Slash,   'K', '8'},
-    { Qt::Key_multiply,        'K', '9'},
-    { Qt::Key_Enter,   'K', 'A'},
-    { Qt::Key_Period,  'K', 'B'},
-
-    { Qt::Key_0,       'K', 'C'},
-    { Qt::Key_1,       'K', 'D'},
-    { Qt::Key_2,       'K', 'E'},
-    { Qt::Key_3,       'K', 'F'},
-    { Qt::Key_4,       'K', 'G'},
-    { Qt::Key_5,       'K', 'H'},
-    { Qt::Key_6,       'K', 'I'},
-    { Qt::Key_7,       'K', 'J'},
-    { Qt::Key_8,       'K', 'K'},
-    { Qt::Key_9,       'K', 'L'},
+    {Qt::Key_Up,       'k', 'u'},
+    {Qt::Key_Down,     'k', 'd'},
+    {Qt::Key_Left,     'k', 'l'},
+    {Qt::Key_Right,    'k', 'r'},
+    {Qt::Key_F1,       'k', '1'},
+    {Qt::Key_F2,       'k', '2'},
+    {Qt::Key_F3,       'k', '3'},
+    {Qt::Key_F4,       'k', '4'},
+    {Qt::Key_F5,       'k', '5'},
+    {Qt::Key_F6,       'k', '6'},
+    {Qt::Key_F7,       'k', '7'},
+    {Qt::Key_F8,       'k', '8'},
+    {Qt::Key_F9,       'k', '9'},
+    {Qt::Key_F10,      'k', ';'},
+    {Qt::Key_F11,      'F', '1'},
+    {Qt::Key_F12,      'F', '2'},
+    {Qt::Key_F13,      'F', '3'},
+    {Qt::Key_F14,      'F', '4'},
+    {Qt::Key_F15,      'F', '5'},
+    {Qt::Key_F16,      'F', '6'},
+    {Qt::Key_F17,      'F', '7'},
+    {Qt::Key_F18,      'F', '8'},
+    {Qt::Key_F19,      'F', '9'},
+    {Qt::Key_F20,      'F', 'A'},
+    {Qt::Key_F21,      'F', 'B'},
+    {Qt::Key_F22,      'F', 'C'},
+    {Qt::Key_F23,      'F', 'D'},
+    {Qt::Key_F24,      'F', 'E'},
+    {Qt::Key_F25,      'F', 'F'},
+    {Qt::Key_F26,      'F', 'G'},
+    {Qt::Key_F27,      'F', 'H'},
+    {Qt::Key_F28,      'F', 'I'},
+    {Qt::Key_F29,      'F', 'J'},
+    {Qt::Key_F30,      'F', 'K'},
+    {Qt::Key_F31,      'F', 'L'},
+    {Qt::Key_F32,      'F', 'M'},
+    {Qt::Key_F33,      'F', 'N'},
+    {Qt::Key_F34,      'F', 'O'},
+    {Qt::Key_F35,      'F', 'P'},
+    {Qt::Key_Help,     '%', '1'},
+    //    { Qt::Key_Undo,      '&', '8'}, <= hmmm ?
+    {Qt::Key_BackSpace,        'k', 'b'},
+    {Qt::Key_Insert,   KS_EXTRA, KE_KINS },
+    {Qt::Key_Delete,   KS_EXTRA, KE_KDEL },
+    {Qt::Key_Home,     'K', '1'},
+    {Qt::Key_End,      'K', '4'},
+    {Qt::Key_Prior,    'K', '3'},
+    {Qt::Key_Next,     'K', '5'},
+    {Qt::Key_Print,    '%', '9'},
+
+    {Qt::Key_Plus,     'K', '6'},
+    {Qt::Key_Minus,    'K', '7'},
+    {Qt::Key_Slash,    'K', '8'},
+    {Qt::Key_multiply, 'K', '9'},
+    {Qt::Key_Enter,    'K', 'A'},
+    {Qt::Key_Period,   'K', 'B'},
+
+    {Qt::Key_0,                'K', 'C'},
+    {Qt::Key_1,                'K', 'D'},
+    {Qt::Key_2,                'K', 'E'},
+    {Qt::Key_3,                'K', 'F'},
+    {Qt::Key_4,                'K', 'G'},
+    {Qt::Key_5,                'K', 'H'},
+    {Qt::Key_6,                'K', 'I'},
+    {Qt::Key_7,                'K', 'J'},
+    {Qt::Key_8,                'K', 'K'},
+    {Qt::Key_9,                'K', 'L'},
+
     /* End of list marker: */
-    { 0, 0, 0 }
+    {0, 0, 0}
 };//}}}
 
 #ifdef FEAT_CLIENTSERVER
-typedef int (*QX11EventFilter) (XEvent*);
-extern QX11EventFilter qt_set_x11_event_filter (QX11EventFilter filter);
-static QX11EventFilter oldFilter = 0;
-static int kvim_x11_event_filter( XEvent* e);
+typedef int (*QX11EventFilter)(XEvent*);
+extern     QX11EventFilter qt_set_x11_event_filter(QX11EventFilter filter);
+static     QX11EventFilter oldFilter = 0;
+static int  kvim_x11_event_filter(XEvent* e);
 #endif
-void gui_keypress(QKeyEvent *e);
+void       gui_keypress(QKeyEvent *e);
 
 /*
  * Return OK if the key with the termcap name "name" is supported.
@@ -164,26 +165,30 @@ gui_mch_haskey(char_u * name)//{{{
 /*
  * custom Frame for drawing ...
  */
-void VimWidget::paintEvent(QPaintEvent *e)//{{{
+    void
+VimWidget::paintEvent(QPaintEvent *e)//{{{
 {
     QRect r = e->rect();
     gui_redraw(r.x(), r.y(), r.width(), r.height());
 }//}}}
 
-void VimWidget::draw_string(int x, int y, QString s, int len, int flags)//{{{
+    void
+VimWidget::draw_string(int x, int y, QString s, int len, int flags)//{{{
 {
     gui.current_font->setBold(flags & DRAW_BOLD);
     gui.current_font->setUnderline(flags & DRAW_UNDERL);
     gui.current_font->setItalic(flags & DRAW_ITALIC);
-    painter->setBackgroundMode(flags & DRAW_TRANSP ? Qt::TransparentMode : Qt::OpaqueMode);
+    painter->setBackgroundMode(flags & DRAW_TRANSP
+                                     ? Qt::TransparentMode : Qt::OpaqueMode);
     painter->setFont(*(gui.current_font));
     painter->drawText(x, y, s, len);
 }//}}}
 
-void VimWidget::mousePressEvent(QMouseEvent *event)//{{{
+    void
+VimWidget::mousePressEvent(QMouseEvent *event)//{{{
 {
-    int button=0;
-    int modifiers=0;
+    int                button = 0;
+    int                modifiers = 0;
     ButtonState state = event->state();
     ButtonState buttons = event->button();
 
@@ -201,18 +206,21 @@ void VimWidget::mousePressEvent(QMouseEvent *event)//{{{
        modifiers |= MOUSE_CTRL;
     if (state & QMouseEvent::AltButton)
        modifiers |= MOUSE_ALT;
-    gui_send_mouse_event(button,event->x(),event->y(),FALSE,modifiers);
+    gui_send_mouse_event(button, event->x(), event->y(), FALSE, modifiers);
 #if QT_VERSION>=300
     QByteArray params;
     QDataStream stream(params, IO_WriteOnly);
-    stream << kapp->dcopClient()->appId() << button << modifiers << gui.row << gui.col;
-    kapp->dcopClient()->emitDCOPSignal("mousePEvent(QCString,int,int,int,int)", params);
+    stream << kapp->dcopClient()->appId() << button << modifiers
+                                                       << gui.row << gui.col;
+    kapp->dcopClient()->emitDCOPSignal(
+                        "mousePEvent(QCString, int, int, int, int)", params);
 #endif
     event->accept();
 }//}}}
 
 #if defined(FEAT_SESSION)
-void VimMainWindow::saveGlobalProperties (KConfig *conf)
+    void
+VimMainWindow::saveGlobalProperties(KConfig *conf)
 {
     //we write a mksession file to a file written in the user's ~/.kde/share/config/
     //the name of the file in saved in 'conf'
@@ -227,7 +235,8 @@ void VimMainWindow::saveGlobalProperties (KConfig *conf)
 #endif
 }
 
-void VimMainWindow::readGlobalProperties (KConfig *conf)
+    void
+VimMainWindow::readGlobalProperties (KConfig *conf)
 {
 #if 0
     QString filename = conf->readPathEntry("sessionfile");
@@ -239,194 +248,218 @@ void VimMainWindow::readGlobalProperties (KConfig *conf)
 }
 #endif
 
-void VimMainWindow::wheelEvent (QWheelEvent *event)//{{{
+    void
+VimMainWindow::wheelEvent (QWheelEvent *event)//{{{
 {
     ButtonState state = event->state();
-    int button=0;
-    int modifiers=0;
+    int                button = 0;
+    int                modifiers = 0;
 
-    if (event->delta()>0)
-       button|=MOUSE_4;
-    else button|=MOUSE_5;
+    if (event->delta() > 0)
+       button |= MOUSE_4;
+    else button |= MOUSE_5;
 
     if (state & ShiftButton)
-       modifiers|=MOUSE_SHIFT;
+       modifiers |= MOUSE_SHIFT;
     if (state & ControlButton)
-       modifiers|=MOUSE_CTRL;
+       modifiers |= MOUSE_CTRL;
     if (state & AltButton)
-       modifiers|=MOUSE_ALT;
+       modifiers |= MOUSE_ALT;
 
-    gui_send_mouse_event(button,event->x(),event->y(),FALSE,modifiers);
+    gui_send_mouse_event(button, event->x(), event->y(), FALSE, modifiers);
 #if QT_VERSION>=300
     QByteArray params;
     QDataStream stream(params, IO_WriteOnly);
-    stream << kapp->dcopClient()->appId() << button << modifiers << gui.row << gui.col;
-    kapp->dcopClient()->emitDCOPSignal("mouseWhlEvent(QCString, int, int,int,int)", params);
+    stream << kapp->dcopClient()->appId() << button << modifiers
+                                                       << gui.row << gui.col;
+    kapp->dcopClient()->emitDCOPSignal(
+                      "mouseWhlEvent(QCString, int, int, int, int)", params);
 #endif
     event->accept();
 }//}}}
 
-void VimWidget::mouseDoubleClickEvent(QMouseEvent *event)//{{{
+    void
+VimWidget::mouseDoubleClickEvent(QMouseEvent *event)//{{{
 {
     ButtonState state = event->state();
     ButtonState buttons = event->button();
-    int modifiers=0;
-    int button=0;
+    int                modifiers = 0;
+    int                button = 0;
 
     //Look at button states
     if (buttons & LeftButton)
-       button|=MOUSE_LEFT;
+       button |= MOUSE_LEFT;
     if (buttons & RightButton)
-       button|=MOUSE_RIGHT;
+       button |= MOUSE_RIGHT;
     if (buttons & MidButton)
-       button|=MOUSE_MIDDLE;
+       button |= MOUSE_MIDDLE;
 
     //Look for keyboard modifiers
     if (state & ShiftButton)
-       modifiers|=MOUSE_SHIFT;
+       modifiers |= MOUSE_SHIFT;
     if (state & ControlButton)
-       modifiers|=MOUSE_CTRL;
+       modifiers |= MOUSE_CTRL;
     if (state & AltButton)
-       modifiers|=MOUSE_ALT;
+       modifiers |= MOUSE_ALT;
 
-    gui_send_mouse_event(button,event->x(),event->y(),TRUE,modifiers);
+    gui_send_mouse_event(button, event->x(), event->y(), TRUE, modifiers);
 #if QT_VERSION>=300
     QByteArray params;
     QDataStream stream(params, IO_WriteOnly);
-    stream << kapp->dcopClient()->appId() << button << modifiers << gui.row << gui.col;
-    kapp->dcopClient()->emitDCOPSignal("mouseDblClickEvent(QCString, int, int,int,int)", params);
+    stream << kapp->dcopClient()->appId() << button << modifiers
+                                                       << gui.row << gui.col;
+    kapp->dcopClient()->emitDCOPSignal(
+                 "mouseDblClickEvent(QCString, int, int, int, int)", params);
 #endif
     event->accept();
 }//}}}
 
-void VimWidget::mouseMoveEvent(QMouseEvent *event){//{{{
+    void
+VimWidget::mouseMoveEvent(QMouseEvent *event)//{{{
+{
     ButtonState state = event->state();
-    int modifiers=0;
-    int button=0;
+    int                modifiers = 0;
+    int                button = 0;
 
     gui_mch_mousehide(FALSE);
 
     //Look at button states
     //warning: we use state here, this is important !
-    if (state & QMouseEvent::LeftButton || state & QMouseEvent::RightButton || state & QMouseEvent::MidButton)
-       button|=MOUSE_DRAG;
+    if (state & QMouseEvent::LeftButton
+           || state & QMouseEvent::RightButton
+           || state & QMouseEvent::MidButton)
+       button |= MOUSE_DRAG;
 
     //Look for keyboard modifiers
     if (state & ShiftButton)
-       modifiers|=MOUSE_SHIFT;
+       modifiers |= MOUSE_SHIFT;
     if (state & ControlButton)
-       modifiers|=MOUSE_CTRL;
+       modifiers |= MOUSE_CTRL;
     if (state & AltButton)
-       modifiers|=MOUSE_ALT;
-    if (button!=MOUSE_DRAG)
-       gui_mouse_moved(event->x(),event->y());
+       modifiers |= MOUSE_ALT;
+    if (button != MOUSE_DRAG)
+       gui_mouse_moved(event->x(), event->y());
     else
-       gui_send_mouse_event(MOUSE_DRAG,event->x(),event->y(),FALSE,modifiers);
+       gui_send_mouse_event(MOUSE_DRAG, event->x(), event->y(),
+                                                           FALSE, modifiers);
 }//}}}
 
-void VimWidget::mouseReleaseEvent(QMouseEvent *event)//{{{
+    void
+VimWidget::mouseReleaseEvent(QMouseEvent *event)//{{{
 {
     ButtonState state = event->state();
-    int modifiers=0;
+    int                modifiers = 0;
 
     //Look for keyboard modifiers
     if (state & ShiftButton)
-       modifiers|=MOUSE_SHIFT;
+       modifiers |= MOUSE_SHIFT;
     if (state & ControlButton)
-       modifiers|=MOUSE_CTRL;
+       modifiers |= MOUSE_CTRL;
     if (state & AltButton)
-       modifiers|=MOUSE_ALT;
+       modifiers |= MOUSE_ALT;
 
-    gui_send_mouse_event(MOUSE_RELEASE,event->x(),event->y(),FALSE,modifiers);
+    gui_send_mouse_event(MOUSE_RELEASE, event->x(), event->y(),
+                                                           FALSE, modifiers);
     event->accept();
 }//}}}
 
 /*
  *  The main widget (everything but toolbar/menubar)
  */
-    VimWidget::VimWidget( QWidget *parent, const char *name, WFlags f )//{{{
-:QWidget(parent, name, f)
-    ,DCOPObject("KVim")
+VimWidget::VimWidget(QWidget *parent, const char *name, WFlags f)//{{{
+    :QWidget(parent, name, f)
+    , DCOPObject("KVim")
 #ifdef FEAT_MZSCHEME
-    ,mzscheme_timer_id(-1)
+    , mzscheme_timer_id(-1)
 #endif
 {
     //to be able to show/hide the cursor when moving the mouse
     setMouseTracking(true);
-    painter=new QPainter(this);
+    painter = new QPainter(this);
 
     setKeyCompression(true);
-    setFocusPolicy( QWidget::StrongFocus );
+    setFocusPolicy(QWidget::StrongFocus);
     setAcceptDrops(TRUE); // DND
     blink_state = BLINK_NONE;
     blink_on_time = 700;
     blink_off_time = 400;
     blink_wait_time = 250;
-    connect( &blink_timer, SIGNAL( timeout() ), SLOT( blink_cursor() ));
-    connect( &wait_timer, SIGNAL( timeout() ), SLOT ( wait_timeout() ));
+    connect( &blink_timer, SIGNAL(timeout()), SLOT(blink_cursor()));
+    connect( &wait_timer, SIGNAL(timeout()), SLOT(wait_timeout()));
+    setInputMethodEnabled(true);
 }//}}}
 
-void VimWidget::execNormal(QString command)//{{{
+    void
+VimWidget::execNormal(QString command)//{{{
 {
     QString cmd("execute 'normal ");
-    cmd+=command;
-    cmd+="'";
+    cmd += command;
+    cmd += "'";
     QCString unistring = vmw->codec->fromUnicode(cmd);
     do_cmdline_cmd((char_u *)(const char*)unistring);
     gui_update_screen();
 }//}}}
 
-void VimWidget::execInsert(QString command)//{{{
+    void
+VimWidget::execInsert(QString command)//{{{
 {
     QString cmd("execute 'normal i");
-    cmd+=command;
-    cmd+="'";
+    cmd += command;
+    cmd += "'";
     QCString unistring = vmw->codec->fromUnicode(cmd);
     do_cmdline_cmd((char_u *)(const char*)unistring);
     gui_update_screen();
 }//}}}
 
-void VimWidget::execRaw(QString command)//{{{
+    void
+VimWidget::execRaw(QString command)//{{{
 {
     QString cmd("execute '");
-    cmd+=command;
-    cmd+="'";
+    cmd += command;
+    cmd += "'";
     QCString unistring = vmw->codec->fromUnicode(cmd);
     do_cmdline_cmd((char_u *)(const char*)unistring);
     gui_update_screen();
 }//}}}
 
-void VimWidget::execCmd(QString command)//{{{
+    void
+VimWidget::execCmd(QString command)//{{{
 {
     QCString unistring = vmw->codec->fromUnicode(command);
     do_cmdline_cmd((char_u *)(const char*)unistring);
     gui_update_screen();
 }//}}}
 
-QString VimWidget::eval(QString expr)//{{{
+    QString
+VimWidget::eval(QString expr)//{{{
 {
 #ifdef FEAT_EVAL
     QCString unistring = vmw->codec->fromUnicode(expr);
-    QString val((const char *)eval_to_string((char_u *)(const char*)unistring,NULL));
+    QString val((const char *)eval_to_string(
+                                    (char_u *)(const char*)unistring, NULL));
     return val;
 #else
     return QString::null;
 #endif
 }//}}}
 
-void VimWidget::wait(long wtime)//{{{
+    void
+VimWidget::wait(long wtime)//{{{
 {
-    if ( wait_timer.isActive() ) wait_timer.stop();
+    if (wait_timer.isActive())
+       wait_timer.stop();
     wait_done = false;
     wait_timer.start( wtime, true);
 }//}}}
 
-void VimWidget::wait_timeout() //{{{
+    void
+VimWidget::wait_timeout() //{{{
 {
     wait_done = true;
 }//}}}
 
-void VimWidget::dragEnterEvent (QDragEnterEvent *e)//{{{
+    void
+VimWidget::dragEnterEvent (QDragEnterEvent *e)//{{{
 {
 #if (defined(FEAT_WINDOWS) && defined(HAVE_DROP_FILE)) || defined(PROTO)
     e->accept(QUriDrag::canDecode(e));
@@ -435,10 +468,11 @@ void VimWidget::dragEnterEvent (QDragEnterEvent *e)//{{{
 #endif
 }//}}}
 
-void VimWidget::dropEvent (QDropEvent *e) // {{{
+    void
+VimWidget::dropEvent(QDropEvent *e) // {{{
 {
 #if (defined(FEAT_WINDOWS) && defined(HAVE_DROP_FILE)) || defined(PROTO)
-    QStrList  urls;
+    QStrList   urls;
 
     char_u     **fnames;
     int                redo_dirs = FALSE;
@@ -452,19 +486,19 @@ void VimWidget::dropEvent (QDropEvent *e) // {{{
     if (QUriDrag::decode(e, urls))
     {
        n = urls.count();
-        fnames = (char_u **)lalloc((n+1) * sizeof(char_u *), TRUE);
+       fnames = (char_u **)lalloc((n+1) * sizeof(char_u *), TRUE);
        nfiles = 0;
 #if QT_VERSION>=300
        QPtrListIterator<char> it(urls);
-       for (; it.current(); ++it )
+       for (; it.current(); ++it)
        {
            KURL u(*it);
 #else
-           for (i=0;i<urls.count();++i)
+           for (i = 0; i < urls.count(); ++i)
            {
                KURL u(urls.at(i));
 #endif
-               if ( !u.isLocalFile() )
+               if (!u.isLocalFile())
                    url = TRUE;
                else
                {
@@ -511,6 +545,7 @@ void VimWidget::dropEvent (QDropEvent *e) // {{{
                {
                    char_u      dirname[MAXPATHL];
                    char_u      *s;
+
                    if (mch_dirname(dirname, MAXPATHL) == OK)
                        for (i = 0; i < nfiles; ++i)
                            if (fnames[i] != NULL)
@@ -544,27 +579,35 @@ void VimWidget::dropEvent (QDropEvent *e) // {{{
 #endif
 } // }}}
 
-void VimWidget::keyPressEvent( QKeyEvent *e ) // {{{
+    void
+VimWidget::keyPressEvent(QKeyEvent *e) // {{{
 {
     gui_keypress(e);
 } // }}}
 
-void gui_keypress(QKeyEvent *e) { // {{{
-    int key = (int)e->key();
-    int modifiers = 0,i;
-    uchar string[256],string2[256];
-    uchar *s,*d;
+    void
+gui_keypress(QKeyEvent *e) // {{{
+{
+    int                    key = (int)e->key();
+    int                    modifiers = 0, i;
+    uchar          string[256], string2[256];
+    uchar          *s, *d;
     Qt::ButtonState state = e->state();
 
     QCString unistring = vmw->codec->fromUnicode(e->text());
-    if (unistring.length()>0)
-       strncpy((char*)string, (const char*)unistring,unistring.length());
+    if (unistring.length() > 0)
+       strncpy((char*)string, (const char*)unistring, unistring.length());
     string[unistring.length()] = 0;
-    int len=unistring.length();
+    int len = unistring.length();
 
     // ignore certain keys
-    if (key == Qt::Key_Shift || key == Qt::Key_Alt || key == Qt::Key_Control || key == Qt::Key_Meta
-           || key == Qt::Key_CapsLock || key == Qt::Key_NumLock || key == Qt::Key_ScrollLock )
+    if (key == Qt::Key_Shift
+           || key == Qt::Key_Alt
+           || key == Qt::Key_Control
+           || key == Qt::Key_Meta
+           || key == Qt::Key_CapsLock
+           || key == Qt::Key_NumLock
+           || key == Qt::Key_ScrollLock)
     {
        e->ignore();
        return;
@@ -595,12 +638,11 @@ void gui_keypress(QKeyEvent *e) { // {{{
 
 
     // change shift-tab (backtab) into S_TAB
-    if ( key == Qt::Key_BackTab && state & Qt::ShiftButton)
+    if (key == Qt::Key_BackTab && state & Qt::ShiftButton)
        key = Qt::Key_Tab;
 
     // Change C-@ and C-2 in NUL ? Gtk does this
-    if ( (key == Qt::Key_2 || key == Qt::Key_At)
-           && state & Qt::ControlButton )
+    if ((key == Qt::Key_2 || key == Qt::Key_At) && state & Qt::ControlButton)
     {
        string[0] = NUL;
        len = 1;
@@ -642,13 +684,14 @@ void gui_keypress(QKeyEvent *e) { // {{{
     /* Check for special keys, making sure BS and DEL are recognised. */
     if (len == 0 || key == Qt::Key_BackSpace || key == Qt::Key_Delete)
     {
-       while (special_keys[i].qtkey != 0 && special_keys[i].qtkey != key ) i++;
+       while (special_keys[i].qtkey != 0 && special_keys[i].qtkey != key)
+           i++;
        if (special_keys[i].qtkey != 0)
        {
-               string[0] = CSI;
-               string[1] = special_keys[i].code0;
-               string[2] = special_keys[i].code1;
-               len = -3;
+           string[0] = CSI;
+           string[1] = special_keys[i].code0;
+           string[2] = special_keys[i].code1;
+           len = -3;
        }
 /*
        for (i = 0; special_keys[i].qtkey != 0 ; i++)
@@ -674,15 +717,20 @@ void gui_keypress(QKeyEvent *e) { // {{{
 
 
     /* Special keys (and a few others) may have modifiers */
-    if (len == -3 || key == Qt::Key_Space || key == Qt::Key_Tab ||
-           key == Qt::Key_Return || key == Qt::Key_Enter ||
-           key == Qt::Key_Escape)
+    if (len == -3
+           || key == Qt::Key_Space
+           || key == Qt::Key_Tab
+           || key == Qt::Key_Return
+           || key == Qt::Key_Enter
+           || key == Qt::Key_Escape)
     {
-
        modifiers = 0;
-       if (state & Qt::ShiftButton) modifiers |= MOD_MASK_SHIFT;
-       if (state & Qt::ControlButton) modifiers |= MOD_MASK_CTRL;
-       if (state & Qt::AltButton) modifiers |= MOD_MASK_ALT;
+       if (state & Qt::ShiftButton)
+           modifiers |= MOD_MASK_SHIFT;
+       if (state & Qt::ControlButton)
+           modifiers |= MOD_MASK_CTRL;
+       if (state & Qt::AltButton)
+           modifiers |= MOD_MASK_ALT;
 
        /*
         * For some keys a shift modifier is translated into another key
@@ -695,7 +743,8 @@ void gui_keypress(QKeyEvent *e) { // {{{
            key = string[0];
 
        key = simplify_key(key, &modifiers);
-       if (key == CSI) key=K_CSI;
+       if (key == CSI)
+           key = K_CSI;
 
        if (IS_SPECIAL(key))
        {
@@ -710,8 +759,7 @@ void gui_keypress(QKeyEvent *e) { // {{{
            len = 1;
        }
 
-
-       if (modifiers!=0)
+       if (modifiers != 0)
        {
            uchar string2[10];
            string2[0] = CSI;
@@ -723,7 +771,7 @@ void gui_keypress(QKeyEvent *e) { // {{{
     } /* special keys */
 
     if (len == 1 && ((string[0] == Ctrl_C && ctrl_c_interrupts)
-               || (string[0] == intr_char && intr_char != Ctrl_C)))
+                         || (string[0] == intr_char && intr_char != Ctrl_C)))
     {
        trash_input_buf();
        got_int = TRUE;
@@ -748,13 +796,15 @@ void gui_keypress(QKeyEvent *e) { // {{{
     QByteArray params;
     QDataStream stream(params, IO_WriteOnly);
     stream << kapp->dcopClient()->appId() << unistring << gui.row << gui.col;
-    kapp->dcopClient()->emitDCOPSignal("keyboardEvent(QCString, QCString,int,int)", params);
+    kapp->dcopClient()->emitDCOPSignal(
+                      "keyboardEvent(QCString, QCString, int, int)", params);
 #endif
     e->ignore();
 } // }}}
 
 #ifdef FEAT_CLIENTSERVER
-void VimWidget::serverActivate(WId id) //{{{
+    void
+VimWidget::serverActivate(WId id) //{{{
 {
     if (serverName == NULL && serverDelayedStartName != NULL)
     {
@@ -767,53 +817,175 @@ void VimWidget::serverActivate(WId id) //{{{
 #endif
 
 #ifdef FEAT_XIM
-void VimWidget::imStartEvent(QIMEvent *e)
+
+static int preedit_buf_len = 0;
+static int im_preedit_cursor = 0;
+static int im_preedit_trailing = 0;
+
+    static void
+im_delete_preedit(void)
 {
+    char_u bskey[]  = {CSI, 'k', 'b'};
+    char_u delkey[] = {CSI, 'k', 'D'};
+
+    if (State & NORMAL)
+    {
+       im_preedit_cursor = 0;
+       return;
+    }
+    for (; im_preedit_cursor > 0; --im_preedit_cursor)
+       add_to_input_buf(bskey, (int)sizeof(bskey));
+
+    for (; im_preedit_trailing > 0; --im_preedit_trailing)
+       add_to_input_buf(delkey, (int)sizeof(delkey));
+}
+
+    void
+im_set_position(int row, int col)
+{
+    vmw->w->setMicroFocusHint(
+           TEXT_X(gui.col),
+           TEXT_Y(gui.row), 0, 0, TRUE, &vmw->w->font());
+}
+
+    int
+im_is_preediting()
+{
+    return (preedit_start_col != MAXCOL);
+}
+
+    int
+im_get_feedback_attr(int col)
+{
+    if (draw_feedback != NULL && col < preedit_buf_len)
+    {
+       if (draw_feedback[col] & XIMReverse)
+           return HL_INVERSE;
+       else if (draw_feedback[col] & XIMUnderline)
+           return HL_UNDERLINE;
+       else
+           return hl_attr(HLF_V);
+    }
+
+    return -1;
+}
+
+    void
+VimWidget::imStartEvent(QIMEvent *e)
+{
+    if (State & CMDLINE)
+       preedit_start_col = cmdline_getvcol_cursor();
+    else if (curwin != NULL)
+       getvcol(curwin, &curwin->w_cursor, &preedit_start_col, NULL, NULL);
+    xic = (XIC)!NULL;
     e->accept();
 }
 
-void VimWidget::imEndEvent(QIMEvent *e)
+    void
+VimWidget::imEndEvent(QIMEvent *e)
 {
     uchar string[256];
 
+    im_delete_preedit();
+
     QCString unistring = vmw->codec->fromUnicode(e->text());
-    if (unistring.length()>0)
-       strncpy((char*)string, (const char*)unistring,unistring.length());
+    if (unistring.length() > 0)
+       strncpy((char*)string, (const char*)unistring, unistring.length());
     string[unistring.length()] = 0;
-    int len=unistring.length();
-
-    add_to_input_buf(string, len);
+    int len = unistring.length();
+
+    add_to_input_buf_csi(string, len);
+    im_preedit_cursor = 0;
+    im_preedit_trailing = 0;
+    preedit_start_col = MAXCOL;
+    preedit_buf_len = 0;
+    if (draw_feedback)
+    {
+       free(draw_feedback);
+       draw_feedback = NULL;
+    }
+    xic = 0;
     e->accept();
 }
 
-void VimWidget::imComposeEvent(QIMEvent *e)
+    void
+VimWidget::imComposeEvent(QIMEvent *e)
 {
-    //i should do something here, displaying the text somewhere ... (status area ?)
+    uchar string[256];
+    char_u backkey[] = {CSI, 'k', 'l'};
+
+    im_delete_preedit();
+
+    if (State & NORMAL)
+    {
+       im_preedit_cursor = 0;
+       return;
+    }
+
+    QCString unistring = vmw->codec->fromUnicode(e->text());
+    if (unistring.length() > 0)
+       strncpy((char*)string, (const char*)unistring,unistring.length());
+    string[unistring.length()] = 0;
+    int len = unistring.length();
+    add_to_input_buf_csi(string, len);
+
+    preedit_buf_len = e->text().length();
+    if (draw_feedback == NULL)
+       draw_feedback = (char *)alloc(preedit_buf_len);
+    else
+       draw_feedback = (char *)realloc(draw_feedback, preedit_buf_len);
+    preedit_end_col = preedit_start_col;
+
+    char_u *p = string;
+    for (int n = 0; n < preedit_buf_len; n++)
+    {
+       if (n < e->cursorPos() || n >= e->cursorPos() + e->selectionLength())
+           draw_feedback[n] = XIMUnderline;
+       else
+           draw_feedback[n] = XIMReverse;
+       preedit_end_col += (*mb_ptr2cells)(p);
+       p += (*mb_ptr2len_check)(p);
+    }
+    im_preedit_cursor = e->cursorPos();
+    im_preedit_trailing = preedit_buf_len - im_preedit_cursor;
+
+#  ifdef FEAT_RIGHTLEFT
+    if ((State & CMDLINE) == 0 && curwin != NULL && curwin->w_p_rl)
+       backkey[2] = 'r';
+#  endif
+    for (int n = 0; n < im_preedit_trailing; n++)
+       add_to_input_buf(backkey, (int)sizeof(backkey));
+
     e->accept();
 }
 #endif
 
 
-void VimMainWindow::lock()
+    void
+VimMainWindow::lock()
 {
-    locked=true;
+    locked = true;
 }
 
-void VimMainWindow::unlock()
+    void
+VimMainWindow::unlock()
 {
-    locked=false;
+    locked = false;
 }
 
-bool VimMainWindow::isLocked()
+    bool
+VimMainWindow::isLocked()
 {
     return locked;
 }
 
 // ->resize VimWidget if not locked
 //
-void VimMainWindow::resizeEvent ( QResizeEvent *e ) //{{{
+    void
+VimMainWindow::resizeEvent(QResizeEvent *e) //{{{
 {
-    if ( vmw->isLocked() ) return;
+    if (vmw->isLocked())
+       return;
     //remove toolbar and menubar height
     int height = e->size().height();
     int width = e->size().width();
@@ -825,21 +997,23 @@ void VimMainWindow::resizeEvent ( QResizeEvent *e ) //{{{
            )
        height -= vmw->menuBar()->height();
 #ifdef FEAT_TOOLBAR
-    if (vmw->toolBar()->isVisible() && vmw->toolBar()->isEnabled() &&
-           (vmw->toolBar()->barPos()==KToolBar::Top ||
-            vmw->toolBar()->barPos()==KToolBar::Bottom))
+    if (vmw->toolBar()->isVisible() && vmw->toolBar()->isEnabled()
+           && (vmw->toolBar()->barPos() == KToolBar::Top
+               || vmw->toolBar()->barPos() == KToolBar::Bottom))
        height -= vmw->toolBar()->height();
 
-    if (vmw->toolBar()->isVisible() && vmw->toolBar()->isEnabled() &&
-           (vmw->toolBar()->barPos()==KToolBar::Left ||
-            vmw->toolBar()->barPos()==KToolBar::Right))
+    if (vmw->toolBar()->isVisible() && vmw->toolBar()->isEnabled()
+           && (vmw->toolBar()->barPos() == KToolBar::Left
+               || vmw->toolBar()->barPos() == KToolBar::Right))
        width -= vmw->toolBar()->width();
 #endif
-    height = ( ((int)(height/gui.char_height))*gui.char_height );
-    if (!vmw->isLocked()) gui_resize_shell(width,height);
+    height = ((int)(height/gui.char_height))*gui.char_height;
+    if (!vmw->isLocked())
+       gui_resize_shell(width, height);
 }//}}}
 
-void VimWidget::focusInEvent( QFocusEvent * fe ) // {{{
+    void
+VimWidget::focusInEvent(QFocusEvent *fe) // {{{
 {
     gui_focus_change(true);
 
@@ -847,7 +1021,8 @@ void VimWidget::focusInEvent( QFocusEvent * fe ) // {{{
        gui_mch_start_blink();
 } // }}}
 
-void VimWidget::focusOutEvent( QFocusEvent * fe )//{{{
+    void
+VimWidget::focusOutEvent(QFocusEvent *fe)//{{{
 {
     gui_focus_change(false);
 
@@ -855,16 +1030,19 @@ void VimWidget::focusOutEvent( QFocusEvent * fe )//{{{
        gui_mch_stop_blink();
 }//}}}
 
-void VimWidget::set_blink_time( long wait, long on, long off)//{{{
+    void
+VimWidget::set_blink_time(long wait, long on, long off)//{{{
 {
     blink_wait_time = wait;
     blink_on_time = on;
     blink_off_time = off;
 }//}}}
 
-void VimWidget::start_cursor_blinking()//{{{
+    void
+VimWidget::start_cursor_blinking()//{{{
 {
-    if (blink_timer.isActive()) blink_timer.stop();
+    if (blink_timer.isActive())
+       blink_timer.stop();
 
     /* Only switch blinking on if none of the times is zero */
     if (blink_wait_time && blink_on_time && blink_off_time && gui.in_focus)
@@ -876,7 +1054,8 @@ void VimWidget::start_cursor_blinking()//{{{
     }
 }//}}}
 
-void VimWidget::blink_cursor()//{{{
+    void
+VimWidget::blink_cursor()//{{{
 {
     if (blink_state == BLINK_ON)
     {
@@ -894,9 +1073,11 @@ void VimWidget::blink_cursor()//{{{
     }
 }//}}}
 
-void VimWidget::stop_cursor_blinking()//{{{
+    void
+VimWidget::stop_cursor_blinking()//{{{
 {
-    if (blink_timer.isActive()) blink_timer.stop();
+    if (blink_timer.isActive())
+       blink_timer.stop();
 
     if (blink_state == BLINK_OFF)
        gui_update_cursor(TRUE, FALSE);
@@ -905,33 +1086,37 @@ void VimWidget::stop_cursor_blinking()//{{{
 }//}}}
 
 #ifdef FEAT_MZSCHEME
-void VimWidget::timerEvent( QTimerEvent * evnt)//{{{
+    void
+VimWidget::timerEvent(QTimerEvent * evnt)//{{{
 {
     if (evnt->timerId() == mzscheme_timer_id)
        timer_proc();
 }//}}}
 
-void VimWidget::enable_mzscheme_threads()//{{{
+    void
+VimWidget::enable_mzscheme_threads()//{{{
 {
     mzscheme_timer_id = startTimer(p_mzq);
 }//}}}
 
-void VimWidget::disable_mzscheme_threads()//{{{
+    void
+VimWidget::disable_mzscheme_threads()//{{{
 {
     killTimer(mzscheme_timer_id);
 }//}}}
 #endif
 
-void VimWidget::flash()//{{{
+    void
+VimWidget::flash()//{{{
 {
     QPainter p(this);
 
     p.setRasterOp(Qt::XorROP);
-    p.fillRect(geometry(),QColor(0xFF,0xFF,0xFF));
+    p.fillRect(geometry(), QColor(0xFF, 0xFF, 0xFF));
     p.flush();
     //FIXME: Make this a little smarter. Maybe add a timer or something
     usleep(19000);
-    p.fillRect(geometry(),QColor(0xFF,0xFF,0xFF));
+    p.fillRect(geometry(), QColor(0xFF, 0xFF, 0xFF));
     p.flush();
     p.end();
 }//}}}
@@ -940,13 +1125,13 @@ void VimWidget::flash()//{{{
 /*
  *  The main Window
  */
-    VimMainWindow::VimMainWindow ( const char *name , WFlags f)//{{{
-:KMainWindow(0L, name,f)
+VimMainWindow::VimMainWindow(const char *name , WFlags f)//{{{
+       :KMainWindow(0L, name, f)
 {
 #ifdef FEAT_CLIENTSERVER
-    oldFilter = qt_set_x11_event_filter( kvim_x11_event_filter );
+    oldFilter = qt_set_x11_event_filter(kvim_x11_event_filter);
 #endif
-    if (echo_wid_arg== 1)
+    if (echo_wid_arg == 1)
     {
        fprintf(stderr, "WID: %ld\n", (long)winId());
        fflush(stderr);
@@ -956,14 +1141,15 @@ void VimWidget::flash()//{{{
     gui.w = w;
     setFocusProxy(w);
     w->setFocus();
-    have_tearoff=0;
+    have_tearoff = 0;
 
-    finddlg=new KEdFind (this,0,false);
-    repldlg=new KEdReplace (this,0,false);
-    QObject::connect( finddlg, SIGNAL(search()), this, SLOT(slotSearch()) );
-    QObject::connect( repldlg, SIGNAL(find()), this, SLOT(slotFind()) );
-    QObject::connect( repldlg, SIGNAL(replace()), this, SLOT(slotReplace()) );
-    QObject::connect( repldlg, SIGNAL(replaceAll()), this, SLOT(slotReplaceAll()) );
+    finddlg = new KEdFind(this, 0, false);
+    repldlg = new KEdReplace(this, 0, false);
+    QObject::connect(finddlg, SIGNAL(search()), this, SLOT(slotSearch()));
+    QObject::connect(repldlg, SIGNAL(find()), this, SLOT(slotFind()));
+    QObject::connect(repldlg, SIGNAL(replace()), this, SLOT(slotReplace()));
+    QObject::connect(repldlg, SIGNAL(replaceAll()), this,
+                                                     SLOT(slotReplaceAll()));
 
 #ifdef FEAT_TOOLBAR
     connect(toolBar(), SIGNAL(clicked(int)), this, SLOT(menu_activated(int)));
@@ -971,51 +1157,59 @@ void VimWidget::flash()//{{{
 #ifdef FEAT_CLIENTSERVER
     w->serverActivate(winId());
 
-    if (serverName!=NULL)
-        kapp->dcopClient()->registerAs(QCString((const char*)serverName),false);
-    else if (serverDelayedStartName!=NULL)
-        kapp->dcopClient()->registerAs(QCString((const char*)serverDelayedStartName),false);
-    else if (argServerName!=NULL)
-        kapp->dcopClient()->registerAs(argServerName->utf8(),false);
+    if (serverName != NULL)
+       kapp->dcopClient()->registerAs(QCString((const char*)serverName),
+                                                                      false);
+    else if (serverDelayedStartName != NULL)
+       kapp->dcopClient()->registerAs(
+                       QCString((const char*)serverDelayedStartName), false);
+    else if (argServerName != NULL)
+       kapp->dcopClient()->registerAs(argServerName->utf8(), false);
 #else
-    if (argServerName!=NULL)
-        kapp->dcopClient()->registerAs(argServerName->utf8(),false);
+    if (argServerName != NULL)
+       kapp->dcopClient()->registerAs(argServerName->utf8(), false);
 #endif
     QXEmbed::initialize();
 
 }//{{{
 
-bool VimMainWindow::queryClose()//{{{
+    bool
+VimMainWindow::queryClose()//{{{
 {
     gui_shell_closed();
     return true;
 }//}}}
 
-bool VimMainWindow::queryExit()//{{{
+    bool
+VimMainWindow::queryExit()//{{{
 {
     return true;
 }//}}}
 
-void VimMainWindow::menu_activated(int dx)//{{{
+    void
+VimMainWindow::menu_activated(int dx)//{{{
 {
 #ifdef FEAT_MENU
-    if (!dx) { // tearoff
+    if (!dx)   // tearoff
        return;
-    }
     gui_mch_set_foreground();
-    gui_menu_cb((VimMenu *) dx);
+    gui_menu_cb((VimMenu *)dx);
 #endif
 }//}}}
 
 
-void VimMainWindow::clipboard_selection_update(){//{{{
+    void
+VimMainWindow::clipboard_selection_update()//{{{
+{
     if (kapp->clipboard()->ownsSelection())
        clip_own_selection(&clip_star);
     else
        clip_lose_selection(&clip_star);
 }//}}}
 
-void VimMainWindow::clipboard_data_update(){//{{{
+    void
+VimMainWindow::clipboard_data_update()//{{{
+{
 #if QT_VERSION>=300
     if (kapp->clipboard()->ownsClipboard())
        clip_own_selection(&clip_plus);
@@ -1029,7 +1223,8 @@ void VimMainWindow::clipboard_data_update(){//{{{
 #endif
 }//}}}
 
-void VimMainWindow::slotSearch()//{{{
+    void
+VimMainWindow::slotSearch()//{{{
 {
     QString    find_text;
     bool       direction_down = TRUE;
@@ -1041,78 +1236,89 @@ void VimMainWindow::slotSearch()//{{{
     casesensitive = finddlg->case_sensitive();
     //    if (casesensitive) find_text = "\\C" + find_text;
     //    else find_text = "\\c" + find_text;
-    if (casesensitive) flags|=FRD_MATCH_CASE;
+    if (casesensitive)
+       flags |= FRD_MATCH_CASE;
     QCString unistring = vmw->codec->fromUnicode(find_text);
-    gui_do_findrepl(flags, (char_u *)(const char *)unistring, NULL,(int)direction_down);
+    gui_do_findrepl(flags, (char_u *)(const char *)unistring, NULL,
+                                                        (int)direction_down);
 }//}}}
 
-void VimMainWindow::slotFind()//{{{
+    void
+VimMainWindow::slotFind()//{{{
 {
     QString    find_text;
-    bool       direction_down=TRUE;
+    bool       direction_down = TRUE;
     bool       casesensitive = TRUE;
     int                flags = FRD_R_FINDNEXT;
 
-    find_text=repldlg->getText();
+    find_text = repldlg->getText();
     direction_down = !(repldlg->get_direction());
     casesensitive = repldlg->case_sensitive();
     //    if (casesensitive) find_text = "\\C" + find_text;
     //    else find_text = "\\c" + find_text;
-    if (casesensitive) flags|=FRD_MATCH_CASE;
+    if (casesensitive) flags |= FRD_MATCH_CASE;
 
     QCString unistring = vmw->codec->fromUnicode(find_text);
-    gui_do_findrepl(flags, (char_u *)(const char *)unistring, NULL,(int)direction_down);
+    gui_do_findrepl(flags, (char_u *)(const char *)unistring, NULL,
+                                                        (int)direction_down);
 }//}}}
 
-void VimMainWindow::slotReplace()//{{{
+    void
+VimMainWindow::slotReplace()//{{{
 {
     QString    find_text;
     QString     repl_text;
-    bool       direction_down=TRUE;
+    bool       direction_down = TRUE;
     bool       casesensitive = TRUE;
     int                flags = FRD_REPLACE;
 
-    find_text=repldlg->getText();
-    repl_text=repldlg->getReplaceText();
+    find_text = repldlg->getText();
+    repl_text = repldlg->getReplaceText();
     direction_down = !(repldlg->get_direction());
     //if (casesensitive) find_text = "\\C" + find_text;
     //else find_text = "\\c" + find_text;
-    if (casesensitive) flags|=FRD_MATCH_CASE;
+    if (casesensitive) flags |= FRD_MATCH_CASE;
 
     QCString unistring = vmw->codec->fromUnicode(find_text);
     QCString unistring2 = vmw->codec->fromUnicode(repl_text);
-    gui_do_findrepl(flags, (char_u *)(const char *)unistring,(char_u *)(const char*)unistring2,(int)direction_down);
+    gui_do_findrepl(flags, (char_u *)(const char *)unistring,
+                     (char_u *)(const char*)unistring2, (int)direction_down);
 }//}}}
 
-void VimMainWindow::slotReplaceAll()//{{{
+    void
+VimMainWindow::slotReplaceAll()//{{{
 {
     QString    find_text;
     QString     repl_text;
-    bool       direction_down=TRUE;
+    bool       direction_down = TRUE;
     bool       casesensitive = TRUE;
     int                flags = FRD_REPLACEALL;
 
-    find_text=repldlg->getText();
-    repl_text=repldlg->getReplaceText();
+    find_text = repldlg->getText();
+    repl_text = repldlg->getReplaceText();
     direction_down = !(repldlg->get_direction());
     casesensitive = repldlg->case_sensitive();
     //    if (casesensitive) find_text = "\\C" + find_text;
     //    else find_text = "\\c" + find_text;
-    if (casesensitive) flags|=FRD_MATCH_CASE;
+    if (casesensitive)
+       flags |= FRD_MATCH_CASE;
     QCString unistring = vmw->codec->fromUnicode(find_text);
     QCString unistring2 = vmw->codec->fromUnicode(repl_text);
-    gui_do_findrepl(flags, (char_u *)(const char *)unistring,(char_u *)(const char*)unistring2,(int)direction_down);
+    gui_do_findrepl(flags, (char_u *)(const char *)unistring,
+                     (char_u *)(const char*)unistring2, (int)direction_down);
 }//}}}
 
-void VimMainWindow::showAboutKDE()
+    void
+VimMainWindow::showAboutKDE()
 {
     KAboutKDE *kde = new KAboutKDE(this);
     kde->show();
 }
 
-void VimMainWindow::showAboutApplication()//{{{
+    void
+VimMainWindow::showAboutApplication()//{{{
 {
-    KAboutData *aboutData = new KAboutData (
+    KAboutData *aboutData = new KAboutData(
            "kvim"
            , I18N_NOOP("KVim")
            , VIM_VERSION_SHORT
@@ -1173,23 +1379,27 @@ Or read the file $VIMRUNTIME/doc/uganda.txt.");
     about->show();
 }//}}}
 
-void VimMainWindow::showTipOfTheDay()
+    void
+VimMainWindow::showTipOfTheDay()
 {
 #if QT_VERSION>=300
-    KTipDialog::showTip (vmw,QString::null,true);
+    KTipDialog::showTip(vmw, QString::null, true);
 #endif
 }
 
-void VimMainWindow::buffersToolbar()
+    void
+VimMainWindow::buffersToolbar()
 {
 
 }
 
-void VimMainWindow::showBugReport()
+    void
+VimMainWindow::showBugReport()
 {
-    KBugReport *bug= new KBugReport(this,true);
+    KBugReport *bug= new KBugReport(this, true);
     bug->show();
 }
+
 /*
  *   Vim Dialog
  *
@@ -1198,13 +1408,13 @@ void VimMainWindow::showBugReport()
  *  1- : nb of the pressed button
  */
 
-VimDialog::VimDialog (int type,                /* type of dialog *///{{{
+VimDialog::VimDialog(int type,         /* type of dialog *///{{{
        char_u * title,         /* title of dialog */
        char_u * message,       /* message text */
        char_u * buttons,       /* names of buttons */
        int def_but,            /* default button */
-       char_u *textfield )     /* input field */
-:QDialog(vmw, "vim generic dialog", true), // true is for "modal"
+       char_u *textfield     /* input field */
+    :QDialog(vmw, "vim generic dialog", true), // true is for "modal"
     mapper(this, "dialog signal mapper")
 {
     /*
@@ -1231,73 +1441,74 @@ VimDialog::VimDialog (int type,         /* type of dialog *///{{{
        default:
            icon_data = generic_xpm;
     };
-    QLabel * icon = new QLabel( this );
-    icon->setPixmap( QPixmap( (const char **) icon_data ) );
-    icon->setFixedSize( icon->sizeHint() );
+    QLabel * icon = new QLabel(this);
+    icon->setPixmap(QPixmap((const char **) icon_data));
+    icon->setFixedSize(icon->sizeHint());
 
-    QLabel * text = new QLabel( (const char *)message, this );
-    text->setAlignment( AlignHCenter | AlignVCenter | ExpandTabs );
+    QLabel * text = new QLabel(QSTR(message), this);
+    text->setAlignment(AlignHCenter | AlignVCenter | ExpandTabs);
 
-    QStringList buttonText = QStringList::split( DLG_BUTTON_SEP, (char *) buttons);
+    QStringList buttonText = QStringList::split(DLG_BUTTON_SEP, QSTR(buttons));
     int butNb = buttonText.count();
 
     /*
      *  Layout
      */
 
-    QVBoxLayout * vly = new QVBoxLayout( this, 5, 5 );
-    QHBoxLayout * hly1 = new QHBoxLayout( vly, 5);
-    hly1->addWidget( icon );
-    hly1->addWidget( text );
-    QHBoxLayout * hly3 = new QHBoxLayout ( vly , 5);
-    if (textfield!=NULL)
+    QVBoxLayout * vly = new QVBoxLayout(this, 5, 5);
+    QHBoxLayout * hly1 = new QHBoxLayout(vly, 5);
+    hly1->addWidget(icon);
+    hly1->addWidget(text);
+    QHBoxLayout * hly3 = new QHBoxLayout(vly , 5);
+    if (textfield != NULL)
     {
-       entry = new QLineEdit((const char *)textfield,this);
-       entry->setText((const char *)textfield);
-       hly3->addWidget( entry );
-       ret=textfield;
+       entry = new QLineEdit(QSTR(textfield), this);
+       entry->setText(QSTR(textfield));
+       hly3->addWidget(entry);
+       ret = textfield;
     }
     else
-       entry=NULL;
+       entry = NULL;
 
-    QHBoxLayout * hly2 = new QHBoxLayout( vly, 15);
+    QHBoxLayout * hly2 = new QHBoxLayout(vly, 15);
     QString s;
     QPushButton * pushButton = 0L;
-    for (int i=0; i<butNb; i++)
+    for (int i = 0; i<butNb; i++)
     {
        s = buttonText[i];
-       pushButton = new QPushButton(s, this );
+       pushButton = new QPushButton(s, this);
        if (s.find('&') != -1)
-           pushButton->setAccel(s.at(s.find('&')+1).latin1());
+           pushButton->setAccel(s.at(s.find('&') + 1).latin1());
 
-       hly2->addWidget( pushButton );
-       if (i == def_but-1)
+       hly2->addWidget(pushButton);
+       if (i == def_but - 1)
        {
-           pushButton->setDefault( true );
-           pushButton->setAutoDefault( true );
-           setResult( i+1 );
+           pushButton->setDefault(true);
+           pushButton->setAutoDefault(true);
+           setResult(i + 1);
        }
        connect(pushButton, SIGNAL(clicked()), &mapper, SLOT(map()));
-       mapper.setMapping(pushButton, i+1);
+       mapper.setMapping(pushButton, i + 1);
     }
-    connect( &mapper, SIGNAL(mapped(int)), this, SLOT(done(int)));
+    connect(&mapper, SIGNAL(mapped(int)), this, SLOT(done(int)));
 
-    setCaption((const char *) title);
+    setCaption(QSTR(title));
 
     vly->activate();
 }//}}}
 
-void VimDialog::done(int r)
+    void
+VimDialog::done(int r)
 {
-    if (entry!=NULL)
+    if (entry != NULL)
     {
-        if (r)
+       if (r)
        {
-          QCString unistring=vmw->codec->fromUnicode(entry->text());
-          STRCPY(ret,(const char*)unistring);
+          QCString unistring = vmw->codec->fromUnicode(entry->text());
+          STRCPY(ret, (const char*)unistring);
        }
        else
-           *ret=NUL;
+           *ret = NUL;
     }
     QDialog::done(r);
 }
@@ -1312,7 +1523,8 @@ SBPool::SBPool(void)//{{{
 }//}}}
 
 
-void SBPool::create(GuiScrollbar * sb, int orient)//{{{
+    void
+SBPool::create(GuiScrollbar * sb, int orient)//{{{
 {
     switch(orient)
     {
@@ -1332,23 +1544,27 @@ void SBPool::create(GuiScrollbar * sb, int orient)//{{{
 }//}}}
 
 
-void SBPool::sbUsed(int who)//{{{
+    void
+SBPool::sbUsed(int who)//{{{
 {
     GuiScrollbar *sb = (GuiScrollbar*)who;
-    gui_drag_scrollbar( sb, sb->w->value(), FALSE);
+    gui_drag_scrollbar(sb, sb->w->value(), FALSE);
 }//}}}
 
 
-void SBPool::destroy(GuiScrollbar * sb)//{{{
+    void
+SBPool::destroy(GuiScrollbar *sb)//{{{
 {
-    if (!sb->w) return;
+    if (!sb->w)
+       return;
 
     delete sb->w;
     sb->w = 0;
 }//}}}
 
 #ifdef FEAT_CLIENTSERVER
-static int kvim_x11_event_filter( XEvent* e)//{{{
+    static int
+kvim_x11_event_filter(XEvent* e)//{{{
 {
     if (e->xproperty.type == PropertyNotify
            && e->xproperty.atom == commProperty
@@ -1356,14 +1572,16 @@ static int kvim_x11_event_filter( XEvent* e)//{{{
            && e->xproperty.state == PropertyNewValue)
        serverEventProc(qt_xdisplay(), e);
 
-    if (oldFilter) return oldFilter( e );
+    if (oldFilter)
+       return oldFilter( e );
     return FALSE;
 }//}}}
 #endif
 
 //add some QT 3 fonts usefull functions
 #if QT_VERSION<300
-QString KVimUtils::toString(QFont *f)
+    QString
+KVimUtils::toString(QFont *f)
 {
     QStringList l;
     l.append(f->family());
@@ -1379,17 +1597,18 @@ QString KVimUtils::toString(QFont *f)
     return l.join(",");
 }
 
-bool KVimUtils::fromString(QFont *f, QString descrip)
+    bool
+KVimUtils::fromString(QFont *f, QString descrip)
 {
    QStringList l(QStringList::split(',', descrip));
 
     int count = l.count();
     if (count != 10 && count != 9)
-        return FALSE;
+       return FALSE;
 
     f->setFamily(l[0]);
     f->setPointSize(l[1].toInt());
-    if ( count == 9 )
+    if (count == 9)
     {
        f->setStyleHint((QFont::StyleHint) l[2].toInt());
        f->setWeight(l[3].toInt());
@@ -1414,9 +1633,12 @@ bool KVimUtils::fromString(QFont *f, QString descrip)
 }
 #endif
 
-QString KVimUtils::convertEncodingName(QString name)
+    QString
+KVimUtils::convertEncodingName(QString name)
 {
-    if (name.startsWith("ucs") || name.startsWith("utf-16")) return QString("utf16");
-    if (name=="cp950") return QString("Big5");
+    if (name.startsWith("ucs") || name.startsWith("utf-16"))
+       return QString("utf16");
+    if (name == "cp950")
+       return QString("Big5");
     return QString();
 }
index 39102daa52be600dca28cfc72dad2a05081346ce..4eb67be72d9ec653e81e7d0b4986a213417553ee 100644 (file)
@@ -68,7 +68,8 @@ class QLineEdit;
 class QSignalMapper;
 class QPaintEvent;
 
-enum BlinkState {
+enum BlinkState
+{
        BLINK_NONE,
        BLINK_ON,
        BLINK_OFF
@@ -79,12 +80,12 @@ class VimWidget : public QWidget, virtual public KVim
        Q_OBJECT
 
 public:
-       VimWidget( QWidget *parent=0, const char *name=0, WFlags f=0 );
-       virtual void paintEvent( QPaintEvent *);
+       VimWidget(QWidget *parent = 0, const char *name = 0, WFlags f = 0);
+       virtual void paintEvent(QPaintEvent *);
        void    draw_string(int x, int y, QString s, int len, int flags);
 
        /** Init the blinking time */
-       void set_blink_time( long, long, long );
+       void set_blink_time(long, long, long);
        void start_cursor_blinking();
        void stop_cursor_blinking();
        void wait(long);
@@ -108,24 +109,28 @@ public:
        BlinkState blink_state;
        QPainter *painter;
        QPopupMenu *menu;
+       virtual void setMicroFocusHint(int x, int y, int w, int h, bool text=TRUE, QFont *f = 0)
+       {
+           QWidget::setMicroFocusHint(x, y, w, h, text, f);
+       }
 
 protected:
-       virtual void keyPressEvent( QKeyEvent * );
-       virtual void mousePressEvent( QMouseEvent *);
-       virtual void mouseDoubleClickEvent( QMouseEvent *);
-       virtual void mouseReleaseEvent( QMouseEvent *);
-       virtual void mouseMoveEvent( QMouseEvent *);
-       virtual void focusInEvent( QFocusEvent * );
-       virtual void focusOutEvent( QFocusEvent * );
-       virtual void dragEnterEvent (QDragEnterEvent *);
-       virtual void dropEvent (QDropEvent *);
+       virtual void keyPressEvent(QKeyEvent *);
+       virtual void mousePressEvent(QMouseEvent *);
+       virtual void mouseDoubleClickEvent(QMouseEvent *);
+       virtual void mouseReleaseEvent(QMouseEvent *);
+       virtual void mouseMoveEvent(QMouseEvent *);
+       virtual void focusInEvent(QFocusEvent *);
+       virtual void focusOutEvent(QFocusEvent *);
+       virtual void dragEnterEvent(QDragEnterEvent *);
+       virtual void dropEvent(QDropEvent *);
 #ifdef FEAT_XIM
-       virtual void imStartEvent ( QIMEvent * );
-       virtual void imEndEvent ( QIMEvent * );
-       virtual void imComposeEvent ( QIMEvent * );
+       virtual void imStartEvent(QIMEvent *);
+       virtual void imEndEvent(QIMEvent *);
+       virtual void imComposeEvent(QIMEvent *);
 #endif
 #ifdef FEAT_MZSCHEME
-       virtual void timerEvent( QTimerEvent * );
+       virtual void timerEvent(QTimerEvent *);
 #endif
 
        /* cursor blinking stuff */
@@ -149,24 +154,24 @@ class VimMainWindow : public KMainWindow
        Q_OBJECT
 
 public:
-       VimMainWindow ( const char *name = 0L, WFlags f = WDestructiveClose );
+       VimMainWindow(const char *name = 0L, WFlags f = WDestructiveClose);
 
        /** called when the widget closes */
 //     bool close(bool alsoDelete);
        VimWidget       *w;
-        KEdFind         *finddlg;
-        KEdReplace      *repldlg;
+       KEdFind         *finddlg;
+       KEdReplace      *repldlg;
        int             have_tearoff;
        QTextCodec      *codec;
 
 public slots:
        void    menu_activated(int dx);
-       void    clipboard_selection_update();
-       void    clipboard_data_update();
-        void    slotSearch();
-        void    slotFind();
-        void    slotReplace();
-        void    slotReplaceAll();
+       void    clipboard_selection_update();
+       void    clipboard_data_update();
+       void    slotSearch();
+       void    slotFind();
+       void    slotReplace();
+       void    slotReplaceAll();
        void    showAboutApplication();
        void    showAboutKDE();
        void    showBugReport();
@@ -177,12 +182,12 @@ public slots:
        void    unlock();
 
 protected:
-       virtual void wheelEvent (QWheelEvent *);
-       virtual void resizeEvent ( QResizeEvent *e );
+       virtual void wheelEvent(QWheelEvent *);
+       virtual void resizeEvent(QResizeEvent *e);
 
 #if defined(FEAT_SESSION)
-       void saveGlobalProperties (KConfig *conf);
-       void readGlobalProperties (KConfig *conf);
+       void saveGlobalProperties(KConfig *conf);
+       void readGlobalProperties(KConfig *conf);
 #endif
        bool queryClose();
        bool queryExit();
@@ -194,10 +199,10 @@ class VimDialog : public QDialog
 {
        Q_OBJECT
 public:
-       VimDialog (int type,            /* type of dialog */
-              unsigned char * title,           /* title of dialog */
-              unsigned char * message, /* message text */
-              unsigned char * buttons, /* names of buttons */
+       VimDialog(int type,             /* type of dialog */
+              unsigned char *title,            /* title of dialog */
+              unsigned char *message,  /* message text */
+              unsigned char *buttons,  /* names of buttons */
               int def_but,             /* default button */
               char_u *textfield);              /* input text */
 private:
@@ -229,7 +234,8 @@ private:
        QSignalMapper mapper;
 };
 
-class KVimUtils {
+class KVimUtils
+{
 public:
        static QString convertEncodingName(QString);
 #if QT_VERSION<300
@@ -240,6 +246,13 @@ public:
 
 extern VimMainWindow   *vmw;
 extern SBPool          *sbpool;
-extern QString          *argServerName;
+extern QString         *argServerName;
+
+#define QSTR(x)        \
+       (has_mbyte ? \
+               (enc_utf8 ? \
+                       QString::fromUtf8((const char *)x) : \
+                       QString::fromLocal8Bit((const char *)x)) : \
+               QString((const char *)x))
 
 #endif // GUI_KDE_WIDGET
index 77a7f807cb02de22c7d142be697ee8e53a69499a..8956264d4a4919187925cc6b3da688abbea25b90 100644 (file)
@@ -58,9 +58,9 @@ extern "C" {
 /*
  * global variable for KDE, we can't put them in Gui, cause there are C++ types
  */
-VimMainWindow  *vmw=0;
-SBPool         *sbpool=0;
-QString      *argServerName=0;
+VimMainWindow  *vmw = 0;
+SBPool         *sbpool = 0;
+QString                *argServerName = 0;
 
 #ifdef FEAT_MOUSESHAPE
 /* The last set mouse pointer shape is remembered, to be used when it goes
@@ -73,153 +73,170 @@ static int last_shape = 0;
  */
 
 #if QT_VERSION>=300
-static int tip=0; // 1 no dialog, 0 use it if enabled in conf, 2 force the tip
+static int     tip = 0;    // 1 no dialog, 0 use it if enabled in conf,
+                           // 2 force the tip
 #endif
-static int reverse=0; // 0 bg : white, 1 : bg : black
-QString         *startfont;
-QSize           *startsize;
-static int gui_argc = 0;
-static char **gui_argv = NULL;
+static int     reverse = 0; // 0 bg : white, 1 : bg : black
+QString                *startfont;
+QSize          *startsize;
+static int     gui_argc = 0;
+static char    **gui_argv = NULL;
 
 /*
  * Parse the GUI related command-line arguments.  Any arguments used are
  * deleted from argv, and *argc is decremented accordingly.  This is called
  * when vim is started, whether or not the GUI has been started.
  */
-       void
+    void
 gui_mch_prepare(int *argc, char **argv)// {{{
 {
-       //copy args for KDE/Qt
-       gui_argc = 0;
-       //this one is not really good as all options are not for KDE/Qt ...
-       gui_argv = (char **)lalloc((long_u)(*argc * sizeof(char *)), FALSE);
-       if (gui_argv == NULL)
-           return;
-       gui_argv[gui_argc++] = argv[0];
-
-       int found = 0;
-       for (int i = 1; i < *argc ; i++)
+    // copy args for KDE/Qt
+    gui_argc = 0;
+
+    // this one is not really good as all options are not for KDE/Qt ...
+    gui_argv = (char **)lalloc((long_u)(*argc * sizeof(char *)), FALSE);
+    if (gui_argv == NULL)
+       return;
+    gui_argv[gui_argc++] = argv[0];
+
+    int found = 0;
+    for (int i = 1; i < *argc ; i++)
+    {
+       if (found != 2)
+           found = 0;
+       else
+       {
+           found = 0;
+           // remove from the list of argv
+           if (--*argc > i)
+           {
+               mch_memmove(&argv[i], &argv[i + 1],
+                       (*argc - i) * sizeof(char *));
+           }
+           i--;
+           continue;
+       }
+
+       if (strcmp(argv[i], "--servername") == 0)
        {
-               if (found!=2)
-                   found = 0;
-               else {
-                   found=0;
-                   //remove from the list of argv
-                   if (--*argc>i) {
-                       mch_memmove(&argv[i], &argv[i + 1],
-                               (*argc - i) * sizeof(char *));
-                   }
-                   i--;
-                   continue;
-               }
-
-               if (strcmp(argv[i],"--servername")==0) {
-                       argServerName = new QString(argv[i+1]); // to get the serverName now
-               }
+           argServerName = new QString(argv[i+1]); // to get the serverName now
+       }
 #if QT_VERSION>+300
-               if (strcmp(argv[i],"-tip")==0 ) {
-                       tip=2;
-                       found=1;
-               }
-               if (strcmp(argv[i],"-notip")==0 ) {
-                       tip=1;
-                       found=1;
-               }
+       if (strcmp(argv[i], "-tip") == 0 )
+       {
+           tip = 2;
+           found = 1;
+       }
+       if (strcmp(argv[i], "-notip") == 0 )
+       {
+           tip = 1;
+           found = 1;
+       }
 #endif
-               if (strcmp(argv[i],"-black")==0 ) {
-                       reverse=1;
-                       found=1;
-               }
-               /* replaced by -black */
-/*             if (strcmp(argv[i],"-rv")==0 ) {
-                       reverse=1;
-                       found=1;
-               }*/
-               if (strcmp(argv[i],"-font")==0 || strcmp(argv[i], "-fn")==0 ) {
-                       startfont=new QString(argv[i+1]);
-                       found=2;
-               }
-               if (strcmp(argv[i],"-geometry")==0 || strcmp (argv[i],"-geom")==0 ) {
-                       found=2;
-                       QString text(argv[i+1]);
-                       QStringList list = QStringList::split(QChar('x'), text);
-                       startsize = new QSize(list[0].toInt(),list[1].toInt());
-               }
-               if (strcmp (argv[i],"-display")==0 ) { //XXX: this does not work,
-                                                       // too many -display options in main.c !
-                                                       // ask Bram ...
-                       gui_argv[gui_argc++] = strdup("--display");
-                       gui_argv[gui_argc++] = argv[i+1];
-                       found=0;
-               }
-               if (strcmp (argv[i],"--display")==0 ) {
-                       gui_argv[gui_argc++] = argv[i];
-                       gui_argv[gui_argc++] = argv[i+1];
-                       found=2;
-               }
-               //KDE/Qt options with no args
-               if (strcmp(argv[i],"--help-kde")==0 || strcmp (argv[i],"--help-qt")==0
-                       || strcmp(argv[i], "--help-all")==0
-                       || strcmp(argv[i], "--reverse")==0
-                       || strcmp(argv[i], "--author")==0
-//                     || strcmp(argv[i], "--version")==0 //disabled we need these for kcmvim
-//                     || strcmp(argv[i], "-v")==0
-                       || strcmp(argv[i], "--license")==0
-                       || strcmp(argv[i], "--cmap")==0
-                       || strcmp(argv[i], "--nograb")==0
-                       || strcmp(argv[i], "--dograb")==0
-                       || strcmp(argv[i], "--sync")==0
-                       || strcmp(argv[i], "--noxim")==0
-                       || strcmp(argv[i], "--nocrashhandler")==0
-                       || strcmp(argv[i], "--waitforwm")==0
-                ) {
-                       gui_argv[gui_argc++] = argv[i];
-                       found=1;
-               }
-               //this outputs KDE and Vim versions :)
-               if (strcmp(argv[i],"--version")==0
-                       || strcmp (argv[i],"-v")==0
-               ) {
-                       gui_argv[gui_argc++] = argv[i];
-               }
-
-
-               //KDE/Qt options with one arg
-               if ( strcmp(argv[i],"--session")==0
-                   || strcmp(argv[i],"--ncols")==0
-                   || strcmp(argv[i],"--bg")==0
-                   || strcmp(argv[i],"--background")==0
-                   || strcmp(argv[i],"--fg")==0
-                   || strcmp(argv[i],"--foreground")==0
-                   || strcmp(argv[i],"--btn")==0
-                   || strcmp(argv[i],"--name")==0
-                   || strcmp(argv[i],"--title")==0
-                   || strcmp(argv[i],"--inputstyle")==0
-                   || strcmp(argv[i],"--im")==0
-                   || strcmp(argv[i],"--caption")==0
-                   || strcmp(argv[i],"--icon")==0
-                   || strcmp(argv[i],"--miniicon")==0
-                   || strcmp(argv[i],"--config")==0
-                   || strcmp(argv[i],"--dcopserver")==0
-                   || strcmp(argv[i],"--style")==0
-                   || strcmp(argv[i],"--geometry")==0
-                   || strcmp(argv[i],"--smkey")==0
-                   || strcmp(argv[i],"-smkey")==0
-                   || strcmp(argv[i],"-session")==0
-                ) {
-                       gui_argv[gui_argc++] = argv[i];
-                       gui_argv[gui_argc++] = argv[i+1];
-                       found=2;
-               }
-
-               //remove from the list of argv
-               if (found >= 1 && --*argc>i) {
-                       mch_memmove(&argv[i], &argv[i + 1],
-                                       (*argc - i) * sizeof(char *));
-                       i--;
-               }
+       if (strcmp(argv[i], "-black") == 0 )
+       {
+           reverse = 1;
+           found = 1;
+       }
+       /* replaced by -black */
+       /*              if (strcmp(argv[i], "-rv") == 0 )
+        *              {
+        reverse = 1;
+        found = 1;
+        }*/
+       if (strcmp(argv[i], "-font") == 0 || strcmp(argv[i], "-fn") == 0)
+       {
+           startfont = new QString(argv[i+1]);
+           found = 2;
+       }
+       if (strcmp(argv[i], "-geometry") == 0 || strcmp(argv[i], "-geom") == 0)
+       {
+           found = 2;
+           QString text(argv[i + 1]);
+           QStringList list = QStringList::split(QChar('x'), text);
+           startsize = new QSize(list[0].toInt(), list[1].toInt());
+       }
+       if (strcmp(argv[i], "-display") == 0) //XXX: this does not work,
+           // too many -display options in main.c !
+           // ask Bram ...
+           {
+               gui_argv[gui_argc++] = strdup("--display");
+               gui_argv[gui_argc++] = argv[i+1];
+               found = 0;
+           }
+       if (strcmp(argv[i], "--display") == 0 )
+       {
+           gui_argv[gui_argc++] = argv[i];
+           gui_argv[gui_argc++] = argv[i+1];
+           found = 2;
+       }
+       //KDE/Qt options with no args
+       if (strcmp(argv[i], "--help-kde") == 0
+               || strcmp(argv[i], "--help-qt") == 0
+               || strcmp(argv[i], "--help-all") == 0
+               || strcmp(argv[i], "--reverse") == 0
+               || strcmp(argv[i], "--author") == 0
+               //      || strcmp(argv[i], "--version") == 0 //disabled we need these for kcmvim
+               //      || strcmp(argv[i], "-v") == 0
+               || strcmp(argv[i], "--license") == 0
+               || strcmp(argv[i], "--cmap") == 0
+               || strcmp(argv[i], "--nograb") == 0
+               || strcmp(argv[i], "--dograb") == 0
+               || strcmp(argv[i], "--sync") == 0
+               || strcmp(argv[i], "--noxim") == 0
+               || strcmp(argv[i], "--nocrashhandler") == 0
+               || strcmp(argv[i], "--waitforwm") == 0
+          )
+       {
+           gui_argv[gui_argc++] = argv[i];
+           found = 1;
+       }
+       //this outputs KDE and Vim versions :)
+       if (strcmp(argv[i], "--version") == 0
+               || strcmp(argv[i], "-v") == 0)
+       {
+           gui_argv[gui_argc++] = argv[i];
+       }
+
+
+       // KDE/Qt options with one arg
+       if (strcmp(argv[i], "--session") == 0
+               || strcmp(argv[i], "--ncols") == 0
+               || strcmp(argv[i], "--bg") == 0
+               || strcmp(argv[i], "--background") == 0
+               || strcmp(argv[i], "--fg") == 0
+               || strcmp(argv[i], "--foreground") == 0
+               || strcmp(argv[i], "--btn") == 0
+               || strcmp(argv[i], "--name") == 0
+               || strcmp(argv[i], "--title") == 0
+               || strcmp(argv[i], "--inputstyle") == 0
+               || strcmp(argv[i], "--im") == 0
+               || strcmp(argv[i], "--caption") == 0
+               || strcmp(argv[i], "--icon") == 0
+               || strcmp(argv[i], "--miniicon") == 0
+               || strcmp(argv[i], "--config") == 0
+               || strcmp(argv[i], "--dcopserver") == 0
+               || strcmp(argv[i], "--style") == 0
+               || strcmp(argv[i], "--geometry") == 0
+               || strcmp(argv[i], "--smkey") == 0
+               || strcmp(argv[i], "-smkey") == 0
+               || strcmp(argv[i], "-session") == 0
+          )
+       {
+           gui_argv[gui_argc++] = argv[i];
+           gui_argv[gui_argc++] = argv[i + 1];
+           found = 2;
+       }
+
+       // remove from the list of argv
+       if (found >= 1 && --*argc > i)
+       {
+           mch_memmove(&argv[i], &argv[i + 1], (*argc - i) * sizeof(char *));
+           i--;
        }
-       KCmdLineArgs::init( gui_argc,gui_argv,"kvim", I18N_NOOP("Vim inside KDE"),VIM_VERSION_SHORT);
+    }
+    KCmdLineArgs::init(gui_argc, gui_argv, "kvim",
+                             I18N_NOOP("Vim inside KDE"), VIM_VERSION_SHORT);
 }// }}}
 
 /****************************************************************************
@@ -229,41 +246,41 @@ gui_mch_prepare(int *argc, char **argv)// {{{
 /*
  * Initialises time intervals for the cursor blinking
  */
-       void
+    void
 gui_mch_set_blinking(long waittime, long on, long off)//{{{
 {
-       gui.w->set_blink_time( waittime, on, off );
+    gui.w->set_blink_time(waittime, on, off);
 }//}}}
 
 /*
  * Stop the cursor blinking.  Show the cursor if it wasn't shown.
  */
-       void
+    void
 gui_mch_stop_blink()//{{{
 {
-       gui.w->stop_cursor_blinking();
+    gui.w->stop_cursor_blinking();
 }//}}}
 
 /*
  * Start the cursor blinking.  If it was already blinking, this restarts the
  * waiting time and shows the cursor.
  */
-       void
+    void
 gui_mch_start_blink()//{{{
 {
-       gui.w->start_cursor_blinking();
+    gui.w->start_cursor_blinking();
 }//}}}
 
 #ifdef FEAT_MZSCHEME
-       void
+    void
 mzscheme_kde_start_timer()//{{{
 {
-       gui.w->enable_mzscheme_threads();
+    gui.w->enable_mzscheme_threads();
 }//}}}
-       void
+    void
 mzscheme_kde_stop_timer()//{{{
 {
-       gui.w->disable_mzscheme_threads();
+    gui.w->disable_mzscheme_threads();
 }//}}}
 #endif
 
@@ -271,164 +288,177 @@ mzscheme_kde_stop_timer()//{{{
  * Check if the GUI can be started.  Called before gvimrc is sourced.
  * Return OK or FAIL.
  */
-       int
+    int
 gui_mch_init_check(void)//{{{
 {
-       gui.dpy = qt_xdisplay();
-       return OK;
+    gui.dpy = qt_xdisplay();
+    return OK;
 }//}}}
 
 /*
  * Initialise the X GUI.  Create all the windows, set up all the call-backs etc.
  * Returns OK for success, FAIL when the GUI can't be started.
  */
-       int
+    int
 gui_mch_init()//{{{
 {
-       (void) new KApplication();
-       KApplication::kApplication()->dcopClient()->registerAs(KApplication::kApplication()->name(),false);
-//    dbf("%s %s",KGlobal::locale()->language().latin1(),KLocale::defaultLanguage().latin1());
+    (void) new KApplication();
+    KApplication::kApplication()->dcopClient()->registerAs(
+                                KApplication::kApplication()->name(), false);
+    //    dbf("%s %s", KGlobal::locale()->language().latin1(), KLocale::defaultLanguage().latin1());
 
-       vmw = new VimMainWindow("KVim",0);
-       vmw->setFrameBorderWidth(0);
-       kapp->setMainWidget(vmw);
-       kapp->setTopWidget(vmw);
+    vmw = new VimMainWindow("KVim", 0);
+    vmw->setFrameBorderWidth(0);
+    kapp->setMainWidget(vmw);
+    kapp->setTopWidget(vmw);
 
-       sbpool = new SBPool;
+    sbpool = new SBPool;
 
 #if QT_VERSION>=300
-       vmw->connect(kapp->clipboard(),SIGNAL(selectionChanged()),vmw,SLOT(clipboard_selection_update()));
+    vmw->connect(kapp->clipboard(), SIGNAL(selectionChanged()),
+                                    vmw, SLOT(clipboard_selection_update()));
 #endif
-       vmw->connect(kapp->clipboard(),SIGNAL(dataChanged()),vmw,SLOT(clipboard_data_update()));
-       clip_lose_selection(&clip_plus);
-       clip_lose_selection(&clip_star);
+    vmw->connect(kapp->clipboard(), SIGNAL(dataChanged()),
+                                         vmw, SLOT(clipboard_data_update()));
+    clip_lose_selection(&clip_plus);
+    clip_lose_selection(&clip_star);
 
-       gui.in_focus = FALSE; // will be updated
+    gui.in_focus = FALSE; // will be updated
 
-       if (reverse) {
-               gui.def_norm_pixel = gui_get_color((char_u *)"White");
-               gui.def_back_pixel = gui_get_color((char_u *)"Black");
+    if (reverse)
+    {
+       gui.def_norm_pixel = gui_get_color((char_u *)"White");
+       gui.def_back_pixel = gui_get_color((char_u *)"Black");
 #if QT_VERSION>=300
-               gui.w->setEraseColor ( QColor(Qt::black) );
+       gui.w->setEraseColor(QColor(Qt::black));
 #else
-               gui.w->setBackgroundColor ( QColor(Qt::black) );
+       gui.w->setBackgroundColor(QColor(Qt::black));
 #endif
-       } else {
-               gui.def_norm_pixel = gui_get_color((char_u *)"Black");
-               gui.def_back_pixel = gui_get_color((char_u *)"White");
+    }
+    else
+    {
+       gui.def_norm_pixel = gui_get_color((char_u *)"Black");
+       gui.def_back_pixel = gui_get_color((char_u *)"White");
 #if QT_VERSION>=300
-               gui.w->setEraseColor ( QColor(Qt::white) );
+       gui.w->setEraseColor(QColor(Qt::white));
 #else
-               gui.w->setBackgroundColor ( QColor(Qt::white) );
+       gui.w->setBackgroundColor(QColor(Qt::white));
 #endif
-       }
+    }
 
-       gui.norm_pixel = gui.def_norm_pixel;
-       gui.back_pixel = gui.def_back_pixel;
+    gui.norm_pixel = gui.def_norm_pixel;
+    gui.back_pixel = gui.def_back_pixel;
 
-       gui.border_width  = 1;
-       gui.border_offset = 1;//gui.border_width;
-       gui.scrollbar_width=SB_DEFAULT_WIDTH;
-       gui.scrollbar_height=SB_DEFAULT_WIDTH;
+    gui.border_width  = 1;
+    gui.border_offset = 1;//gui.border_width;
+    gui.scrollbar_width = SB_DEFAULT_WIDTH;
+    gui.scrollbar_height = SB_DEFAULT_WIDTH;
 
-       //gui.menu_height=vmw->menuBar()->height()+1;
-       //gui.toolbar_height=vmw->toolBar()->height();
+    //gui.menu_height = vmw->menuBar()->height()+1;
+    //gui.toolbar_height = vmw->toolBar()->height();
 
-       return OK;
+    return OK;
 }//}}}
 
 
 /*
  * Called when the foreground or background color has been changed.
  */
-       void
+    void
 gui_mch_new_colors()//{{{
 {
-       QColor rgb;
-       rgb.setRgb(gui.back_pixel);
+    QColor rgb;
+    rgb.setRgb(gui.back_pixel);
 #if QT_VERSION>=300
-       gui.w->setEraseColor(rgb);
+    gui.w->setEraseColor(rgb);
 #else
-       gui.w->setBackgroundColor(rgb);
+    gui.w->setBackgroundColor(rgb);
 #endif
 }//}}}
 
 /*
  * Open the GUI window which was created by a call to gui_mch_init().
  */
-       int
+    int
 gui_mch_open()//{{{
 {
-        gui.dpy=qt_xdisplay();
-       set_normal_colors();
+    gui.dpy = qt_xdisplay();
+    set_normal_colors();
 
-       /* Check that none of the colors are the same as the background color */
-       gui_check_colors();
+    /* Check that none of the colors are the same as the background color */
+    gui_check_colors();
 
-       /* Get the colors for the highlight groups (gui_check_colors() might have
-        * changed them).
-        */
-       highlight_gui_started();    /* re-init colors and fonts */
+    /* Get the colors for the highlight groups (gui_check_colors() might have
+     * changed them).
+     */
+    highlight_gui_started();    /* re-init colors and fonts */
 #ifdef FEAT_MENU
-       vmw->w->menu = new QPopupMenu(vmw);
+    vmw->w->menu = new QPopupMenu(vmw);
 
 #if QT_VERSION>=300
-       vmw->w->menu->insertItem(SmallIcon("ktip"), i18n("&Tip of the day..."), vmw, SLOT(showTipOfTheDay()));
-       vmw->w->menu->insertSeparator();
+    vmw->w->menu->insertItem(SmallIcon("ktip"), i18n("&Tip of the day..."),
+                                               vmw, SLOT(showTipOfTheDay()));
+    vmw->w->menu->insertSeparator();
 #endif
-       if (vmw->have_tearoff) vmw->w->menu->insertTearOffHandle(0,0);
-       vmw->w->menu->insertItem(i18n("&Report Bug ..."), vmw, SLOT(showBugReport()));
-       vmw->w->menu->insertSeparator();
-       vmw->w->menu->insertItem(SmallIcon("kvim"), i18n("&About KVim..."), vmw, SLOT(showAboutApplication()));
-       vmw->w->menu->insertItem(SmallIcon("about_kde"), i18n("About &KDE..."), vmw, SLOT(showAboutKDE()));
-       vmw->menuBar()->insertItem("&KVim", vmw->w->menu);
+    if (vmw->have_tearoff)
+       vmw->w->menu->insertTearOffHandle(0, 0);
+    vmw->w->menu->insertItem(i18n("&Report Bug ..."),
+                                                 vmw, SLOT(showBugReport()));
+    vmw->w->menu->insertSeparator();
+    vmw->w->menu->insertItem(SmallIcon("kvim"), i18n("&About KVim..."),
+                                          vmw, SLOT(showAboutApplication()));
+    vmw->w->menu->insertItem(SmallIcon("about_kde"), i18n("About &KDE..."),
+                                                  vmw, SLOT(showAboutKDE()));
+    vmw->menuBar()->insertItem("&KVim", vmw->w->menu);
 #endif
-       if (startfont!=NULL)
-           gui_mch_init_font((char_u*)startfont->latin1(), FALSE);
+    if (startfont != NULL)
+       gui_mch_init_font((char_u*)startfont->latin1(), FALSE);
 
-       if (startsize!=NULL)
-           vmw->resize(startsize->width(), startsize->height());
+    if (startsize != NULL)
+       vmw->resize(startsize->width(), startsize->height());
 
-       gui_mch_update_codec();
+    gui_mch_update_codec();
 
-       if (kapp->isRestored())
-           if (KMainWindow::canBeRestored(1))
-               vmw->restore(1);
+    if (kapp->isRestored())
+       if (KMainWindow::canBeRestored(1))
+           vmw->restore(1);
 
-       vmw->show();
+    vmw->show();
 #if QT_VERSION>=300
-       if (tip==2) KTipDialog::showTip (vmw,QString::null,true);
-       else if (tip==0) KTipDialog::showTip (vmw);
+    if (tip == 2)
+       KTipDialog::showTip(vmw, QString::null, true);
+    else if (tip == 0)
+       KTipDialog::showTip(vmw);
 #endif
 
-       return OK;
+    return OK;
 }//}}}
 
-       void
+    void
 gui_mch_exit(int rc)//{{{
 {
-       kapp->quit();
+    kapp->quit();
 }//}}}
 
 /*
  * Get the position of the top left corner of the window.
  */
-       int
+    int
 gui_mch_get_winpos(int *x, int *y)//{{{
 {
-       *x = vmw->x();
-       *y = vmw->y();
-       return OK;
+    *x = vmw->x();
+    *y = vmw->y();
+    return OK;
 }//}}}
 
 /*
  * Set the position of the top left corner of the window to the given
  * coordinates.
  */
-       void
+    void
 gui_mch_set_winpos(int x, int y)//{{{
 {
-       vmw->move(x,y);
+    vmw->move(x, y);
 }//}}}
 
 /*
@@ -436,47 +466,51 @@ gui_mch_set_winpos(int x, int y)//{{{
  * ->resize VimWidget
  * ->resize vmw (block any events generated from here)
  */
-void
+    void
 gui_mch_set_shellsize(int width, int height,//{{{
                int min_width, int min_height,
                int base_width, int base_height)
 {
-       //resize VimWidget
-       vmw->w->resize(width,height);
-
-       //resize vmw
-       int vheight, vwidth;
-       vheight = height;
-       vwidth = width;
-
-       if (gui.which_scrollbars[SBAR_LEFT]) vwidth+=gui.scrollbar_width;
-       if (gui.which_scrollbars[SBAR_RIGHT]) vwidth+=gui.scrollbar_width;
-       if (gui.which_scrollbars[SBAR_BOTTOM]) vheight+=gui.scrollbar_height;
-
-       if (vmw->menuBar()->isVisible() && vmw->menuBar()->isEnabled()
+    //resize VimWidget
+    vmw->w->resize(width, height);
+
+    //resize vmw
+    int vheight, vwidth;
+    vheight = height;
+    vwidth = width;
+
+    if (gui.which_scrollbars[SBAR_LEFT])
+       vwidth += gui.scrollbar_width;
+    if (gui.which_scrollbars[SBAR_RIGHT])
+       vwidth += gui.scrollbar_width;
+    if (gui.which_scrollbars[SBAR_BOTTOM])
+       vheight += gui.scrollbar_height;
+
+    if (vmw->menuBar()->isVisible() && vmw->menuBar()->isEnabled()
 #if QT_VERSION>=300
-               && !vmw->menuBar()->isTopLevelMenu()
+           && !vmw->menuBar()->isTopLevelMenu()
 #endif
-               )
-           vheight += vmw->menuBar()->height();
+       )
+       vheight += vmw->menuBar()->height();
 #ifdef FEAT_TOOLBAR
-       if (vmw->toolBar()->isVisible() && vmw->toolBar()->isEnabled() &&
-               (vmw->toolBar()->barPos()==KToolBar::Top ||
-                vmw->toolBar()->barPos()==KToolBar::Bottom))
-           vheight += vmw->toolBar()->height();
-
-       if (vmw->toolBar()->isVisible() && vmw->toolBar()->isEnabled() &&
-               (vmw->toolBar()->barPos()==KToolBar::Left ||
-                vmw->toolBar()->barPos()==KToolBar::Right))
-           vwidth += vmw->toolBar()->width();
+    if (vmw->toolBar()->isVisible() && vmw->toolBar()->isEnabled()
+           && (vmw->toolBar()->barPos() == KToolBar::Top
+               || vmw->toolBar()->barPos() == KToolBar::Bottom))
+       vheight += vmw->toolBar()->height();
+
+    if (vmw->toolBar()->isVisible() && vmw->toolBar()->isEnabled()
+           && (vmw->toolBar()->barPos() == KToolBar::Left
+               || vmw->toolBar()->barPos() == KToolBar::Right))
+       vwidth += vmw->toolBar()->width();
 #endif
-       vmw->lock();
-       vmw->resize(vwidth,vheight);
-       gui_mch_update();
-       //size should be nearly perfect, update baseSize and sizeIncrement
-       vmw->setBaseSize(base_width,vmw->menuBar()->height()+1+vmw->toolBar()->height()+gui.char_height*2);
-       vmw->setSizeIncrement( ( ( int )( gui.char_width/2 )*2 ),gui.char_height);
-       vmw->unlock();
+    vmw->lock();
+    vmw->resize(vwidth, vheight);
+    gui_mch_update();
+    //size should be nearly perfect, update baseSize and sizeIncrement
+    vmw->setBaseSize(base_width, vmw->menuBar()->height() + 1
+                           + vmw->toolBar()->height() + gui.char_height * 2);
+    vmw->setSizeIncrement((( int )(gui.char_width / 2) * 2), gui.char_height);
+    vmw->unlock();
 }//}}}
 
 
@@ -485,35 +519,35 @@ gui_mch_set_shellsize(int width, int height,//{{{
  * then the screen.  This subtracts some room for menubar, toolbar and window
  * decorations.
  */
-       void
+    void
 gui_mch_get_screen_dimensions(int *screen_w, int *screen_h)//{{{
 {
-       *screen_w = kapp->desktop()->width();
-       *screen_h = kapp->desktop()->height();
+    *screen_w = kapp->desktop()->width();
+    *screen_h = kapp->desktop()->height();
 }//}}}
 
 #if defined(FEAT_MENU) || defined(PROTO)
-       void
+    void
 gui_mch_enable_menu(int showit)//{{{
 {
-       if (showit)
-               vmw->menuBar()->show();
-       else
-               vmw->menuBar()->hide();
-       vmw->resize(vmw->width(),vmw->height());
+    if (showit)
+       vmw->menuBar()->show();
+    else
+       vmw->menuBar()->hide();
+    vmw->resize(vmw->width(), vmw->height());
 }//}}}
 #endif
 
 
 #if defined(FEAT_TOOLBAR) || defined(PROTO)
-       void
+    void
 gui_mch_show_toolbar(int showit)//{{{
 {
-       if (showit)
-               vmw->toolBar()->show();
-       else
-               vmw->toolBar()->hide();
-       vmw->resize(vmw->width(),vmw->height());
+    if (showit)
+       vmw->toolBar()->show();
+    else
+       vmw->toolBar()->hide();
+    vmw->resize(vmw->width(), vmw->height());
 }//}}}
 #endif
 
@@ -523,140 +557,147 @@ gui_mch_show_toolbar(int showit)//{{{
  * Return NULL when cancelled.
  */
 
-char_u *gui_mch_font_dialog (char_u *oldval)//{{{
+    char_u *
+gui_mch_font_dialog(char_u *oldval)//{{{
 {
-       QFont myFont( vmw->w->font() );
-       if (gui.fontname) {
-               gui.fontname=NULL;
-       }
-       int result = KFontDialog::getFont( myFont, true );
-       if ( result != KFontDialog::Accepted ) {
-               return NULL;
-       }
-//     myFont.setFixedPitch(true);
+    QFont myFont(vmw->w->font());
+    if (gui.fontname)
+       gui.fontname = NULL;
+
+    int result = KFontDialog::getFont(myFont, true);
+    if (result != KFontDialog::Accepted)
+       return NULL;
+
+    // myFont.setFixedPitch(true);
 #if QT_VERSION>=300
-       QString n = myFont.toString();
+    QString n = myFont.toString();
 #else
-       QString n = KVimUtils::toString(&myFont);
+    QString n = KVimUtils::toString(&myFont);
 #endif
-       n.replace(QRegExp(","),"/");
-       gui.fontname = (char_u *)strdup((const char *)n);
-       n.replace(QRegExp(" "),"\\ ");
-       n=QString("To set this font as your default font for KVim, edit your ~/.gvimrc file and add the following lines : \nif has(\"gui_kde\")\nset guifont=")+n+QString("\nendif");// \n OR \n use the control center of KDE and choose the correct fixed font");
+    n.replace(QRegExp(","), "/");
+    gui.fontname = (char_u *)strdup((const char *)n);
+    n.replace(QRegExp(" "), "\\ ");
+    n = QString("To set this font as your default font for KVim, edit your ~/.gvimrc file and add the following lines : \nif has(\"gui_kde\")\nset guifont=")+n+QString("\nendif");// \n OR \n use the control center of KDE and choose the correct fixed font");
 
-       //display a message box which explains how to save your font settings
-       KMessageBox::information(vmw, n,"Font Selection", "kvimselectfont");
+    //display a message box which explains how to save your font settings
+    KMessageBox::information(vmw, n, "Font Selection", "kvimselectfont");
 
-       return vim_strsave(gui.fontname);
+    return vim_strsave(gui.fontname);
 }//}}}
 
 /*
  * Initialise vim to use the font with the given name.
  * Return FAIL if the font could not be loaded, OK otherwise.
  */
-       int
+    int
 gui_mch_init_font(char_u * font_name, int fontset)//{{{
 {
-       QString fontname;
-       GuiFont font = NULL;
+    QString fontname;
+    GuiFont font = NULL;
 
-       if (font_name == NULL)
-       {
+    if (font_name == NULL)
+    {
 #if 0
 #if QT_VERSION>=300
-               KConfig *base = KGlobal::config();
+       KConfig *base = KGlobal::config();
 #else
-               KConfigBase *base = KGlobal::config();
+       KConfigBase *base = KGlobal::config();
 #endif
-               base->setGroup("General");
-               if (!base->hasKey("fixed")) {
-                       KMessageBox::error(KApplication::kApplication()->mainWidget(),"Cannot load default fixed font\n\nConfigure fonts in KDE Control Center.\n(Just click 'Choose...', 'OK' and then 'Apply')");
-                       return FAIL;
-               }
+       base->setGroup("General");
+       if (!base->hasKey("fixed"))
+       {
+           KMessageBox::error(KApplication::kApplication()->mainWidget(),"Cannot load default fixed font\n\nConfigure fonts in KDE Control Center.\n(Just click 'Choose...', 'OK' and then 'Apply')");
+           return FAIL;
+       }
 #if QT_VERSION>=300
-               QString f = base->readEntry("fixed");
+       QString f = base->readEntry("fixed");
 #else
-               QFont ft = base->readFontEntry("fixed", NULL);
-               QString f = KVimUtils::toString(&ft);
+       QFont ft = base->readFontEntry("fixed", NULL);
+       QString f = KVimUtils::toString(&ft);
 #endif
-               font_name = (char_u*)strdup(f.latin1()); //latin1 ?
+       font_name = (char_u*)strdup(f.latin1()); //latin1 ?
 #else
-               font_name = (char_u*)strdup("misc-fixed/10/-1/5/50/0/0/0/1/0");
+       font_name = (char_u*)strdup("misc-fixed/10/-1/5/50/0/0/0/1/0");
 #endif
-       }
-       fontname = (const char *)font_name;
-/*     fontname.replace(QRegExp("/"),",");
+    }
+    fontname = (const char *)font_name;
+    /* fontname.replace(QRegExp("/"), ",");
        font = new QFont();
        font->fromString( fontname );
-*/
+       */
 #ifdef FEAT_XFONTSET
-       if (fontset)
-           font = gui_mch_get_fontset(font_name, TRUE, TRUE);
-       if (font == NULL)
+    if (fontset)
+       font = gui_mch_get_fontset(font_name, TRUE, TRUE);
+    if (font == NULL)
 #endif
-           font = gui_mch_get_font(font_name, FALSE);
+       font = gui_mch_get_font(font_name, FALSE);
 
-       if (font == NULL)
-           return FAIL;
-       if (fontname.contains('*') && fontname.contains('-'))
-           return FAIL;
+    if (font == NULL)
+       return FAIL;
+    if (fontname.contains('*') && fontname.contains('-'))
+       return FAIL;
 
-       gui_mch_free_font(gui.norm_font);
+    gui_mch_free_font(gui.norm_font);
 #ifdef FEAT_XFONTSET
-       gui_mch_free_fontset(gui.fontset);
-       gui.fontset = NOFONTSET;
-       if (fontset)
-       {
-           gui.fontset = font;
-           gui.norm_font = NOFONT;
-       }
-       else
+    gui_mch_free_fontset(gui.fontset);
+    gui.fontset = NOFONTSET;
+    if (fontset)
+    {
+       gui.fontset = font;
+       gui.norm_font = NOFONT;
+    }
+    else
 #endif
-           gui.norm_font = font;
-
-       /* Compute the width of the character cell.  Some fonts include
-        * double-width characters.  Use the width of ASCII characters to find
-        * out if this is so. */
-       QFontMetrics f(*font);
-       int width_max = 0;
-       for (char c = 32; c < 127; c++)
-           if (width_max < f.width((QChar)c))
-               width_max = f.width((QChar)c);
-       if (width_max <= f.maxWidth() / 2)
-           width_max = f.maxWidth() / 2;
-       gui.char_width  = width_max;
-       gui.char_height = f.height()+p_linespace;
-       gui.char_ascent = f.ascent()+p_linespace;
-
-       //check values, just to make sure and avoid a crash
-       if (gui.char_width<=0) gui.char_width=8;
-       if (gui.char_height<=0) gui.char_height=1;
-
-       hl_set_font_name(font_name);
-
-       return OK;
+       gui.norm_font = font;
+
+    /* Compute the width of the character cell.  Some fonts include
+     * double-width characters.  Use the width of ASCII characters to find
+     * out if this is so. */
+    QFontMetrics f(*font);
+    int width_max = 0;
+    for (char c = 32; c < 127; c++)
+       if (width_max < f.width((QChar)c))
+           width_max = f.width((QChar)c);
+    if (width_max <= f.maxWidth() / 2)
+       width_max = f.maxWidth() / 2;
+    gui.char_width  = width_max;
+    gui.char_height = f.height() + p_linespace;
+    gui.char_ascent = f.ascent() + p_linespace;
+
+    //check values, just to make sure and avoid a crash
+    if (gui.char_width <= 0)
+       gui.char_width = 8;
+    if (gui.char_height <= 0)
+       gui.char_height = 1;
+
+    hl_set_font_name(font_name);
+
+    vmw->w->setFont(*font);
+
+    return OK;
 }//}}}
 
-       GuiFont
+    GuiFont
 gui_mch_get_font(char_u * name, int report_error)//{{{
 {
-       QString fontname((const char *)name);
-       if (!gui.in_use || name == NULL)
-               return NOFONT;
-       if (fontname.contains('*') && fontname.contains('-'))
-               return NOFONT; // XFLD names not allowed anymore
-       QFont *myFont = new QFont();
-       fontname.replace(QRegExp("/"),",");
-//     myFont->setRawMode(TRUE);
+    QString fontname((const char *)name);
+    if (!gui.in_use || name == NULL)
+       return NOFONT;
+    if (fontname.contains('*') && fontname.contains('-'))
+       return NOFONT; // XFLD names not allowed anymore
+    QFont *myFont = new QFont();
+    fontname.replace(QRegExp("/"), ",");
+    // myFont->setRawMode(TRUE);
 
 #if QT_VERSION>=300
-       myFont->fromString(fontname);
+    myFont->fromString(fontname);
 #else
-       KVimUtils::fromString(myFont,fontname);
+    KVimUtils::fromString(myFont, fontname);
 #endif
-       myFont->setFixedPitch(true);
-       if (!myFont->fixedPitch()) dbf("Non fixed-width font");
-       return (GuiFont) myFont;
+    myFont->setFixedPitch(true);
+    if (!myFont->fixedPitch())
+       dbf("Non fixed-width font");
+    return (GuiFont) myFont;
 }//}}}
 
 /*
@@ -664,60 +705,62 @@ gui_mch_get_font(char_u * name, int report_error)//{{{
  * 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;
+gui_mch_get_fontname(GuiFont font, char_u *name)//{{{
 {
     if (name == NULL)
        return NULL;
     return vim_strsave(name);
-}
+}//}}}
 
 /*
  * Set the current text font.
  * Since we create all GC on demand, we use just gui.current_font to
  * indicate the desired current font.
  */
-       void
+    void
 gui_mch_set_font(GuiFont font)//{{{
 {
-       gui.current_font=font;
-       gui.w->painter->setFont( *(gui.current_font) );
+    gui.current_font = font;
+    gui.w->painter->setFont(*(gui.current_font));
 }//}}}
 
 /*
  * If a font is not going to be used, free its structure.
  */
-       void
+    void
 gui_mch_free_font(GuiFont font)//{{{
 {
     if (font)
        delete font; // this is a QFont , we can delete it :)
 }//}}}
 
-GuiFontset gui_mch_get_fontset (char_u *name, int report_error, int fixed_width)
+    GuiFontset
+gui_mch_get_fontset(char_u *name, int report_error, int fixed_width)
 {
-    return (GuiFontset)gui_mch_get_font(name,report_error);
+    return (GuiFontset)gui_mch_get_font(name, report_error);
 }
 
-void gui_mch_set_fontset (GuiFontset fontset)
+    void
+gui_mch_set_fontset(GuiFontset fontset)
 {
     gui_mch_set_font((GuiFont)fontset);
 }
 
-void gui_mch_free_fontset (GuiFontset fontset)
+    void
+gui_mch_free_fontset(GuiFontset fontset)
 {
     if (fontset)
        delete fontset;
 }
 
-void gui_mch_settitle (char_u *title, char_u *icon)//{{{
+    void
+gui_mch_settitle(char_u *title, char_u *icon)//{{{
 {
-       if (!gui.in_use)                /* can't do this when GUI not running */
-           return;
-       vmw->setPlainCaption((const char *)title);
-       QPixmap p((const char *)icon);
-       vmw->setIcon(p); //FIXME
+    if (!gui.in_use)           /* can't do this when GUI not running */
+       return;
+    vmw->setPlainCaption((const char *)title);
+    QPixmap p((const char *)icon);
+    vmw->setIcon(p); //FIXME
 }//}}}
 
 /*
@@ -726,69 +769,72 @@ void gui_mch_settitle (char_u *title, char_u *icon)//{{{
  * Programmer's Guide.
  * Return -1 for error.
  */
-       guicolor_T
+    guicolor_T
 gui_mch_get_color(char_u * name)//{{{
 {
-       int i;
-       static char *(vimnames[][2]) =
+    int i;
+    static char *(vimnames[][2]) =
+    {
+       /* A number of colors that some X11 systems don't have */
+       {"LightRed", "#FFA0A0"},
+       {"LightGreen", "#80FF80"},
+       {"LightMagenta", "#FFA0FF"},
+       {"DarkCyan", "#008080"},
+       {"DarkBlue", "#0000C0"},
+       {"DarkRed", "#C00000"},
+       {"DarkMagenta", "#C000C0"},
+       {"DarkGrey", "#C0C0C0"},
+       {NULL, NULL}
+    };
+
+    if (!gui.in_use)           /* can't do this when GUI not running */
+       return (guicolor_T)(-1);
+
+    QColor _color((const char *)name);
+
+    if (_color.isValid())
+    {
+       // return (_color.red() << 16) + ((_color.green() << 8))
+                                                        // + (_color.blue());
+       return _color.rgb();
+       // return (guicolor_T) _color.pixel();
+    }
+
+    /* add a few builtin names */
+    for (i = 0;; ++i)
+    {
+       if (vimnames[i][0] == NULL)
+           return (guicolor_T)(-1);
+       if (STRICMP(name, vimnames[i][0]) == 0)
        {
-               /* A number of colors that some X11 systems don't have */
-               {"LightRed", "#FFA0A0"},
-               {"LightGreen", "#80FF80"},
-               {"LightMagenta", "#FFA0FF"},
-               {"DarkCyan", "#008080"},
-               {"DarkBlue", "#0000C0"},
-               {"DarkRed", "#C00000"},
-               {"DarkMagenta", "#C000C0"},
-               {"DarkGrey", "#C0C0C0"},
-               {NULL, NULL}
-       };
-
-       if (!gui.in_use)                /* can't do this when GUI not running */
-               return (guicolor_T)(-1);
-
-       QColor _color((const char *)name);
-
-
-       if (_color.isValid()) {
-               //return (_color.red() << 16) +  ((_color.green() << 8)) + (_color.blue());
-               return _color.rgb();
-               //return (guicolor_T) _color.pixel();
-       }
-
-       /* add a few builtin names */
-       for (i = 0;; ++i) {
-               if (vimnames[i][0] == NULL)
-                       return (guicolor_T)(-1);
-               if (STRICMP(name, vimnames[i][0]) == 0) {
-                       name = (char_u *) vimnames[i][1];
-                       return gui_mch_get_color(name);
-               }
+           name = (char_u *) vimnames[i][1];
+           return gui_mch_get_color(name);
        }
+    }
 
-       return (guicolor_T)(-1); // dead code, should not be reached..
+    return (guicolor_T)(-1); // dead code, should not be reached..
 }//}}}
 
 /*
  * Set the current text foreground color.
  */
-       void
+    void
 gui_mch_set_fg_color(guicolor_T color)//{{{
 {
-       QColor rgb;
-       rgb.setRgb(color);
-       gui.w->painter->setPen( rgb );
+    QColor rgb;
+    rgb.setRgb(color);
+    gui.w->painter->setPen(rgb);
 }//}}}
 
 /*
  * Set the current text background color.
  */
-       void
+    void
 gui_mch_set_bg_color(guicolor_T color)//{{{
 {
-       QColor rgb;
-       rgb.setRgb(color);
-       gui.w->painter->setBackgroundColor(rgb);
+    QColor rgb;
+    rgb.setRgb(color);
+    gui.w->painter->setBackgroundColor(rgb);
 }//}}}
 
 /*
@@ -796,127 +842,129 @@ gui_mch_set_bg_color(guicolor_T color)//{{{
  *
  * hide: TRUE = use blank ptr, FALSE = use parent ptr
  */
-       void
+    void
 gui_mch_mousehide(int hide)//{{{
 {
-       if (hide == gui.pointer_hidden) return;
-       //#ifdef FEAT_MOUSESHAPE
-       //      if (!hide) mch_set_mouse_shape(last_shape);
-       //#else
+    if (hide == gui.pointer_hidden)
+       return;
+    //#ifdef FEAT_MOUSESHAPE
+    // if (!hide) mch_set_mouse_shape(last_shape);
+    //#else
 # if (QT_VERSION<300)
-       gui.w->setCursor((hide)?BlankCursor:ArrowCursor);
+    gui.w->setCursor((hide)?BlankCursor:ArrowCursor);
 # else
-       gui.w->setCursor((hide)?Qt::BlankCursor:Qt::ArrowCursor);
+    gui.w->setCursor((hide)?Qt::BlankCursor:Qt::ArrowCursor);
 # endif
-       //#endif
-       gui.pointer_hidden = hide;
+    //#endif
+    gui.pointer_hidden = hide;
 }//}}}
 
-       void
+    void
 gui_mch_update_codec()
 {
 #ifdef FEAT_MBYTE
-       if (!gui.in_use) return;
-       vmw->codec = QTextCodec::codecForName((const char *)p_enc);
-       if (vmw->codec==NULL)
-           vmw->codec = QTextCodec::codecForName(KVimUtils::convertEncodingName(QString((const char*)p_enc)));
-       if (vmw->codec==NULL)
-           vmw->codec = QTextCodec::codecForLocale();
+    if (!gui.in_use)
+       return;
+    vmw->codec = QTextCodec::codecForName((const char *)p_enc);
+    if (vmw->codec == NULL)
+       vmw->codec = QTextCodec::codecForName(
+               KVimUtils::convertEncodingName(QString((const char*)p_enc)));
+    if (vmw->codec == NULL)
+       vmw->codec = QTextCodec::codecForLocale();
 #else
-        vmw->codec = QTextCodec::codecForLocale();
+    vmw->codec = QTextCodec::codecForLocale();
 #endif
-       if (vmw->codec==NULL)
-           vmw->codec = QTextCodec::codecForName("ISO-8859-1"); //fallback
+    if (vmw->codec == NULL)
+       vmw->codec = QTextCodec::codecForName("ISO-8859-1"); //fallback
 }
 
-       void
+    void
 gui_mch_draw_string(int row, int col, char_u * s, int len, int flags)//{{{
 {
-       QString text = vmw->codec->toUnicode((const char *)s,len);
-       gui.w->draw_string( TEXT_X(col), TEXT_Y(row), text, text.length(), flags );
+    QString text = vmw->codec->toUnicode((const char *)s, len);
+    gui.w->draw_string(TEXT_X(col), TEXT_Y(row), text, text.length(), flags);
 }//}}}
 
 #if defined(FEAT_TITLE) || defined(PROTO)
 /*
  * Return the text window-id and display.  Only required for X-based GUI's
  */
-       int
+    int
 gui_get_x11_windis(Window * win, Display ** dis)//{{{
 {
-       *win = /*vmw*/gui.w->winId();
-       *dis = qt_xdisplay();
-       return OK;
+    *win = /*vmw*/gui.w->winId();
+    *dis = qt_xdisplay();
+    return OK;
 }//}}}
 #endif
 
-       void
+    void
 gui_mch_beep()//{{{
 {
-       kapp->beep();
+    kapp->beep();
 }//}}}
 
-       void
+    void
 gui_mch_flash(int msec)//{{{
 {
-       gui.w->flash();
+    gui.w->flash();
 }//}}}
 
 /*
  * Invert a rectangle from row r, column c, for nr rows and nc columns.
  */
-       void
+    void
 gui_mch_invert_rectangle(int r, int c, int nr, int nc)//{{{
 {
-       bitBlt (
-                       gui.w,
-                       FILL_X(c), FILL_Y(r),
-                       gui.w,
-                       FILL_X(c), FILL_Y(r),
-                       (nc) * gui.char_width,
-                       (nr) * gui.char_height,
-                       Qt::NotROP,         // raster Operation
-                       true );             // ignoreMask
+    bitBlt(gui.w,
+           FILL_X(c), FILL_Y(r),
+           gui.w,
+           FILL_X(c), FILL_Y(r),
+           (nc) * gui.char_width,
+           (nr) * gui.char_height,
+           Qt::NotROP,         // raster Operation
+           true);              // ignoreMask
 }//}}}
 
 /*
  * Iconify the GUI window.
  */
-       void
+    void
 gui_mch_iconify()//{{{
 {
-       vmw->showMinimized();
+    vmw->showMinimized();
 }//}}}
 
 /*
  * Draw a cursor without focus.
  */
-       void
+    void
 gui_mch_draw_hollow_cursor(guicolor_T color)//{{{
 {
-       QPainter p(gui.w);
-       p.setPen( color );
-
-       p.drawRect(FILL_X(gui.col), FILL_Y(gui.row), gui.char_width - 1, gui.char_height - 1 );
+    QPainter p(gui.w);
+    p.setPen(color);
 
-       p.end();
+    p.drawRect(FILL_X(gui.col), FILL_Y(gui.row), gui.char_width - 1,
+                                                        gui.char_height - 1);
+    p.end();
 }//}}}
 
 /*
  * Draw part of a cursor, "w" pixels wide, and "h" pixels high, using
  * color "color".
  */
-       void
+    void
 gui_mch_draw_part_cursor(int w, int h, guicolor_T color)//{{{
 {
-       QPainter p(gui.w);
-       p.setPen( color );
-       p.fillRect(
-                       FILL_X(gui.col),
-                       FILL_Y(gui.row) + gui.char_height - h +1,
-                       w, h-2, QColor( color, color));
-       p.drawRect(FILL_X(gui.col),FILL_Y(gui.row) + gui.char_height - h + (int)p_linespace / 2,
-                       w, h - (int)p_linespace );
-
+    QPainter p(gui.w);
+    p.setPen(color);
+    p.fillRect(
+           FILL_X(gui.col),
+           FILL_Y(gui.row) + gui.char_height - h + 1,
+           w, h - 2, QColor( color, color));
+    p.drawRect(FILL_X(gui.col), FILL_Y(gui.row) + gui.char_height - h
+                                                      + (int)p_linespace / 2,
+           w, h - (int)p_linespace);
 }//}}}
 
 
@@ -926,10 +974,10 @@ gui_mch_draw_part_cursor(int w, int h, guicolor_T color)//{{{
  * nothing in the X11 event queue (& no timers pending), then we return
  * immediately.
  */
-       void
+    void
 gui_mch_update()//{{{
 {
-       kapp->processEvents();
+    kapp->processEvents();
 }//}}}
 
 
@@ -942,21 +990,22 @@ gui_mch_update()//{{{
  * Returns OK if a character was found to be available within the given time,
  * or FAIL otherwise.
  */
-       int
+    int
 gui_mch_wait_for_chars(long wtime)//{{{
 {
-       // malte@kde.org's  gift to KVim ;), thanks to him :) for this hard to find bug
-       if (wtime>0) {
-               gui.w->wait( wtime );
-               while ( vim_is_input_buf_empty() && !gui.w->wait_done )
-                       kapp->processOneEvent();
-               return vim_is_input_buf_empty() ? FAIL : OK;
-       } else
-               while (vim_is_input_buf_empty() ) {
-                       kapp->processOneEvent();
-               }
-
-       return OK;
+    // malte@kde.org's  gift to KVim ;), thanks to him :) for this hard to find bug
+    if (wtime > 0)
+    {
+       gui.w->wait(wtime);
+       while (vim_is_input_buf_empty() && !gui.w->wait_done)
+           kapp->processOneEvent();
+       return vim_is_input_buf_empty() ? FAIL : OK;
+    }
+    else
+       while (vim_is_input_buf_empty())
+           kapp->processOneEvent();
+
+    return OK;
 }//}}}
 
 
@@ -966,28 +1015,28 @@ gui_mch_wait_for_chars(long wtime)//{{{
 
 
 /* Flush any output to the screen */
-       void
+    void
 gui_mch_flush()//{{{
 {
-       kapp->flushX();
+    kapp->flushX();
 }//}}}
 
 /*
  * Clear a rectangular region of the screen from text pos (row1, col1) to
  * (row2, col2) inclusive.
  */
-       void
+    void
 gui_mch_clear_block(int row1, int col1, int row2, int col2)//{{{
 {
-       gui.w->erase (FILL_X(col1), FILL_Y(row1),
-                       (col2 - col1 + 1) * gui.char_width+ (col2 == Columns - 1),
-                       (row2 - row1 + 1) * gui.char_height );
+    gui.w->erase(FILL_X(col1), FILL_Y(row1),
+           (col2 - col1 + 1) * gui.char_width + (col2 == Columns - 1),
+           (row2 - row1 + 1) * gui.char_height);
 }//}}}
 
-       void
+    void
 gui_mch_clear_all(void)//{{{
 {
-       gui.w->erase();
+    gui.w->erase();
 }//}}}
 
 
@@ -995,139 +1044,157 @@ gui_mch_clear_all(void)//{{{
  * Delete the given number of lines from the given row, scrolling up any
  * text further down within the scroll region.
  */
-       void
+    void
 gui_mch_delete_lines(int row, int num_lines)//{{{
 {
-       if (num_lines <= 0)
-               return;
-
-       if (row + num_lines > gui.scroll_region_bot) {
-               /* Scrolled out of region, just blank the lines out */
-               gui_clear_block(row, gui.scroll_region_left, gui.scroll_region_bot, gui.scroll_region_right);
-       } else {
-               bitBlt (
-                               gui.w,
-                               FILL_X(gui.scroll_region_left), FILL_Y(row),
-                               gui.w,
-                               FILL_X(gui.scroll_region_left), FILL_Y(row + num_lines),
-                               gui.char_width * (gui.scroll_region_right -gui.scroll_region_left + 1) + 1,
-                               gui.char_height * (gui.scroll_region_bot - row - num_lines + 1),
-                               Qt::CopyROP,        // raster Operation
-                               true );             // ignoreMask
-
-               /* Update gui.cursor_row if the cursor scrolled or copied over */
-               if (gui.cursor_row >= row) {
-                       if (gui.cursor_row < row + num_lines)
-                               gui.cursor_is_valid = FALSE;
-                       else if (gui.cursor_row <= gui.scroll_region_bot)
-                               gui.cursor_row -= num_lines;
-               }
-
-               gui_clear_block(gui.scroll_region_bot - num_lines + 1, gui.scroll_region_left,
-                               gui.scroll_region_bot, gui.scroll_region_right);
-
+    if (num_lines <= 0)
+       return;
+
+    if (row + num_lines > gui.scroll_region_bot)
+    {
+       /* Scrolled out of region, just blank the lines out */
+       gui_clear_block(row, gui.scroll_region_left, gui.scroll_region_bot,
+                                                    gui.scroll_region_right);
+    }
+    else
+    {
+       bitBlt(gui.w,
+               FILL_X(gui.scroll_region_left), FILL_Y(row),
+               gui.w,
+               FILL_X(gui.scroll_region_left), FILL_Y(row + num_lines),
+               gui.char_width * (gui.scroll_region_right
+                                           - gui.scroll_region_left + 1) + 1,
+               gui.char_height * (gui.scroll_region_bot - row - num_lines + 1),
+               Qt::CopyROP,        // raster Operation
+               true);              // ignoreMask
+
+       /* Update gui.cursor_row if the cursor scrolled or copied over */
+       if (gui.cursor_row >= row)
+       {
+           if (gui.cursor_row < row + num_lines)
+               gui.cursor_is_valid = FALSE;
+           else if (gui.cursor_row <= gui.scroll_region_bot)
+               gui.cursor_row -= num_lines;
        }
+
+       gui_clear_block(gui.scroll_region_bot - num_lines + 1,
+               gui.scroll_region_left,
+               gui.scroll_region_bot, gui.scroll_region_right);
+    }
 }//}}}
 
 /*
  * Insert the given number of lines before the given row, scrolling down any
  * following text within the scroll region.
  */
-       void
+    void
 gui_mch_insert_lines(int row, int num_lines)//{{{
 {
-       if (num_lines <= 0)
-               return;
-
-       if (row + num_lines > gui.scroll_region_bot) {
-               /* Scrolled out of region, just blank the lines out */
-               gui_clear_block(row, gui.scroll_region_left, gui.scroll_region_bot, gui.scroll_region_right - 1);
-       } else {
-               bitBlt (
-                               gui.w,
-                               FILL_X(gui.scroll_region_left), FILL_Y(row + num_lines),
-                               gui.w,
-                               FILL_X(gui.scroll_region_left), FILL_Y(row),
-                               gui.char_width * ( gui.scroll_region_right - gui.scroll_region_left + 1 ) + 1,
-                               gui.char_height * (gui.scroll_region_bot - row - num_lines + 1),
-                               Qt::CopyROP,        // raster Operation
-                               true );             // ignoreMask
-
-               /* Update gui.cursor_row if the cursor scrolled or copied over */
-               if (gui.cursor_row >= gui.row) {
-                       if (gui.cursor_row <= gui.scroll_region_bot - num_lines)
-                               gui.cursor_row += num_lines;
-                       else if (gui.cursor_row <= gui.scroll_region_bot)
-                               gui.cursor_is_valid = FALSE;
-               }
-
-               gui_clear_block(row, gui.scroll_region_left, row + num_lines - 1, gui.scroll_region_right);
+    if (num_lines <= 0)
+       return;
+
+    if (row + num_lines > gui.scroll_region_bot)
+    {
+       /* Scrolled out of region, just blank the lines out */
+       gui_clear_block(row, gui.scroll_region_left, gui.scroll_region_bot,
+                                                gui.scroll_region_right - 1);
+    }
+    else
+    {
+       bitBlt(gui.w,
+               FILL_X(gui.scroll_region_left), FILL_Y(row + num_lines),
+               gui.w,
+               FILL_X(gui.scroll_region_left), FILL_Y(row),
+               gui.char_width * ( gui.scroll_region_right
+                                          - gui.scroll_region_left + 1 ) + 1,
+               gui.char_height * (gui.scroll_region_bot - row - num_lines + 1),
+               Qt::CopyROP,        // raster Operation
+               true);              // ignoreMask
+
+       /* Update gui.cursor_row if the cursor scrolled or copied over */
+       if (gui.cursor_row >= gui.row)
+       {
+           if (gui.cursor_row <= gui.scroll_region_bot - num_lines)
+               gui.cursor_row += num_lines;
+           else if (gui.cursor_row <= gui.scroll_region_bot)
+               gui.cursor_is_valid = FALSE;
        }
+
+       gui_clear_block(row, gui.scroll_region_left, row + num_lines - 1,
+                                                    gui.scroll_region_right);
+    }
 }//}}}
 
 /*
  * X Selection stuff, for cutting and pasting text to other windows.
  */
-       void
+    void
 clip_mch_request_selection(VimClipboard *cbd)//{{{
 {
 #if QT_VERSION>=300
-       if (cbd==&clip_star) kapp->clipboard()->setSelectionMode(true);
+    if (cbd == &clip_star)
+       kapp->clipboard()->setSelectionMode(true);
 #endif
-       QString selection = kapp->clipboard()->text();
+    QString selection = kapp->clipboard()->text();
 
-       QCString unistring = vmw->codec->fromUnicode(selection);
-       clip_yank_selection(MCHAR,(char_u *)(const char*)unistring,(long) unistring.length(),cbd);
+    QCString unistring = vmw->codec->fromUnicode(selection);
+    clip_yank_selection(MCHAR, (char_u *)(const char*)unistring,
+                                             (long)unistring.length(), cbd);
 #if QT_VERSION>=300
-       if (cbd==&clip_star) kapp->clipboard()->setSelectionMode(false);
+    if (cbd == &clip_star)
+       kapp->clipboard()->setSelectionMode(false);
 #endif
 }//}}}
 
-       void
+    void
 clip_mch_lose_selection(VimClipboard *cbd)//{{{
 {
-       //Don't need to do anything here
-       gui_mch_update();
+    // Don't need to do anything here
+    gui_mch_update();
 }//}}}
 
 /*
  * Check whatever we allready own the selection.
  */
-       int
+    int
 clip_mch_own_selection(VimClipboard *cbd)//{{{
 {
-       if (kapp->clipboard()->ownsSelection())
-           return OK;
-       else {
+    if (kapp->clipboard()->ownsSelection())
+       return OK;
+    else
+    {
 #if QT_VERSION>=300
-           kapp->clipboard()->setSelectionMode(true);
+       kapp->clipboard()->setSelectionMode(true);
 #endif
-           return OK;
-       }
+       return OK;
+    }
 }//}}}
 
 /*
  * Send the current selection to the clipboard.
  */
-void
-clip_mch_set_selection(VimClipboard *cbd){//{{{
-       char_u *data;
-       long_u length;
+    void
+clip_mch_set_selection(VimClipboard *cbd)//{{{
+{
+    char_u *data;
+    long_u length;
 
-       clip_get_selection(cbd);
-       if (clip_convert_selection(&data,&length,cbd)<0) return;
+    clip_get_selection(cbd);
+    if (clip_convert_selection(&data, &length, cbd) < 0)
+       return;
 
-       QString selection((const char *) data);
-       //We must turncate the string because it is not
-       // null terminated
-       selection.truncate((uint) length);
+    QString selection((const char *)data);
+    // We must turncate the string because it is not
+    // null terminated
+    selection.truncate((uint) length);
 
 #if QT_VERSION>=300
-       if (cbd==&clip_star) kapp->clipboard()->setSelectionMode(true);
+    if (cbd == &clip_star)
+       kapp->clipboard()->setSelectionMode(true);
 #endif
-       kapp->clipboard()->setText(selection);
+    kapp->clipboard()->setText(selection);
 #if QT_VERSION>=300
-       kapp->clipboard()->setSelectionMode(false);
+    kapp->clipboard()->setSelectionMode(false);
 #endif
 }//}}}
 
@@ -1136,114 +1203,123 @@ clip_mch_set_selection(VimClipboard *cbd){//{{{
 /*
  * Make a menu item appear either active or not active (grey or not grey).
  */
-       void
+    void
 gui_mch_menu_grey(vimmenu_T * menu, int grey)//{{{
 {
-       if ( !menu || !menu->parent || !menu->parent->widget ) return;
-       menu->parent->widget->setItemEnabled((int)menu, !grey);
-       gui_mch_update();
+    if (!menu || !menu->parent || !menu->parent->widget)
+       return;
+    menu->parent->widget->setItemEnabled((int)menu, !grey);
+    gui_mch_update();
 }//}}}
 
 /*
  * Make menu item hidden or not hidden.
  */
-       void
+    void
 gui_mch_menu_hidden(vimmenu_T * menu, int hidden)//{{{
 {
-       //FIXME: cannot be fixed AFAIK
-       gui_mch_menu_grey(menu,hidden); // it's hard to remove an item in a QPopupMenu
+    // FIXME: cannot be fixed AFAIK
+    // it's hard to remove an item in a QPopupMenu
+    gui_mch_menu_grey(menu, hidden);
 }//}}}
 
 /*
  * This is called after setting all the menus to grey/hidden or not.
  */
-       void
+    void
 gui_mch_draw_menubar()//{{{
 {
-       // nothing to do under kde
+    // nothing to do under kde
 }//}}}
 #endif
 
 /*
  * Scrollbar stuff.
  */
-       void
-gui_mch_enable_scrollbar(scrollbar_T * sb, int flag)//{{{
+    void
+gui_mch_enable_scrollbar(scrollbar_T *sb, int flag)//{{{
 {
-       if (!sb->w) return;
-       int width = gui.w->width();
-       int height = gui.w->height();
-       int neww = vmw->width();
-       int newh = vmw->height();
-
-       if (gui.which_scrollbars[SBAR_LEFT]) width += gui.scrollbar_width;
-       if (gui.which_scrollbars[SBAR_RIGHT]) width += gui.scrollbar_width;
-       if (gui.which_scrollbars[SBAR_BOTTOM]) height += gui.scrollbar_height;
-
-       if (vmw->menuBar()->isVisible() && vmw->menuBar()->isEnabled()
+    if (!sb->w)
+       return;
+    int width = gui.w->width();
+    int height = gui.w->height();
+    int neww = vmw->width();
+    int newh = vmw->height();
+
+    if (gui.which_scrollbars[SBAR_LEFT])
+       width += gui.scrollbar_width;
+    if (gui.which_scrollbars[SBAR_RIGHT])
+       width += gui.scrollbar_width;
+    if (gui.which_scrollbars[SBAR_BOTTOM])
+       height += gui.scrollbar_height;
+
+    if (vmw->menuBar()->isVisible() && vmw->menuBar()->isEnabled()
 #if QT_VERSION>=300
-               && !vmw->menuBar()->isTopLevelMenu()
+           && !vmw->menuBar()->isTopLevelMenu()
 #endif
-               )
-           height += vmw->menuBar()->height();
+       )
+       height += vmw->menuBar()->height();
 #ifdef FEAT_TOOLBAR
-       if (vmw->toolBar()->isVisible() && vmw->toolBar()->isEnabled() &&
-               (vmw->toolBar()->barPos()==KToolBar::Top ||
-                vmw->toolBar()->barPos()==KToolBar::Bottom))
-           height += vmw->toolBar()->height();
-
-       if (vmw->toolBar()->isVisible() && vmw->toolBar()->isEnabled() &&
-               (vmw->toolBar()->barPos()==KToolBar::Left ||
-                vmw->toolBar()->barPos()==KToolBar::Right))
-           width += vmw->toolBar()->width();
+    if (vmw->toolBar()->isVisible() && vmw->toolBar()->isEnabled()
+           && (vmw->toolBar()->barPos() == KToolBar::Top
+               || vmw->toolBar()->barPos() == KToolBar::Bottom))
+       height += vmw->toolBar()->height();
+
+    if (vmw->toolBar()->isVisible() && vmw->toolBar()->isEnabled()
+           && (vmw->toolBar()->barPos() == KToolBar::Left
+               || vmw->toolBar()->barPos() == KToolBar::Right))
+       width += vmw->toolBar()->width();
 #endif
-       if ( abs(vmw->width() - width)>5 && (sb->type==SBAR_LEFT || sb->type==SBAR_RIGHT) )
-           neww=width;
-       if (abs(vmw->height() - height)>5 && (sb->type==SBAR_BOTTOM) )
-           newh=height;
-
-       if (flag)
-           sb->w->show();
-       else
-           sb->w->hide();
-       gui_mch_update();
-       vmw->lock();
-       vmw->resize(neww,newh);
-       vmw->unlock();
-       gui_mch_update();
+    if (abs(vmw->width() - width) > 5
+                        && (sb->type == SBAR_LEFT || sb->type == SBAR_RIGHT))
+       neww = width;
+    if (abs(vmw->height() - height) > 5 && (sb->type == SBAR_BOTTOM))
+       newh = height;
+
+    if (flag)
+       sb->w->show();
+    else
+       sb->w->hide();
+    gui_mch_update();
+    vmw->lock();
+    vmw->resize(neww, newh);
+    vmw->unlock();
+    gui_mch_update();
 }//}}}
 
 /*
  * Return the RGB value of a pixel as "#RRGGBB".
  */
-       long_u
+    long_u
 gui_mch_get_rgb(guicolor_T pixel)//{{{
 {
-//     QColor c(pixel,pixel);
-//     return (c.red() << 16) +  ((c.green() << 8)) + (c.blue());
-       return pixel; // funny no ? it looks like with Qt we can always use directly the rgb value (i hope i don't break colors again ;p)
+    // QColor c(pixel, pixel);
+    // return (c.red() << 16) +  ((c.green() << 8)) + (c.blue());
+    return pixel;
+    // funny no ? it looks like with Qt we can always use directly the rgb
+    // value (i hope i don't break colors again ;p)
 }//}}}
 
 /*
  * Get current y mouse coordinate in text window.
  * Return -1 when unknown.
  */
-       int
+    int
 gui_mch_get_mouse_x(void)//{{{
 {
-       return vmw->mapFromGlobal( QCursor::pos() ).x();
+    return vmw->mapFromGlobal(QCursor::pos()).x();
 }//}}}
 
-       int
+    int
 gui_mch_get_mouse_y(void)//{{{
 {
-       return vmw->mapFromGlobal( QCursor::pos() ).y();
+    return vmw->mapFromGlobal(QCursor::pos()).y();
 }//}}}
 
-       void
+    void
 gui_mch_setmouse(int x, int y)//{{{
 {
-       QCursor::setPos( vmw->mapToGlobal( QPoint(x,y)) );
+    QCursor::setPos(vmw->mapToGlobal(QPoint(x, y)));
 }//}}}
 
 #if defined(FEAT_MOUSESHAPE) || defined(PROTO)
@@ -1256,16 +1332,16 @@ static int mshape_ids[] = {//{{{
        Qt::SplitHCursor,               /* udsizing */
        Qt::SizeHorCursor,              /* leftright */
        Qt::SizeHorCursor,              /* lrsizing */
-       Qt::WaitCursor,         /* busy */
-       Qt::ForbiddenCursor,    /* no */
+       Qt::WaitCursor,                 /* busy */
+       Qt::ForbiddenCursor,            /* no */
        Qt::CrossCursor,                /* crosshair */
-       Qt::PointingHandCursor, /* hand1 */
-       Qt::PointingHandCursor, /* hand2 */
+       Qt::PointingHandCursor,         /* hand1 */
+       Qt::PointingHandCursor,         /* hand2 */
        Qt::ArrowCursor,                /* pencil */
-       Qt::WhatsThisCursor,    /* question */
+       Qt::WhatsThisCursor,            /* question */
        Qt::ArrowCursor,                /* right-arrow */
        Qt::UpArrowCursor,              /* up-arrow */
-       Qt::ArrowCursor         /* last one */
+       Qt::ArrowCursor                 /* last one */
 };//}}}
 #else
 static int mshape_ids[] = {//{{{
@@ -1276,68 +1352,65 @@ static int mshape_ids[] = {//{{{
        SplitHCursor,           /* udsizing */
        SizeHorCursor,          /* leftright */
        SizeHorCursor,          /* lrsizing */
-       WaitCursor,                     /* busy */
-       ForbiddenCursor,                /* no */
+       WaitCursor,             /* busy */
+       ForbiddenCursor,        /* no */
        CrossCursor,            /* crosshair */
-       PointingHandCursor,             /* hand1 */
-       PointingHandCursor,             /* hand2 */
+       PointingHandCursor,     /* hand1 */
+       PointingHandCursor,     /* hand2 */
        ArrowCursor,            /* pencil */
        ArrowCursor,            /* question */
        ArrowCursor,            /* right-arrow */
        UpArrowCursor,          /* up-arrow */
-       ArrowCursor                     /* last one */
+       ArrowCursor             /* last one */
 };//}}}
 #endif
 
-       void
+    void
 mch_set_mouse_shape (int shape)//{{{
 {
-       int                id;
+    int                   id;
 
-       if (shape == MSHAPE_HIDE || gui.pointer_hidden)
+    if (shape == MSHAPE_HIDE || gui.pointer_hidden)
 #if QT_VERSION>=300
-               gui.w->setCursor(Qt::BlankCursor);
+       gui.w->setCursor(Qt::BlankCursor);
 #else
-               gui.w->setCursor(BlankCursor);
+       gui.w->setCursor(BlankCursor);
 #endif
-       else
+    else
+    {
+       if (shape >= MSHAPE_NUMBERED)
        {
-               if (shape >= MSHAPE_NUMBERED)
-               {
-                       id = shape - MSHAPE_NUMBERED;
-                       /*              if (id >= GDK_NUM_GLYPHS)
-                                       id = GDK_LEFT_PTR;
-                                       else
-                                       id &= ~1;*/     /* they are always even (why?) */
-                       id &= -1;
-               }
-               else
-                       id = mshape_ids[shape];
-
-               gui.w->setCursor(id);
+           id = shape - MSHAPE_NUMBERED;
+           /*          if (id >= GDK_NUM_GLYPHS)
+                       id = GDK_LEFT_PTR;
+                       else
+                       id &= ~1;*/     /* they are always even (why?) */
+           id &= -1;
        }
-       if (shape != MSHAPE_HIDE)
-               last_shape = shape;
+       else
+           id = mshape_ids[shape];
+
+       gui.w->setCursor(id);
+    }
+    if (shape != MSHAPE_HIDE)
+       last_shape = shape;
 }//}}}
 #endif
 
-       int
+    int
 gui_mch_adjust_charsize ()//{{{
 {
-       QFont f(*(gui.current_font));
-       QFontMetrics fm (f);
-       gui.char_height = fm.height() + p_linespace;
-       //gui.char_height = fm.ascent() + fm.descent() + p_linespace;
-       gui.char_ascent = fm.ascent() + p_linespace/2;
+    QFont f(*(gui.current_font));
+    QFontMetrics fm(f);
+    gui.char_height = fm.height() + p_linespace;
+    //gui.char_height = fm.ascent() + fm.descent() + p_linespace;
+    gui.char_ascent = fm.ascent() + p_linespace / 2;
 
-       return OK;
+    return OK;
 }//}}}
 
-       void
+    void
 gui_mch_set_foreground ()//{{{
 {
-       KWin::setActiveWindow(vmw->winId());
+    KWin::setActiveWindow(vmw->winId());
 }//}}}
-
-
-
index 8b997af0cccd5251617763e23ffe078e666f7318..2278de626dac10bbfabeefeae02a8b3d715c8e19 100644 (file)
@@ -4341,6 +4341,7 @@ xim_set_focus(focus)
     }
 }
 
+#ifndef FEAT_GUI_KDE
 /*ARGSUSED*/
     void
 im_set_position(row, col)
@@ -4349,6 +4350,7 @@ im_set_position(row, col)
 {
     xim_set_preedit();
 }
+#endif
 
 /*
  * Set the XIM to the current cursor position.
@@ -4642,7 +4644,7 @@ xim_set_status_area()
 #endif
 }
 
-#if defined(FEAT_GUI_X11) || defined(FEAT_GUI_GTK)
+#if defined(FEAT_GUI_X11) || defined(FEAT_GUI_GTK) || defined(FEAT_GUI_KDE)
 static char e_xim[] = N_("E285: Failed to create input context");
 #endif
 
@@ -5414,7 +5416,7 @@ xim_get_status_area_height()
     if (xim_input_style & (int)GDK_IM_STATUS_AREA)
        return gui.char_height;
 #elif defined FEAT_GUI_KDE
-#warning FIXME
+    /* always return zero? */
 #else
     if (status_area_enabled)
        return gui.char_height;
@@ -5434,6 +5436,10 @@ im_get_status()
 #  ifdef FEAT_GUI_GTK
     if (xim_input_style & (int)GDK_IM_PREEDIT_CALLBACKS)
        return xim_can_preediting;
+#  endif
+#  ifdef FEAT_GUI_KDE
+    if (preedit_start_col != MAXCOL)
+       return TRUE;
 #  endif
     return xim_has_focus;
 }
index 0dbc1cb15a9b27eb30cdd2c5e3f02a064b29ac09..fce731b9a07fc2681e3c20a86d7fc317bc5f72fa 100644 (file)
@@ -1320,14 +1320,13 @@ x_error_handler(dpy, error_event)
     Display    *dpy;
     XErrorEvent        *error_event;
 {
-    /* KDE sometimes produces X error that we want to ignore */
-#if defined(FEAT_GUI_KDE)
     XGetErrorText(dpy, error_event->error_code, (char *)IObuff, IOSIZE);
-    STRCAT(IObuff, "\nVim: Got X error but we continue...\n");
-    fprintf(stderr, IObuff);
+#if defined(FEAT_GUI_KDE)
+    /* KDE sometimes produces X error that we want to ignore */
+    STRCAT(IObuff, _("\nVim: Got X error but we continue...\n"));
+    mch_errmsg((char *)IObuff);
     return 0;
 #else
-    XGetErrorText(dpy, error_event->error_code, (char *)IObuff, IOSIZE);
     STRCAT(IObuff, _("\nVim: Got X error\n"));
 
     /* We cannot print a message and continue, because no X calls are allowed
index 4f00e9c00f6a9300709d5a8e77ff31bcbdc24841..8641c75b5f60472d0a799aabea78bb0293181898 100644 (file)
@@ -14,6 +14,7 @@ buf_T *buflist_new __ARGS((char_u *ffname, char_u *sfname, linenr_T lnum, int fl
 void free_buf_options __ARGS((buf_T *buf, int free_p_ff));
 int buflist_getfile __ARGS((int n, linenr_T lnum, int options, int forceit));
 void buflist_getfpos __ARGS((void));
+buf_T *buflist_findname_exp __ARGS((char_u *fname));
 buf_T *buflist_findname __ARGS((char_u *ffname));
 int buflist_findpat __ARGS((char_u *pattern, char_u *pattern_end, int unlisted, int diffmode));
 int ExpandBufnames __ARGS((char_u *pat, int *num_file, char_u ***file, int options));
@@ -24,7 +25,7 @@ pos_T *buflist_findfpos __ARGS((buf_T *buf));
 linenr_T buflist_findlnum __ARGS((buf_T *buf));
 void buflist_list __ARGS((exarg_T *eap));
 int buflist_name_nr __ARGS((int fnum, char_u **fname, linenr_T *lnum));
-int setfname __ARGS((buf_T *buf, char_u *ffname, char_u *sfname, int message));
+int setfname __ARGS((buf_T *buf, char_u *ffname, char_u *sfname, int exist_msg));
 void buf_set_name __ARGS((int fnum, char_u *name));
 void buf_name_changed __ARGS((buf_T *buf));
 buf_T *setaltfname __ARGS((char_u *ffname, char_u *sfname, linenr_T lnum));
index c4eb5b0e8e0d97b3b6a48914bacf1523d01262f1..cae8208fa478e888c944e1b4f2c8d7547cd9a44c 100644 (file)
@@ -18,6 +18,7 @@ int gui_mch_adjust_charsize __ARGS((void));
 GuiFontset gui_mch_get_fontset __ARGS((char_u *name, int report_error, int fixed_width));
 int gui_mch_init_font __ARGS((char_u *font_name, int fontset));
 GuiFont gui_mch_get_font __ARGS((char_u *name, int report_error));
+char_u *gui_mch_get_fontname __ARGS((GuiFont font, char_u *name));
 void gui_mch_set_font __ARGS((GuiFont font));
 void gui_mch_set_fontset __ARGS((GuiFontset fontset));
 void gui_mch_free_font __ARGS((GuiFont font));
index dbde1550f2eaec4e9a67a134153cd82d07cd0a63..fd6eba648c3b6c0a274a4bfdc3b95047959dfe4a 100644 (file)
@@ -105,6 +105,9 @@ static void qf_update_buffer __ARGS((void));
 static void    qf_fill_buffer __ARGS((void));
 #endif
 static char_u  *get_mef_name __ARGS((void));
+static buf_T   *load_dummy_buffer __ARGS((char_u *fname));
+static void    wipe_dummy_buffer __ARGS((buf_T *buf));
+static void    unload_dummy_buffer __ARGS((buf_T *buf));
 
 /*
  * Read the errorfile "efile" into memory, line by line, building the error
@@ -2063,10 +2066,10 @@ buf_hide(buf)
  * Return TRUE when using ":vimgrep" for ":grep".
  */
     int
-grep_internal(eap)
-    exarg_T    *eap;
+grep_internal(cmdidx)
+    cmdidx_T   cmdidx;
 {
-    return ((eap->cmdidx == CMD_grep || eap->cmdidx == CMD_grepadd)
+    return ((cmdidx == CMD_grep || cmdidx == CMD_grepadd)
            && STRCMP("internal",
                        *curbuf->b_p_gp == NUL ? p_gp : curbuf->b_p_gp) == 0);
 }
@@ -2083,7 +2086,7 @@ ex_make(eap)
     unsigned   len;
 
     /* Redirect ":grep" to ":vimgrep" if 'grepprg' is "internal". */
-    if (grep_internal(eap))
+    if (grep_internal(eap->cmdidx))
     {
        ex_vimgrep(eap);
        return;
@@ -2249,35 +2252,50 @@ ex_cfile(eap)
 ex_vimgrep(eap)
     exarg_T    *eap;
 {
-    regmatch_T regmatch;
+    regmmatch_T        regmatch;
     char_u     *save_cpo;
     int         fcount;
     char_u     **fnames;
+    char_u      *s;
     char_u      *p;
     int                i;
-    FILE       *fd;
     int         fi;
     struct qf_line *prevp = NULL;
     long       lnum;
     garray_T   ga;
+    buf_T      *buf;
+    int                duplicate_name = FALSE;
+    int                using_dummy;
+    int                found_match;
+    int                first_match = TRUE;
 
     /* Make 'cpoptions' empty, the 'l' flag should not be used here. */
     save_cpo = p_cpo;
     p_cpo = empty_option;
 
-    /* Get the search pattern */
+    /* Get the search pattern: either white-separated or enclosed in // */
     regmatch.regprog = NULL;
-    p = skip_regexp(eap->arg + 1, *eap->arg, TRUE, NULL);
-    if (*p != *eap->arg)
+    if (vim_isIDc(*eap->arg))
     {
-       EMSG(_("E682: Invalid search pattern or delimiter"));
-       goto theend;
+       s = eap->arg;
+       p = skiptowhite(s);
+    }
+    else
+    {
+       s = eap->arg + 1;
+       p = skip_regexp(s, *eap->arg, TRUE, NULL);
+       if (*p != *eap->arg)
+       {
+           EMSG(_("E682: Invalid search pattern or delimiter"));
+           goto theend;
+       }
     }
-    *p++ = NUL;
-    regmatch.regprog = vim_regcomp(eap->arg + 1, RE_MAGIC);
+    if (*p != NUL)
+       *p++ = NUL;
+    regmatch.regprog = vim_regcomp(s, RE_MAGIC);
     if (regmatch.regprog == NULL)
        goto theend;
-    regmatch.rm_ic = FALSE;
+    regmatch.rmm_ic = FALSE;
 
     p = skipwhite(p);
     if (*p == NUL)
@@ -2312,28 +2330,37 @@ ex_vimgrep(eap)
 
     for (fi = 0; fi < fcount && !got_int; ++fi)
     {
-       fd = fopen((char *)fnames[fi], "r");
-       if (fd == NULL)
+       buf = buflist_findname_exp(fnames[fi]);
+       if (buf == NULL || buf->b_ml.ml_mfp == NULL)
+       {
+           /* Remember that a buffer with this name already exists. */
+           duplicate_name = (buf != NULL);
+
+           /* Load file into a buffer, so that 'fileencoding' is detected,
+            * autocommands applied, etc. */
+           buf = load_dummy_buffer(fnames[fi]);
+           using_dummy = TRUE;
+       }
+       else
+           /* Use existing, loaded buffer. */
+           using_dummy = FALSE;
+       if (buf == NULL)
            smsg((char_u *)_("Cannot open file \"%s\""), fnames[fi]);
        else
        {
-           lnum = 1;
-           while (!vim_fgets(IObuff, IOSIZE, fd) && !got_int)
+           found_match = FALSE;
+           for (lnum = 1; lnum <= buf->b_ml.ml_line_count; ++lnum)
            {
-               if (vim_regexec(&regmatch, IObuff, (colnr_T)0))
+               if (vim_regexec_multi(&regmatch, curwin, buf, lnum,
+                                                             (colnr_T)0) > 0)
                {
-                   int     l = STRLEN(IObuff);
-
-                   /* remove trailing CR, LF, spaces, etc. */
-                   while (l > 0 && IObuff[l - 1] <= ' ')
-                       IObuff[--l] = NUL;
-
                    if (qf_add_entry(&prevp,
                                NULL,       /* dir */
                                fnames[fi],
-                               IObuff,
-                               lnum,
-                               (int)(regmatch.startp[0] - IObuff) + 1,/* col */
+                               ml_get_buf(buf,
+                                    regmatch.startpos[0].lnum + lnum, FALSE),
+                               regmatch.startpos[0].lnum + lnum,
+                               regmatch.startpos[0].col + 1,
                                FALSE,      /* virt_col */
                                0,          /* nr */
                                0,          /* type */
@@ -2343,11 +2370,34 @@ ex_vimgrep(eap)
                        got_int = TRUE;
                        break;
                    }
+                   else
+                       found_match = TRUE;
                }
-               ++lnum;
                line_breakcheck();
+               if (got_int)
+                   break;
+           }
+
+           if (using_dummy)
+           {
+               if (duplicate_name)
+                   /* Never keep a dummy buffer if there is another buffer
+                    * with the same name. */
+                   wipe_dummy_buffer(buf);
+               else if (!buf_hide(buf))
+               {
+                   /* When not hiding the buffer and no match was found we
+                    * don't need to remember the buffer, wipe it out.  If
+                    * there was a match and it wasn't the first one: only
+                    * unload the buffer. */
+                   if (!found_match)
+                       wipe_dummy_buffer(buf);
+                   else if (!first_match)
+                       unload_dummy_buffer(buf);
+               }
            }
-           fclose(fd);
+           if (found_match)
+               first_match = FALSE;
        }
     }
 
@@ -2364,6 +2414,8 @@ ex_vimgrep(eap)
     /* Jump to first match. */
     if (qf_lists[qf_curlist].qf_count > 0)
        qf_jump(0, 0, FALSE);
+    else
+       EMSG2(_(e_nomatch2), s);
 
 theend:
     vim_free(regmatch.regprog);
@@ -2375,6 +2427,104 @@ theend:
        free_string_option(save_cpo);
 }
 
+/*
+ * Load file "fname" into a dummy buffer and return the buffer pointer.
+ * Returns NULL if it fails.
+ * Must call unload_dummy_buffer() or wipe_dummy_buffer() later!
+ */
+    static buf_T *
+load_dummy_buffer(fname)
+    char_u     *fname;
+{
+    buf_T      *newbuf;
+    int                failed = TRUE;
+#ifdef FEAT_AUTOCMD
+    aco_save_T aco;
+#else
+    buf_T      *old_curbuf = curbuf;
+#endif
+
+    /* Allocate a buffer without putting it in the buffer list. */
+    newbuf = buflist_new(NULL, NULL, (linenr_T)1, BLN_DUMMY);
+    if (newbuf == NULL)
+       return NULL;
+
+#ifdef FEAT_AUTOCMD
+    /* set curwin/curbuf to buf and save a few things */
+    aucmd_prepbuf(&aco, newbuf);
+#else
+    curbuf = newbuf;
+    curwin->w_buffer = newbuf;
+#endif
+
+    /* Need to set the filename for autocommands. */
+    (void)setfname(curbuf, fname, NULL, FALSE);
+
+    if (ml_open() == OK)
+    {
+       /* Create swap file now to avoid the ATTENTION message. */
+       check_need_swap(TRUE);
+
+       /* Remove the "dummy" flag, otherwise autocommands may not
+        * work. */
+       curbuf->b_flags &= ~BF_DUMMY;
+
+       if (readfile(fname, NULL,
+                   (linenr_T)0, (linenr_T)0, (linenr_T)MAXLNUM,
+                   NULL, READ_NEW | READ_DUMMY) == OK
+               && !(curbuf->b_flags & BF_NEW))
+       {
+           failed = FALSE;
+           if (curbuf != newbuf)
+           {
+               /* Bloody autocommands changed the buffer! */
+               if (buf_valid(newbuf))
+                   wipe_buffer(newbuf, FALSE);
+               newbuf = curbuf;
+           }
+       }
+    }
+
+#ifdef FEAT_AUTOCMD
+    /* restore curwin/curbuf and a few other things */
+    aucmd_restbuf(&aco);
+#else
+    curbuf = old_curbuf;
+    curwin->w_buffer = old_curbuf;
+#endif
+
+    if (!buf_valid(newbuf))
+       return NULL;
+    if (failed)
+    {
+       wipe_dummy_buffer(newbuf);
+       return NULL;
+    }
+    return newbuf;
+}
+
+/*
+ * Wipe out the dummy buffer that load_dummy_buffer() created.
+ */
+    static void
+wipe_dummy_buffer(buf)
+    buf_T      *buf;
+{
+    if (curbuf != buf)         /* safety check */
+       wipe_buffer(buf, FALSE);
+}
+
+/*
+ * Unload the dummy buffer that load_dummy_buffer() created.
+ */
+    static void
+unload_dummy_buffer(buf)
+    buf_T      *buf;
+{
+    if (curbuf != buf)         /* safety check */
+       close_buffer(NULL, buf, DOBUF_UNLOAD);
+}
+
 /*
  * ":[range]cbuffer [bufnr]" command.
  */
@@ -2487,7 +2637,8 @@ ex_helpgrep(eap)
                                            fnames[fi],
                                            IObuff,
                                            lnum,
-                                           0,          /* col */
+                                           (int)(regmatch.startp[0] - IObuff)
+                                                               + 1, /* col */
                                            FALSE,      /* virt_col */
                                            0,          /* nr */
                                            1,          /* type */
index e986a223b8394412e20bf4b04d11fda1697091b1..11b4dcc5fad8b39147a678b2597de322ddd24bb8 100644 (file)
@@ -3780,7 +3780,7 @@ win_line(wp, lnum, startrow, endrow)
                && (search_attr == 0 || char_attr != search_attr))
            char_attr = extra_attr;
 
-#if defined(FEAT_XIM) && (defined(FEAT_GUI_GTK) || defined(FEAT_GUI_KDE))
+#if defined(FEAT_XIM) && defined(FEAT_GUI_GTK)
        /* XIM don't send preedit_start and preedit_end, but they send
         * preedit_changed and commit.  Thus Vim can't set "im_is_active", use
         * im_is_preediting() here. */
@@ -4771,7 +4771,7 @@ status_match_len(xp, s)
 #endif
                )
            ++s;
-       len += ptr2cells(s++);
+       len += ptr2cells(s);
        mb_ptr_adv(s);
     }
 
index ba8cee618ac3439fbf1e093374b54dd33c738104..4eaa08a9ecd386bee5b27c50963658f3b3a6c366 100644 (file)
@@ -36,5 +36,5 @@
 #define VIM_VERSION_NODOT      "vim70aa"
 #define VIM_VERSION_SHORT      "7.0aa"
 #define VIM_VERSION_MEDIUM     "7.0aa ALPHA"
-#define VIM_VERSION_LONG       "VIM - Vi IMproved 7.0aa ALPHA (2004 Dec 24)"
-#define VIM_VERSION_LONG_DATE  "VIM - Vi IMproved 7.0aa ALPHA (2004 Dec 24, compiled "
+#define VIM_VERSION_LONG       "VIM - Vi IMproved 7.0aa ALPHA (2004 Dec 29)"
+#define VIM_VERSION_LONG_DATE  "VIM - Vi IMproved 7.0aa ALPHA (2004 Dec 29, compiled "
index f8ee4e2a4393cabbf23384e870a041edac3e0922..863744839fa1539f1b303a3a79409743ae74314e 100644 (file)
--- a/src/vim.h
+++ b/src/vim.h
@@ -604,6 +604,7 @@ extern char *(*dyn_libintl_textdomain)(const char *domainname);
 #define BF_NEW         0x10    /* file didn't exist when editing started */
 #define BF_NEW_W       0x20    /* Warned for BF_NEW and file created */
 #define BF_READERR     0x40    /* got errors while reading the file */
+#define BF_DUMMY       0x80    /* dummy buffer, only used internally */
 
 /* Mask to check for flags that prevent normal writing */
 #define BF_WRITE_MASK  (BF_NOTEDITED + BF_NEW + BF_READERR)