Compare commits

...

215 Commits

Author SHA1 Message Date
Bjorn Winckler b959dabf31 Snapshot 62 2011-09-18 16:02:14 +02:00
Bjorn Winckler fb682aa63b Add preference to disable native full-screen 2011-09-18 13:41:28 +02:00
Bjorn Winckler 0df4812a34 Merge branch 'vim'
Conflicts:
	src/gui.c
2011-09-15 12:21:16 +02:00
Bram Moolenaar 33238357a4 Added tag v7-3-315 for changeset 3ecf9e91d88a 2011-09-14 19:04:40 +02:00
Bram Moolenaar a7433858d2 updated for version 7.3.315
Problem:    Opening a window before forking causes problems for GTK.
Solution:   Fork first, create the window in the child and report back to the
	    parent process whether it worked.  If successful the parent exits,
	    if unsuccessful the child exits and the parent continues in the
	    terminal. (Tim Starling)
2011-09-14 19:04:39 +02:00
Bram Moolenaar feab21d38e Added tag v7-3-314 for changeset 6ab1b45cc95e 2011-09-14 19:01:42 +02:00
Bram Moolenaar 38f22f9c19 updated for version 7.3.314
Problem:    Missing parenthesis.
Solution:   Add it. (Benjamin R. Haskell)
2011-09-14 19:01:42 +02:00
Bram Moolenaar 49ee1c0362 Added tag v7-3-313 for changeset dc60200a16b2 2011-09-14 18:59:40 +02:00
Bram Moolenaar becaaaead9 updated for version 7.3.313
Problem:    One more warning when compiling with dynamic Python 3.
Solution:   Change PySliceObject to PyObject.
2011-09-14 18:59:39 +02:00
Bram Moolenaar f7a78fd1d6 Updated runtime files. 2011-09-14 17:55:08 +02:00
Bram Moolenaar 13cb4e6055 Added tag v7-3-312 for changeset 0ed06069aaf3 2011-09-14 17:50:14 +02:00
Bram Moolenaar 406ac0a6d3 updated for version 7.3.312
Problem:    Can't compile with tiny features.
Solution:   Add #ifdef around win_valid().
2011-09-14 17:50:14 +02:00
Bram Moolenaar e7c4730ea7 Added tag v7-3-311 for changeset 2cbde6bcc623 2011-09-14 16:52:09 +02:00
Bram Moolenaar d07211ba92 updated for version 7.3.311
Problem:    Complete function isn't called when the leader changed.
Solution:   Allow the complete function to return a dictionary with a flag
	    that indicates ins_compl_restart() is to be called when the leader
	    changes. (Taro Muraoka)
2011-09-14 16:52:09 +02:00
Bram Moolenaar 2c634a61c1 Added tag v7-3-310 for changeset 51ce22ba89d1 2011-09-14 16:05:15 +02:00
Bram Moolenaar ce2d6ca8a0 updated for version 7.3.310
Problem:    Code not following Vim style.
Solution:   Fix the style. (Elias Diem)
2011-09-14 16:05:15 +02:00
Bram Moolenaar 0949e7f3cb Added tag v7-3-309 for changeset 6eae1b42c668 2011-09-14 15:41:58 +02:00
Bram Moolenaar 020e3b0da8 updated for version 7.3.309
Problem:    Warnings for pointer types.
Solution:   Change PySliceObject to PyObject.
2011-09-14 15:41:58 +02:00
Bram Moolenaar 9a0bd38bac Added tag v7-3-308 for changeset 61c5e1527bd8 2011-09-14 15:39:29 +02:00
Bram Moolenaar b7bb0bdc20 updated for version 7.3.308
Problem:    Writing to 'verbosefile' has problems, e.g. for :highlight.
Solution:   Do not use a separate verbose_write() function but write with the
	    same code that does redirecting. (Yasuhiro Matsumoto)
2011-09-14 15:39:29 +02:00
Bram Moolenaar 3011c698b3 Added tag v7-3-307 for changeset 880b7dd69331 2011-09-14 15:01:58 +02:00
Bram Moolenaar a1213ba4c8 updated for version 7.3.307
Problem:    Python 3 doesn't support slice assignment.
Solution:   Implement slices. (Brett Overesch, Roland Puntaier)
2011-09-14 15:01:58 +02:00
Bram Moolenaar 324460bd91 Added tag v7-3-306 for changeset 0787bb5f387b 2011-09-14 14:43:25 +02:00
Bram Moolenaar 69f06a5f47 updated for version 7.3.306
Problem:    When closing a window there is a chance that deleting a scrollbar
	    triggers a GUI resize, which uses the window while it is not in a
	    valid state.
Solution:   Set the buffer pointer to NULL to be able to detect the invalid
	    situation.  Fix a few places that used the buffer pointer
	    incorrectly.
2011-09-14 14:43:25 +02:00
Bram Moolenaar a21d5cd3fb Added tag v7-3-305 for changeset 0e06c025f66f 2011-09-14 14:33:51 +02:00
Bram Moolenaar 349aba9d06 updated for version 7.3.305
Problem:    Auto-loading a function while editing the command line causes
	    scrolling up the display.
Solution:   Don't set msg_scroll when defining a function and the user is not
	    typing. (Yasuhiro Matsumoto)
2011-09-14 14:33:51 +02:00
Bram Moolenaar 0390598346 Added tag v7-3-304 for changeset b3a523ced6bd 2011-09-14 10:49:46 +02:00
Bram Moolenaar 393701519f updated for version 7.3.304
Problem:    Strawberry Perl doesn't work on MS-Windows.
Solution:   Use xsubpp if needed. (Yasuhiro Matsumoto)
2011-09-14 10:49:46 +02:00
Bjorn Winckler 439e2de8e4 Merge branch 'vim'
Conflicts:
	src/auto/configure
	src/if_ruby.c
	src/os_unix.c
2011-09-11 10:39:17 +02:00
Bram Moolenaar d080627083 Added tag v7-3-303 for changeset d832d642f520 2011-09-08 23:24:14 +02:00
Bram Moolenaar 16fa70308c updated for version 7.3.303
Problem:    Compilation error.
Solution:   Correct return type from int to pid_t. (Danek Duvall)
2011-09-08 23:24:14 +02:00
Bram Moolenaar 770d08e1d9 Added tag v7-3-302 for changeset 61b2f2662310 2011-09-08 23:22:40 +02:00
Bram Moolenaar 6aae53fbbc updated for version 7.3.302
Problem:    Test 19 fails without 'smartindent' and +eval.
Solution:   Don't use ":exe". Source small.vim.
2011-09-08 23:22:40 +02:00
Bram Moolenaar 79f63a43c8 Added tag v7-3-301 for changeset 4a7097153089 2011-09-07 19:58:10 +02:00
Bram Moolenaar 81a7633180 updated for version 7.3.301
Problem:    When 'smartindent' and 'copyindent' are set a Tab is used even
	    though 'expandtab' is set.
Solution:   Do not insert Tabs. Add a test. (Christian Brabandt)
2011-09-07 19:58:09 +02:00
Bram Moolenaar 4df94e4d83 Added tag v7-3-300 for changeset 2665b456ee59 2011-09-07 19:30:21 +02:00
Bram Moolenaar 8645ea43d0 updated for version 7.3.300
Problem:    Python doesn't parse multi-byte argument correctly.
Solution:   Use "t" instead of "s". (lilydjwg)
2011-09-07 19:30:21 +02:00
Bram Moolenaar ca1a04794c Added tag v7-3-299 for changeset eb4972982bfe 2011-09-07 19:09:01 +02:00
Bram Moolenaar 51e31e9713 updated for version 7.3.299
Problem:    Source code not in Vim style.
Solution:   Adjust the style. (Elias Diem)
2011-09-07 19:09:01 +02:00
Bram Moolenaar 994b93a73d Added tag v7-3-298 for changeset 43b1d031e302 2011-09-07 18:58:30 +02:00
Bram Moolenaar dc6e5f1009 updated for version 7.3.298
Problem:    Built-in colors are different from rgb.txt.
Solution:   Adjust the color values. (Benjamin Haskell)
2011-09-07 18:58:29 +02:00
Bram Moolenaar 9d6da2621a Added tag v7-3-297 for changeset 22550986c713 2011-09-07 18:47:23 +02:00
Bram Moolenaar 65c62e1036 updated for version 7.3.297
Problem:    Can't load Perl 5.14 dynamically.
Solution:   Add code in #ifdefs. (Charles Cooper)
2011-09-07 18:47:23 +02:00
Bram Moolenaar 92011ac52a Added tag v7-3-296 for changeset c19c15a9e9bf 2011-09-07 15:04:31 +02:00
Bram Moolenaar 9d2bfce7a5 updated for version 7.3.296
Problem:    When writing to an external command a zombie process may be left
	    behind.
Solution:   Wait on the process. (James Vega)
2011-09-07 15:04:31 +02:00
Bram Moolenaar 2e1ef7f670 Added tag v7-3-295 for changeset 0d8494c05113 2011-09-07 14:06:47 +02:00
Bram Moolenaar 5507ad9c4e updated for version 7.3.295
Problem:    When filtering text with an external command Vim may not read all
	    the output.
Solution:   When select() is interrupted loop and try again. (James Vega)
2011-09-07 14:06:47 +02:00
Bram Moolenaar 5b43e33aa6 Added tag v7-3-294 for changeset dbd73fe939cf 2011-09-05 20:13:42 +02:00
Bram Moolenaar b5711505da updated for version 7.3.294
Problem:    Patch 289 causes more problems than it solves.
Solution:   Rever the patch untill a better solution is found.
2011-09-05 20:13:42 +02:00
Bjorn Winckler 54eddb6057 Plug memory leak in PSMTabBarControl 2011-09-04 17:33:39 +02:00
Bram Moolenaar f17a7b3224 Added tag v7-3-293 for changeset 6cd0d6413a2e 2011-09-02 14:18:20 +02:00
Bram Moolenaar a26ab7715d updated for version 7.3.293
Problem:    MSVC compiler has a problem with non-ASCII characters.
Solution:   Avoid non-ASCII characters. (Hong Xu)
2011-09-02 14:18:20 +02:00
Bram Moolenaar 71f29fbc2d Added tag v7-3-292 for changeset b6af1c5dd22f 2011-09-02 14:07:36 +02:00
Bram Moolenaar 8b7e080a84 updated for version 7.3.292
Problem:    Crash when using fold markers and selecting a visual block that
	    includes a folded line and goes to end of line. (Sam Lidder)
Solution:   Check for the column to be MAXCOL. (James Vega)
2011-09-02 14:07:36 +02:00
Bram Moolenaar 90af7efedf Added tag v7-3-291 for changeset e8ee4b4ebf41 2011-09-02 12:27:25 +02:00
Bram Moolenaar f959b996e8 updated for version 7.3.291
Problem:    Configure doesn't work properly with Python3.
Solution:   Put -ldl before $LDFLAGS. Add PY3_NO_RTLD_GLOBAL. (Roland
	    Puntaier)
2011-09-02 12:27:25 +02:00
Bram Moolenaar e48974af8c Added tag v7-3-290 for changeset df33dba4e553 2011-09-02 11:56:20 +02:00
Bram Moolenaar 2de2bfa2d0 updated for version 7.3.290
Problem:    When a BufWriteCmd autocommand resets 'modified' this doesn't
	    change older buffer states to be marked as 'modified' like
	    ":write" does.  (Yukihiro Nakadaira)
Solution:   When the BufWriteCmd resets 'modified' then adjust the undo
	    information like ":write" does.
2011-09-02 11:56:20 +02:00
Bjorn Winckler 5cfb54ead4 Change full-screen maximization heuristic
Only maximize full-screen window on certain events, such as toggling tab
line or scrollbars.  This modifies the behavior introduced in commit
88fc234df7 which could cause problems upon
entering full-screen.
2011-08-29 21:45:33 +02:00
Bjorn Winckler b7571e20e7 Fix window dimension autosave regression
Also compensate for tabline if it is visible by adding another row to
the autosaved rows.
2011-08-29 19:56:03 +02:00
Bjorn Winckler 27933401af Restore hard-coded <Backspace> binding
Binding <Backspace> in the sytem gvimrc caused problems with plugins, so
restore the hard-coded binding instead.
2011-08-29 18:41:40 +02:00
Bjorn Winckler afc4e4ce4a Revert "Map delete key to delete visual selection"
This reverts commit ec80934916.
2011-08-29 18:36:54 +02:00
Bram Moolenaar 6a9a8f9b19 Added tag v7-3-289 for changeset 44ffd0a8abcd 2011-08-28 16:02:28 +02:00
Bram Moolenaar e5c652eca9 updated for version 7.3.289
Problem:    Complete function isn't called when the leader changed.
Solution:   Call ins_compl_restart() when the leader changed.  (Taro Muraoka)
2011-08-28 16:02:28 +02:00
Bram Moolenaar 3ab9c1384f Added tag v7-3-288 for changeset e4f3fa1a474e 2011-08-28 16:00:19 +02:00
Bram Moolenaar 054b67b2b8 updated for version 7.3.288
Problem:    has('python') may give an error message for not being able to load
	    the library after using python3.
Solution:   Only give the error when the verbose argument is true.
2011-08-28 16:00:19 +02:00
Björn Winckler bf9c575456 Merge pull request #18 from splhack/fix_im_underline 2011-08-28 01:03:14 -07:00
Bram Moolenaar a4f92ceca3 Added tag v7-3-287 for changeset 07bc2ccfe555 2011-08-27 15:10:04 +02:00
Bram Moolenaar 970f752598 updated for version 7.3.287
Problem:    Can't compile with MSVC and tiny options.
Solution:   Move variables and #ifdefs. (Sergey Khorev)
2011-08-27 15:10:04 +02:00
Björn Winckler 08147f3210 Merge pull request #19 from budrick/master
Handle spaces in output directories
2011-08-26 10:58:19 -07:00
Bram Moolenaar 63eb54becf Added tag v7-3-286 for changeset 3f822e54765c 2011-08-26 16:13:00 +02:00
Bram Moolenaar 716195299b updated for version 7.3.286
Problem:    Crash when using "zd" on a large number of folds. (Sam King)
Solution:   Recompute pointer after reallocating array.  Move fewer entries
	    when making room.
2011-08-26 16:13:00 +02:00
Matt Cegielka eadead4e05 Handle spaces in output directories 2011-08-24 11:29:43 +01:00
Bram Moolenaar dae8dd82a1 Added tag v7-3-285 for changeset 6018c815e120 2011-08-19 22:29:02 +02:00
Bram Moolenaar 36083d9981 updated for version 7.3.285
Problem:    Mapping <Char-123> no longer works.
Solution:   Properly check for "char-".  Add a test for it.
2011-08-19 22:29:02 +02:00
Bram Moolenaar 24c79f8574 Added tag v7-3-284 for changeset 27d43855b723 2011-08-17 20:33:23 +02:00
Bram Moolenaar a73d723be8 updated for version 7.3.284
Problem:    The str2special() function doesn't handle multi-byte characters
	    properly.
Solution:   Recognize multi-byte characters. (partly by Vladimir Vichniakov)
2011-08-17 20:33:22 +02:00
Bram Moolenaar bc4b1d2485 Added tag v7-3-283 for changeset 47b6d37b6012 2011-08-17 17:18:20 +02:00
Bram Moolenaar 9404aab7e5 updated for version 7.3.283
Problem:    An expression mapping with a multi-byte character containing a
	    0x80 byte gets messed up. (ZyX)
Solution:   Unescape the expression before evaluating it (Yukihiro Nakadaira)
2011-08-17 17:18:20 +02:00
Bram Moolenaar f226625aef Added tag v7-3-282 for changeset 92167bb91c95 2011-08-17 16:25:48 +02:00
Bram Moolenaar f55f73cb30 updated for version 7.3.282
Problem:    When using input() and :echo in a loop the displayed text is
	    incorrect. (Benjamin Fritz)
Solution:   Only restore the cursor position when there is a command line.
	    (Ben Schmidt)
2011-08-17 16:25:48 +02:00
Bram Moolenaar f4bbe1b24d Added tag v7-3-281 for changeset 45ead8a0bede 2011-08-17 15:23:23 +02:00
Bram Moolenaar 252510d3df updated for version 7.3.281
Problem:    After using "expand('%:8')" the buffer name is changed.
Solution:   Make a copy of the file name before shortening it.
2011-08-17 15:23:23 +02:00
Bram Moolenaar 50a0c80dd7 Added tag v7-3-280 for changeset 58bba69b3371 2011-08-10 18:36:54 +02:00
Bram Moolenaar 9f368a11b2 updated for version 7.3.280
Problem:    ":lmake" does not update the quickfix window title.
Solution:   Update the title. (Lech Lorens)
2011-08-10 18:36:54 +02:00
Bram Moolenaar a4fc0ce9eb Added tag v7-3-279 for changeset 342b17608967 2011-08-10 17:44:45 +02:00
Bram Moolenaar ee5543b7de updated for version 7.3.279
Problem:    With GTK, when gvim is full-screen and a tab is opened and using a
	    specific monitor configuration the window is too big.
Solution:   Adjust the window size like on MS-Windows. (Yukihiro Nakadaira)
2011-08-10 17:44:45 +02:00
Bram Moolenaar aa016a5bfe Added tag v7-3-278 for changeset 6622f28b7e87 2011-08-10 17:25:52 +02:00
Bram Moolenaar 4cc118bb3d updated for version 7.3.278
Problem:    Passing the file name to open in VisVim doesn't work.
Solution:   Adjust the index and check for end of buffer. (Jiri Sedlak)
2011-08-10 17:25:51 +02:00
Bram Moolenaar b26f0fb957 Added tag v7-3-277 for changeset e5b17a5f6516 2011-08-10 17:08:03 +02:00
Bram Moolenaar 4f487cb1a0 updated for version 7.3.277
Problem:    MS-Windows: some characters do not show in dialogs.
Solution:   Use the wide methods when available. (Yanwei Jia)
2011-08-10 17:08:03 +02:00
Bram Moolenaar 9b6d1038ba Added tag v7-3-276 for changeset 37a54a85413e 2011-08-10 16:31:24 +02:00
Bram Moolenaar a44e66647e updated for version 7.3.276
Problem:    GvimExt sets $LANG in the wrong way.
Solution:   Save the environment and use it for gvim. (Yasuhiro Matsumoto)
2011-08-10 16:31:23 +02:00
Bram Moolenaar 2fc242e6cc Added tag v7-3-275 for changeset 125c7bf52271 2011-08-10 15:56:27 +02:00
Bram Moolenaar af81f033f9 updated for version 7.3.275
Problem:    MS-Windows: When using a black background some screen updates
	    cause the window to flicker.
Solution:   Add WS_CLIPCHILDREN to CreateWindow().  (René Aguirre)
2011-08-10 15:56:27 +02:00
Bram Moolenaar e1cd0dfcd0 Added tag v7-3-274 for changeset 1bb6776fa8c4 2011-08-10 14:32:39 +02:00
Bram Moolenaar 5ebe10cd56 updated for version 7.3.274
Problem:    With concealed characters tabs do not have the right size.
Solution:   Use VCOL_HLC instead of vcol. (Eiichi Sato)
2011-08-10 14:32:39 +02:00
Bram Moolenaar eae54ba84f Added tag v7-3-273 for changeset 7d4e5e31d8c1 2011-08-10 13:21:46 +02:00
Bram Moolenaar 025402ead3 updated for version 7.3.273
Problem:    A BOM in an error file is seen as text. (Aleksey Baibarin)
Solution:   Remove the BOM from the text before evaluating. (idea by Christian
	    Brabandt)
2011-08-10 13:21:46 +02:00
Bram Moolenaar 69761f00d2 Added tag v7-3-272 for changeset 02f5abca10ae 2011-08-10 12:38:08 +02:00
Bram Moolenaar b6f9d20ef4 updated for version 7.3.272
Problem:    ":put =list" does not add an empty line for a trailing empty
	    item.
Solution:   Add a trailing NL when turning a list into a string.
2011-08-10 12:38:08 +02:00
Bram Moolenaar 994b223919 Added tag v7-3-271 for changeset 32a52f06f33b 2011-08-10 12:19:04 +02:00
Bram Moolenaar 6fb1ea8d7f updated for version 7.3.271
Problem:    Code not following Vim coding style.
Solution:   Fix the style. (Elias Diem)
2011-08-10 12:19:04 +02:00
Bram Moolenaar c58a35b454 Added tag v7-3-270 for changeset b9182da84c7e 2011-08-10 12:11:01 +02:00
Bram Moolenaar 8b4e70c31d updated for version 7.3.270
Problem:    Illegal memory access.
Solution:   Swap conditions. (Dominique Pelle)
2011-08-10 12:11:01 +02:00
Kazuki Sakamoto 674896651e Fix to draw the underline for inline IM inputs
imdisable should not affect drawing the underline for inline IM inputs.
2011-08-06 06:15:39 +09:00
Bram Moolenaar 57747fd2bf Added tag v7-3-269 for changeset 7f4f5ca70dbd 2011-08-04 22:59:28 +02:00
Bram Moolenaar 1e1f876bc1 updated for version 7.3.269
Problem:    'shellcmdflag' only works with one flag.
Solution:   Split into multiple arguments. (Gary Johnson)
2011-08-04 22:59:28 +02:00
Bram Moolenaar e1fae7284e Added tag v7-3-268 for changeset ee17ee712512 2011-08-04 19:36:52 +02:00
Bram Moolenaar b35ffe84c6 updated for version 7.3.268
Problem:    Vim freezes when executing an external command with zsh.
Solution:   Use O_NOCTTY both in the master and slave. (Bjorn Winckler)
2011-08-04 19:36:52 +02:00
Bram Moolenaar c2d6883594 Added tag v7-3-267 for changeset ad404f2a4bfa 2011-08-04 19:34:59 +02:00
Bram Moolenaar a810a2915f updated for version 7.3.267
Problem:    Ruby on Mac OS X 10.7 may crash.
Solution:   Avoid alloc(0). (Bjorn Winckler)
2011-08-04 19:34:59 +02:00
Bjorn Winckler 490a242c79 Hide tabline separator in full-screen 2011-07-30 15:54:26 +02:00
Bjorn Winckler 88fc234df7 Ensure window stays maximized in full-screen
For example, if the tabline or a scrollbar is hidden then the window
will resize so that it stays maximized (in full-screen).  (A side-effect
is that ":set co=.." does nothing in full-screen if 'fuopt' includes
"maxhorz".)
2011-07-28 17:58:26 +02:00
Bjorn Winckler 95b3957d73 Avoid compilation warning on OS X 10.4 - 10.6 2011-07-27 22:19:22 +02:00
Björn Winckler 31d7d95535 Merge pull request #17 from seanfarley/master
Fix capitalization typo in Xcode project
2011-07-27 12:50:06 -07:00
Sean Farley b68b47e81f Fixed typo in the project file when MMFullscreenWindow was renamed to MMFullScreenWindow 2011-07-27 14:39:55 -05:00
Bjorn Winckler af13572c16 Snapshot 61 2011-07-27 20:01:59 +02:00
Bjorn Winckler 62511ccb37 Merge branch 'lion' 2011-07-27 19:33:33 +02:00
Bjorn Winckler 9007fe7ea4 Rename MMFullscreenWindow -> MMFullScreenWindow 2011-07-27 18:58:26 +02:00
Bjorn Winckler 1435c84507 Use "full-screen" and [Ff]ullScreen consistently 2011-07-27 18:55:20 +02:00
Bjorn Winckler 8d255ed95a Avoid window animation on custom full-screen exit
This only applies when running Mac OS X 10.7+.
2011-07-27 18:31:25 +02:00
Bram Moolenaar ff09e61694 Added tag v7-3-266 for changeset 25be7c9dda54 2011-07-27 18:25:44 +02:00
Bram Moolenaar f33d8610ca updated for version 7.3.266
Problem:    In Gvim with iBus typing space in Insert mode doesn't work.
Solution:   Clear xim_expected_char after checking it.
2011-07-27 18:25:44 +02:00
Bjorn Winckler 84bd7acdcb Final fix for open new window in full-screen
The original fix for opening a new window while in full-screen was
flawed.  This commit takes a new approach and corrects problems related
to opening a new window while MacVim was in full-screen as well as
problems with using "mvim" from a full-screen Terminal window.
2011-07-27 18:18:29 +02:00
Bram Moolenaar d7868fe396 Added tag v7-3-265 for changeset eff686fb8de6 2011-07-27 17:58:46 +02:00
Bram Moolenaar 4fbfd3b72d updated for version 7.3.265
Problem:    When storing a pattern in search history there is no proper check
	    for the separator character.
Solution:   Pass the separator character to in_history(). (Muraoka Taro)
2011-07-27 17:58:46 +02:00
Bram Moolenaar e3c8fb2cc5 Added tag v7-3-264 for changeset aa40bddeea9a 2011-07-27 17:31:47 +02:00
Bram Moolenaar 67755f963f updated for version 7.3.264
Problem:    When the current directory name contains wildcard characters, such
	    as "foo[with]bar", the tags file can't be found.  (Jeremy
	    Erickson)
Solution:   When searching for matching files also match without expanding
	    wildcards.  This is a bit of a hack.
2011-07-27 17:31:47 +02:00
Bjorn Winckler 871d6fb68d Fix window restore on enter full-screen failure 2011-07-27 16:59:02 +02:00
Bram Moolenaar 2dcdd2a153 Added tag v7-3-263 for changeset a56259157c93 2011-07-27 14:15:46 +02:00
Bram Moolenaar 2999bcc962 updated for version 7.3.263
Problem:    Perl and Tcl have a few code style problems.
Solution:   Clean it up.  (Elias Diem)
2011-07-27 14:15:46 +02:00
Bram Moolenaar bb18281bd3 Added tag v7-3-262 for changeset 847733973bfd 2011-07-27 14:09:09 +02:00
Bram Moolenaar a0aba21f7a updated for version 7.3.262
Problem:    Photon code style doesn't match Vim style.
Solution:   Clean up some of it.  (Elias Diem)
2011-07-27 14:09:09 +02:00
Bjorn Winckler 8b7a78a4ca Addendum to fix for open window in full-screen
Don't switch window to full-screen after presenting it if for some
reason the application is no longer in full-screen.  Seems to happen
sometimes when starting MacVim from a full-screen Terminal window.
2011-07-27 13:59:58 +02:00
Bram Moolenaar ef6d40a9c4 Added tag v7-3-261 for changeset 410d42e3d4da 2011-07-27 13:59:21 +02:00
Bram Moolenaar dc9a599bb4 updated for version 7.3.261
Problem:    G++ error message errornously recognized as error.
Solution:   Ignore "In file included from" line also when it ends in a colon.
	    (Fernando Castillo)
2011-07-27 13:59:21 +02:00
Bjorn Winckler 98346d00d1 Add user default for native/custom full screen
The boolean user default MMNativeFullScreen can be used to control
whether to use native or custom full-screen.  Set to 0 for custom, set
to 1 for native full-screen, for example

    $ defaults write org.vim.MacVim MMNativeFullScreen 0

The default is to use native full-screen when available.  This user
default does nothing on pre-Lion Mac OS X.

Also conditionally call Lion APIs so that it is possible to compile with
10.7 SDK but still support 10.6 (nb. 10.5 and earlier SDKs are not
supported as of Xcode 4).  (Suggestion and initial patch by @splhack.)
2011-07-27 13:42:46 +02:00
Bjorn Winckler 7f8ed177e5 Handle screen parameter changes in full screen 2011-07-26 19:56:12 +02:00
Bjorn Winckler d01ee9a02b Use correct presentation option API 2011-07-26 19:53:54 +02:00
Bjorn Winckler 4fbdea5683 Fix for opening new window while in full screen 2011-07-26 16:42:44 +02:00
Bjorn Winckler bcfd3686d3 Maximize both directions in full screen by default
The default for 'fuopt' is now "maxhorz,maxvert".  Update help to
reflect this and add note that the background option of 'fuopt' is not
supported when using Mac OS X native full screen mode.
2011-07-26 14:51:50 +02:00
Bjorn Winckler 705cce16cb Support "set fu" in gvimrc for Lion full screen 2011-07-26 14:43:34 +02:00
Bjorn Winckler ec80934916 Map delete key to delete visual selection
Also update the help.  The delete key used to be hard coded in the
source but now it is mapped in MacVim's gvimrc file instead.
2011-07-26 13:10:15 +02:00
Bjorn Winckler 9dabefa342 Change toolbar style in full screen 2011-07-25 23:21:44 +02:00
Bjorn Winckler 19d9e88653 Fix visibility of toolbar in full screen
The toolbar will pop up when the mouse is moved to the top of the screen
in full screen mode if and only if it is visible outside of full screen
mode.

Bug: if the toolbar is toggled in full screen mode then sometimes it is
no longer possible to enable it after exiting full screen.
2011-07-25 23:05:07 +02:00
Bjorn Winckler f295c0db32 Keep full screen window centered, change animation
Keep the window centered in full screen when it changes size.  At the
moment the Lion full screen background is shown around the window,
meaning that the "background" option of 'fuopt' is ignored.

The animation when entering full screen is now a fade out of the
decorated window, followed by a fade in of the full screen window.  Any
attempts at making an animation of the window frame failed because of
the way content is drawn (by pushing drawing updates).  For this reason
I settled on a fade animation which is not exactly pretty, but at least
it is as objectionable as the default animation.

A side effect of implementing a custom animation is that the correct
window now gets focus when closing a full screen window.
2011-07-25 22:59:50 +02:00
Bjorn Winckler b8e2540fef Set proper animation behavior for window
This causes a window to animate when it opens just like windows in other
Lion apps do.
2011-07-24 21:35:29 +02:00
Bjorn Winckler 6f05829f7e Switch spaces when closing window in full screen
A remaining problem is that if there is another window open then it does
not get focus when the full screen window closes.
2011-07-24 21:33:47 +02:00
Bjorn Winckler 9e6a7b76b5 Clicking full screen button updates 'fu' option
This fixes a bug where the 'fu' option would not be updated when clicking
the full screen button in the top right corner of a window.
2011-07-24 18:40:16 +02:00
Bjorn Winckler aa86531f82 Snapshot 60 2011-07-22 20:17:04 +02:00
Bjorn Winckler e0f133cb14 Merge branch 'vim' 2011-07-22 19:51:20 +02:00
Bjorn Winckler 56390fac62 Fix for zsh causing freezes on Lion
Make sure tty is opened using the same flags as when opening the pty.
In particular, the O_NOCTTY was missing from the tty open call.  This
caused waitpid() to always return 0 and Vim would get stuck in an
endless loop waiting for the child to exit.
2011-07-22 19:46:58 +02:00
Bjorn Winckler c35d6d1d3c Addendum to emergency fix
Ensure vim_message() outputs an empty message when the Ruby string has
length 0.  Failing to do this will cause the message area not to clear
when it should.
2011-07-22 19:46:49 +02:00
Bjorn Winckler 27086e3b64 Emergency fix for Ruby problems
With optimizations enabled "alloca(len)" generates code which depends on
"len > 0".  If "len == 0" then the stack pointer becomes botched.  This
fix simply avoids a call to "alloca(len)" in the latter case.  The root
of this problem may be deeper than this, hence I am calling this an
"emergency fix" for now but at least it fixes the crashes in the Ruby
interface that appear when compiling on Mac OS X 10.7.
2011-07-22 19:46:36 +02:00
Bjorn Winckler df741b5f4e Fix for zsh causing freezes on Lion
Make sure tty is opened using the same flags as when opening the pty.
In particular, the O_NOCTTY was missing from the tty open call.  This
caused waitpid() to always return 0 and Vim would get stuck in an
endless loop waiting for the child to exit.
2011-07-22 19:26:13 +02:00
Bjorn Winckler 79ba4bcdc0 Addendum to emergency fix
Ensure vim_message() outputs an empty message when the Ruby string has
length 0.  Failing to do this will cause the message area not to clear
when it should.
2011-07-21 22:14:24 +02:00
Bjorn Winckler 6bd19ecf62 Emergency fix for Ruby problems
With optimizations enabled "alloca(len)" generates code which depends on
"len > 0".  If "len == 0" then the stack pointer becomes botched.  This
fix simply avoids a call to "alloca(len)" in the latter case.  The root
of this problem may be deeper than this, hence I am calling this an
"emergency fix" for now but at least it fixes the crashes in the Ruby
interface that appear when compiling on Mac OS X 10.7.
2011-07-21 21:57:33 +02:00
Bjorn Winckler df0c4d770c Fix compilation warnings in PSMTabBarControl
This also disables icon drawing code in tabs.  The reason being that the
code is unused, caused warnings and looked generally dangerous.
2011-07-21 15:00:59 +02:00
Bjorn Winckler 672bf1f0fc Fix open/save panel related compilation warnings 2011-07-21 14:36:23 +02:00
Bjorn Winckler 1c1b721b93 Update .gitignore 2011-07-21 12:34:40 +02:00
Bjorn Winckler 37741a0cb5 Use correct availability macros 2011-07-21 12:28:23 +02:00
Bram Moolenaar e967a23863 Added tag v7-3-260 for changeset cb4682b95909 2011-07-20 18:29:39 +02:00
Bram Moolenaar 851cd145ab updated for version 7.3.260
Problem:    CursorHold triggers on an incomplete mapping. (Will Gray)
Solution:   Don't trigger CursorHold when there is typeahead.
2011-07-20 18:29:39 +02:00
Bram Moolenaar 12011cfc3e Added tag v7-3-259 for changeset 59130cd78dfc 2011-07-20 17:58:20 +02:00
Bram Moolenaar 073aa81247 updated for version 7.3.259
Problem:    Equivalence classes only work for latin characters.
Solution:   Add the Unicode equivalence characters. (Dominique Pelle)
2011-07-20 17:58:20 +02:00
Bram Moolenaar 3f7b3209d8 Added tag v7-3-258 for changeset bdc3335bd72e 2011-07-20 17:27:25 +02:00
Bram Moolenaar d293bc15ca updated for version 7.3.258
Problem:    MS-Windows: The edit with existing vim context menu entries can be
	    unwanted.
Solution:   Let a registry entry disable them. (Jerome Vuarand)
2011-07-20 17:27:25 +02:00
Bram Moolenaar 136af5316e Added tag v7-3-257 for changeset 1fad9c73d77a 2011-07-20 16:37:24 +02:00
Bram Moolenaar e01174b1f3 updated for version 7.3.257
Problem:    Not all completions are available to user commands.
Solution:   Add "color", "compiler", "file_in_path" and "locale". (Dominique
	    Pelle)
2011-07-20 16:37:24 +02:00
Bram Moolenaar 103ac57ae2 Added tag v7-3-256 for changeset c296c225736e 2011-07-20 15:09:44 +02:00
Bram Moolenaar ac79fd3bee updated for version 7.3.256
Problem:    Javascript indenting not sufficiently tested.
Solution:   Add more tests. (Luc Deschenaux)  Mark the lines that are indented
	    wrong.
2011-07-20 15:09:43 +02:00
Bram Moolenaar fc6320cf98 Added tag v7-3-255 for changeset aa998de9f959 2011-07-20 15:04:59 +02:00
Bram Moolenaar 31ed9f1341 updated for version 7.3.255
Problem:    When editing a file such as "File[2010-08-15].vim" an E16 error is
	    given. (Manuel Stol)
Solution:   Don't give an error for failing to compile the regexp.
2011-07-20 15:04:58 +02:00
Bjorn Winckler 88b7b921be Use GCC instead of platform default
This is necessary since the Vim executable is built using GCC.  Using
LLVM for the frontend and GCC for the backend caused runtime errors in
distributed object calls.
2011-07-20 15:04:43 +02:00
Bjorn Winckler 35c355a085 Disable automatic relaunching on OS X 10.7 2011-07-20 15:04:43 +02:00
Bjorn Winckler 47e83bcd2e Use native Lion full screen functionality
On Lion use the full screen functionality built into the OS.  Also
change the shortcut to toggle full screen to Cmd-Ctrl-f.
2011-07-20 15:04:42 +02:00
Bram Moolenaar 1e4ca096eb Updated runtime files.
Add missing test82 files.
2011-07-18 19:40:27 +02:00
Bjorn Winckler 301fd4c3ac Merge branch 'vim'
Conflicts:
	src/auto/configure
2011-07-17 21:12:55 +02:00
Bjorn Winckler b5fae0ff3f Fix compiler warning 2011-07-16 15:48:33 +02:00
Bjorn Winckler d99c9c1101 Fix bug in swipe code 2011-07-16 15:46:38 +02:00
Bram Moolenaar 155ee7b0ca Added tag v7-3-254 for changeset 1eb805225de7 2011-07-15 21:24:12 +02:00
Bram Moolenaar c3d99f427d updated for version 7.3.254
Problem:    The coladd field is not reset when setting the line number for a
	    ":call" command.
Solution:   Reset it.
2011-07-15 21:24:11 +02:00
Bram Moolenaar cee4357a5b Added tag v7-3-253 for changeset c21429d7768c 2011-07-15 21:16:59 +02:00
Bram Moolenaar fa6185ce52 updated for version 7.3.253
Problem:    "echo 'abc' > ''" returns 0 or 1, depending on 'ignorecase'.
	    Checks in mb_strnicmp() for illegal and truncated bytes are
	    wrong.  Should not assume that byte length is equal before case
	    folding.
Solution:   Add utf_safe_read_char_adv() and utf_strnicmp(). Add a test for
	    this. (Ivan Krasilnikov)
2011-07-15 21:16:59 +02:00
Bram Moolenaar c9cf2496c7 Added tag v7-3-252 for changeset 0b4289bcf836 2011-07-15 17:56:16 +02:00
Bram Moolenaar 803d8bdfb4 updated for version 7.3.252
Problem:    Tests fail. (David Northfield)
Solution:   Add missing update for .ok file.
2011-07-15 17:56:16 +02:00
Bram Moolenaar 4616dfcd3a Added tag v7-3-251 for changeset fe6ad3fd8532 2011-07-15 17:51:34 +02:00
Bram Moolenaar 37573a22d4 updated for version 7.3.251
Problem:    "gH<Del>" deletes the current line, except when it's the last
	    line.
Solution:   Set the "include" flag to indicate the last line is to be deleted.
2011-07-15 17:51:34 +02:00
Bram Moolenaar 44d2f391c9 Added tag v7-3-250 for changeset f909f4f0f38c 2011-07-15 15:54:44 +02:00
Bram Moolenaar 187319ac73 updated for version 7.3.250
Problem:    Python: Errors in Unicode characters not handled nicely.
Solution:   Add the surrogateescape error handler. (lilydjwg)
2011-07-15 15:54:44 +02:00
Bram Moolenaar bea434d7ad Added tag v7-3-249 for changeset 9f71f5a526af 2011-07-15 14:12:31 +02:00
Bram Moolenaar ddc01469a8 updated for version 7.3.249
Problem:    Wrong indenting for array initializer.
Solution:   Detect '}' in a better way. (Lech Lorens)
2011-07-15 14:12:30 +02:00
Bram Moolenaar 1f1e41911e Added tag v7-3-248 for changeset 57a7998e0fa8 2011-07-15 13:52:04 +02:00
Bram Moolenaar 7c4547bf99 updated for version 7.3.248
Problem:    PC Install instructions missing install instructions.
Solution:   Step-by-step explanation. (Michael Soyka)
2011-07-15 13:52:04 +02:00
Bram Moolenaar 7322c3ba4b Added tag v7-3-247 for changeset 7fe2c092913e 2011-07-15 13:33:21 +02:00
Bram Moolenaar 9d86f0c543 updated for version 7.3.247
Problem:    Running tests changes the users viminfo file.  Test for patch
	    7.3.245 missing.
Solution:   Add "nviminfo" to the 'viminfo' option.  Include the test.
2011-07-15 13:33:21 +02:00
Bram Moolenaar be9bf38b00 Added tag v7-3-246 for changeset 3f1a4ed36d1b 2011-07-15 13:21:30 +02:00
Bram Moolenaar 78f1705c39 updated for version 7.3.246
Problem:    Repeating "f4" in "4444" skips one 4.
Solution:   Check the t_cmd flag. (Christian Brabandt)
2011-07-15 13:21:30 +02:00
Bram Moolenaar f752a1288f Added tag v7-3-245 for changeset 52512eddb876 2011-07-15 13:09:51 +02:00
Bram Moolenaar 5aa313472e updated for version 7.3.245
Problem:    Python 3.2 libraries not correctly detected.
Solution:   Add the suffix to the library name. (Niclas Zeising)
2011-07-15 13:09:51 +02:00
Bram Moolenaar ff3e697c62 Added tag v7-3-244 for changeset be6b65096362 2011-07-07 17:43:42 +02:00
Bram Moolenaar 9c42afa550 updated for version 7.3.244
Problem:    MS-Windows: Build problem with old compiler. (John Beckett)
Solution:   Only use HandleToLong() when available. (Mike Williams)
2011-07-07 17:43:41 +02:00
Bram Moolenaar cf1628689a Added tag v7-3-243 for changeset 512ddd87f1a8 2011-07-07 17:36:57 +02:00
Bram Moolenaar b70aad41ed updated for version 7.3.243
Problem:    Illegal memory access in readline().
Solution:   Swap the conditions. (Dominique Pelle)
2011-07-07 17:36:56 +02:00
Bram Moolenaar 8dd190f611 Added tag v7-3-242 for changeset 3d96ddbeb3b0 2011-07-07 17:15:33 +02:00
Bram Moolenaar b20d2575d0 updated for version 7.3.242
Problem:    Illegal memory access in after_pathsep().
Solution:   Check that the pointer is not at the start of the file name.
	    (Dominique Pelle)
2011-07-07 17:15:33 +02:00
Bram Moolenaar 195add0620 Added tag v7-3-241 for changeset 0a650db02653 2011-07-07 16:44:38 +02:00
Bram Moolenaar fd92d3e268 updated for version 7.3.241
Problem:    Using CTRL-R CTRL-W on the command line may insert only part of
	    the word.
Solution:   Use the cursor position instead of assuming it is at the end of
	    the command. (Tyru)
2011-07-07 16:44:37 +02:00
Bram Moolenaar a9c96dd4b4 Added tag v7-3-240 for changeset bf283e37792b 2011-07-07 16:20:52 +02:00
Bram Moolenaar 09fcb03138 updated for version 7.3.240
Problem:    External commands can't use pipes on MS-Windows.
Solution:   Implement pipes and use them when 'shelltemp' isn't set. (Vincent
	    Berthoux)
2011-07-07 16:20:52 +02:00
Bram Moolenaar dab1828e3d Added tag v7-3-239 for changeset 0bef86c5c985 2011-07-07 15:08:58 +02:00
Bram Moolenaar a732285db7 updated for version 7.3.239
Problem:    Python corrects the cursor column without taking 'virtualedit'
	    into account. (lilydjwg)
Solution:   Call check_cursor_col_win().
2011-07-07 15:08:58 +02:00
Bram Moolenaar f562b94b3f Added tag v7-3-238 for changeset f2c108f44f41 2011-07-07 15:04:52 +02:00
Bram Moolenaar 64379f252a updated for version 7.3.238
Problem:    Compiler warning for conversion.
Solution:   Add type cast. (Mike Williams)
2011-07-07 15:04:52 +02:00
155 changed files with 5731 additions and 2691 deletions
+4
View File
@@ -3,6 +3,8 @@
src/MacVim/MacVim.xcodeproj/*.mode1
src/MacVim/MacVim.xcodeproj/*.mode1v3
src/MacVim/MacVim.xcodeproj/*.pbxuser
src/MacVim/MacVim.xcodeproj/project.xcworkspace
src/MacVim/MacVim.xcodeproj/xcuserdata
src/MacVim/icons/*.pyc
src/MacVim/icons/*.ttf
src/MacVim/icons/*.reg
@@ -16,6 +18,7 @@ src/MacVim/icons/makeicns/makeicns
src/MacVim/PSMTabBarControl/PSMTabBarControl.xcodeproj/*.mode1
src/MacVim/PSMTabBarControl/PSMTabBarControl.xcodeproj/*.mode1v3
src/MacVim/PSMTabBarControl/PSMTabBarControl.xcodeproj/*.pbxuser
src/MacVim/PSMTabBarControl/PSMTabBarControl.xcodeproj/xcuserdata
src/MacVim/PSMTabBarControl/build
src/MacVim/PSMTabBarControl/build
src/MacVim/build
@@ -35,3 +38,4 @@ src/po/*.mo
src/tags
src/xxd/xxd
src/xxd/xxd.dSYM
src/a.out.dSYM
+78
View File
@@ -1572,3 +1572,81 @@ b67d3a44262a97e7b3ae212fcffb36926b5f53f4 v7-3-232
441d364773dc53264b5f26042f8fc6f8b77c8044 v7-3-235
c1733ef5b6e87dde521d0d85a1e5e62259854ac1 v7-3-236
e3bb93df6c34da672244bce5695c1426da139614 v7-3-237
f2c108f44f415c7cfe92862e791a01cc542ac378 v7-3-238
0bef86c5c985218a9448fa16d935b913e67af8d5 v7-3-239
bf283e37792b4b557a2b9081e4fdb0e10acb9655 v7-3-240
0a650db0265381b540df8ca6bd716c4b2d47dfc9 v7-3-241
3d96ddbeb3b0003de29b736f63b76675909f133c v7-3-242
512ddd87f1a817749c8362bd043682a7bbd87014 v7-3-243
be6b6509636242cd7e6fab9a4b8772e97fc9a0db v7-3-244
52512eddb876f64399e98d12643233a87c9f2823 v7-3-245
3f1a4ed36d1b520a1ad5aa6cbf50d68bc8b9c7a5 v7-3-246
7fe2c092913e84e6717782da1f1a220069eebbe7 v7-3-247
57a7998e0fa8854a7a8c3946df1d4c9b1ee220e5 v7-3-248
9f71f5a526aff4f1e0eefe1068d9534aee427afa v7-3-249
f909f4f0f38c71594266b3595d31ce04d4ebe3ec v7-3-250
fe6ad3fd85322b394824a5c495a78061a747b074 v7-3-251
0b4289bcf8364854dd5f94c42d0252504103e5b9 v7-3-252
c21429d7768cd4b834a086dd47881d01bca74e8c v7-3-253
1eb805225de7750c03af7b0f7ac2f5dd18d032be v7-3-254
aa998de9f9592426c17396b60c5db9170a234024 v7-3-255
c296c225736e4489706c62c95752a0c4788be1d3 v7-3-256
1fad9c73d77a0030586704cccab1b1a7aba8b58b v7-3-257
bdc3335bd72eea207b28fcf8af90a73c855c8847 v7-3-258
59130cd78dfc73bd04f22d201b8f7c0772d98e79 v7-3-259
cb4682b959098e486977eb4b5969c9eb07d2798e v7-3-260
410d42e3d4da09284394456186143d595e9b2efc v7-3-261
847733973bfdd716bfafc364a4102e76f88e7fe8 v7-3-262
a56259157c935b4e78e9f5f4dfb1436e3461eefb v7-3-263
aa40bddeea9a44c6c6b4ffa32c1ef373df437a16 v7-3-264
eff686fb8de66a26367f5e6430d34729f1a0e336 v7-3-265
25be7c9dda549e4cfa1eb57937dc2b38b3d1e997 v7-3-266
ad404f2a4bfa5374e97f29335f41b7ef34cd6bfa v7-3-267
ee17ee712512451a54046d6bcd3ddb9f70cb5cdf v7-3-268
7f4f5ca70dbde4e31c2de494b982bfb9bd71ed75 v7-3-269
b9182da84c7eeda221e5219ef4361cca201b3b41 v7-3-270
32a52f06f33b9e2d4817330099b410c1fcf64db2 v7-3-271
02f5abca10aee570d5a9cf00928ffaa663daba66 v7-3-272
7d4e5e31d8c10c767cdf774a2b13aedd2f95f096 v7-3-273
1bb6776fa8c445e0b3f9dd2ed14fdf2a56f5873e v7-3-274
125c7bf52271461dfbf46cc33317eadc67aaf742 v7-3-275
37a54a85413eae68932233e64a0ab88c99c9d811 v7-3-276
e5b17a5f651696ad4c523a21822692115d371250 v7-3-277
6622f28b7e87a93de6f1520945d1c5d2a1fc0dab v7-3-278
342b176089678e86cde3e1afac4aaaa1e5153f99 v7-3-279
58bba69b3371d9ff02b27fe24f044e229c8aa99a v7-3-280
45ead8a0bedeade57c320d72e9f710a703e61cf0 v7-3-281
92167bb91c95410a0550ff8c94370307bb7d9d80 v7-3-282
47b6d37b60122f45eb147106b8da1322c1cdbc60 v7-3-283
27d43855b72312500e6fc2122e167a579a1f35f2 v7-3-284
6018c815e1205e7db9328fe6ed91b26b514465f3 v7-3-285
3f822e54765c54a1112a953e3c37bb60185fd51c v7-3-286
07bc2ccfe5559035e785f22851365b3a31dec67e v7-3-287
e4f3fa1a474e677dce486ea07ee31270f92b2b4a v7-3-288
44ffd0a8abcdba441216514cb711649eb1169876 v7-3-289
df33dba4e553f8fa27ba467042f16315c613a00d v7-3-290
e8ee4b4ebf41abb199ea9a9e9cc38f9b0c2f7192 v7-3-291
b6af1c5dd22f08db2b9e52ae763f193ba82965ad v7-3-292
6cd0d6413a2e03687aca8138b2843f1f2aac5b84 v7-3-293
dbd73fe939cf772a8b07c19230e5ee60aa0cfcc7 v7-3-294
0d8494c051131b6470fe8af67646e235bc63fcf7 v7-3-295
c19c15a9e9bf2914b25748c0544936e84a5c77c0 v7-3-296
22550986c713ce5f37f069f0c8f99a54dc4a421b v7-3-297
43b1d031e3028248abcbd5099841d3aafda7f68d v7-3-298
eb4972982bfea006ead5b461f319744d5ecd58f5 v7-3-299
2665b456ee59652c7b590dff0fa522ce337e0f16 v7-3-300
4a70971530899e32058207cae683a69e7b8f85dc v7-3-301
61b2f26623104f75850b1568bf61663597fe7fb0 v7-3-302
d832d642f520d426f111b35102450617922547d3 v7-3-303
b3a523ced6bd1173e4c17611559c173094830d43 v7-3-304
0e06c025f66ffdfea20c8b73a995d23448b8dbfb v7-3-305
0787bb5f387b79842d5c9353ae3541a992d1b9f1 v7-3-306
880b7dd69331d1fefaf2d8735b118b39d546280c v7-3-307
61c5e1527bd857e724f8396c89d0687126390675 v7-3-308
6eae1b42c6684f3fcdb4d6cdbfb7dc1942d9b364 v7-3-309
51ce22ba89d11505e18aa585fbd7dcbb22097f9a v7-3-310
2cbde6bcc6238f41506f87bf31ff7d90f632345a v7-3-311
0ed06069aaf32dbb2aa3827b23280b0028954ce7 v7-3-312
dc60200a16b21c3e4157708bb825ea61b9e5bdc1 v7-3-313
6ab1b45cc95ed56105b2130dc9938bb8344ff903 v7-3-314
3ecf9e91d88acdb5eaaf93cc15a18914b60e0eb3 v7-3-315
+5 -1
View File
@@ -1,4 +1,4 @@
*autocmd.txt* For Vim version 7.3. Last change: 2011 May 19
*autocmd.txt* For Vim version 7.3. Last change: 2011 Aug 29
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -448,6 +448,9 @@ BufWriteCmd Before writing the whole buffer to a file.
'modified' if successful, unless '+' is in
'cpo' and writing to another file |cpo-+|.
The buffer contents should not be changed.
When the command resets 'modified' the undo
information is adjusted to mark older undo
states as 'modified', like |:write| does.
|Cmd-event|
*BufWritePost*
BufWritePost After writing the whole buffer to a file
@@ -508,6 +511,7 @@ CursorMoved After the cursor was moved in Normal mode.
not expect or that is slow.
*CursorMovedI*
CursorMovedI After the cursor was moved in Insert mode.
Not triggered when the popup menu is visible.
Otherwise the same as CursorMoved.
*EncodingChanged*
EncodingChanged Fires off after the 'encoding' option has been
+5 -4
View File
@@ -1,4 +1,4 @@
*eval.txt* For Vim version 7.3. Last change: 2011 Jun 19
*eval.txt* For Vim version 7.3. Last change: 2011 Aug 29
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -39,7 +39,7 @@ done, the features in this document are not available. See |+eval| and
*E712*
There are six types of variables:
Number A 32 bit signed number. |expr-number| *Number*
Number A 32 or 64 bit signed number. |expr-number| *Number*
Examples: -123 0x10 0177
Float A floating point number. |floating-point-format| *Float*
@@ -2277,7 +2277,8 @@ char2nr({expr}) *char2nr()*
< The current 'encoding' is used. Example for "utf-8": >
char2nr("á") returns 225
char2nr("á"[0]) returns 195
< |nr2char()| does the opposite.
< A combining character is a separate character.
|nr2char()| does the opposite.
cindent({lnum}) *cindent()*
Get the amount of indent for line {lnum} according the C
@@ -5968,7 +5969,7 @@ virtcol({expr}) *virtcol()*
When 'virtualedit' is used {expr} can be [lnum, col, off], where
"off" is the offset in screen columns from the start of the
character. E.g., a position within a <Tab> or after the last
character.
character. When "off" is omitted zero is used.
When Virtual editing is active in the current mode, a position
beyond the end of the line can be returned. |'virtualedit'|
The accepted positions are:
+10 -1
View File
@@ -1,4 +1,4 @@
*gui.txt* For Vim version 7.3. Last change: 2010 Nov 03
*gui.txt* For Vim version 7.3. Last change: 2011 Jul 22
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -147,6 +147,15 @@ task bar with the 'guiheadroom' option.
If you are running the X Window System, you can get information about the
window Vim is running in with this command: >
:!xwininfo -id $WINDOWID
<
*gui-IME* *iBus*
Input methods for international characters in X that rely on the XIM
framework, most notably iBus, have been known to produce undesirable results
in gVim. These may include an inability to enter spaces, or long delays
between typing a character and it being recognized by the application.
One workaround that has been successful, for unknown reasons, is to prevent
gvim from forking into the background by starting it with the |-f| argument.
==============================================================================
2. Scrollbars *gui-scrollbars*
+4 -1
View File
@@ -1,4 +1,4 @@
*gui_w32.txt* For Vim version 7.3. Last change: 2010 Dec 19
*gui_w32.txt* For Vim version 7.3. Last change: 2011 Jul 23
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -137,6 +137,9 @@ options:
And if there already is a gvim running:
"Edit with existing gvim" -- edit the file with the running gvim
The "edit with existing Vim" entries can be disabled by adding an entry in the
registry under HKLM\Software\Vim\Gvim, named DisableEditWithExisting, and with
any value.
*install-registry*
You can add the "Edit with Vim" menu entry in an easy way by using the
"install.exe" program. It will add several registry entries for you.
+3 -1
View File
@@ -1,4 +1,4 @@
*gui_x11.txt* For Vim version 7.3. Last change: 2010 Jul 20
*gui_x11.txt* For Vim version 7.3. Last change: 2011 Sep 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -61,6 +61,8 @@ launches the gui but doesn't fork (see |mvim|). However, doing |:gui| in an
already running vim will never fork in MacVim.
"gvim --nofork" does the same as "gvim -f".
*E851* *E852*
When starting the GUI fails Vim will try to continue running in the terminal.
If you want the GUI to run in the foreground always, include the 'f'
flag in 'guioptions'. |-f|. MacVim does not support this flag in
+2 -2
View File
@@ -1,4 +1,4 @@
*if_pyth.txt* For Vim version 7.3. Last change: 2011 May 07
*if_pyth.txt* For Vim version 7.3. Last change: 2011 Aug 19
VIM REFERENCE MANUAL by Paul Moore
@@ -380,7 +380,7 @@ To work around such problems there are these options:
*has-python*
You can test what Python version is available with: >
if has('python')
echo 'there is Pyton 2.x'
echo 'there is Python 2.x'
elseif has('python3')
echo 'there is Python 3.x'
endif
+47 -8
View File
@@ -1,4 +1,4 @@
*indent.txt* For Vim version 7.3. Last change: 2011 May 31
*indent.txt* For Vim version 7.3. Last change: 2011 Sep 02
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -132,8 +132,8 @@ The 'cinoptions' option sets how Vim performs indentation. The value after
the option character can be one of these (N is any number):
N indent N spaces
-N indent N spaces to the left
Ns N times 'shiftwidth spaces
-Ns N times 'shiftwidth spaces to the left
Ns N times 'shiftwidth' spaces
-Ns N times 'shiftwidth' spaces to the left
In the list below,
"N" represents a number of your choice (the number can be negative). When
@@ -432,7 +432,7 @@ The examples below assume a 'shiftwidth' of 4.
c3 c3
) && c4; ) && c4;
<
*cino-2*
*cino-w*
wN When in unclosed parentheses and N is non-zero and either
using "(0" or "u0", respectively, or using "U0" and the unclosed
parentheses is the first non-white character in its line, line
@@ -486,9 +486,10 @@ The examples below assume a 'shiftwidth' of 4.
) )
<
*java-cinoptions* *java-indenting* *cino-j*
jN Indent java anonymous classes correctly. The value 'N' is
currently unused but must be non-zero (e.g. 'j1'). 'j1' will
indent for example the following code snippet correctly: >
jN Indent Java anonymous classes correctly. Also works well for
Javascript. The value 'N' is currently unused but must be
non-zero (e.g. 'j1'). 'j1' will indent for example the
following code snippet correctly: >
object.add(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
@@ -499,7 +500,8 @@ The examples below assume a 'shiftwidth' of 4.
*javascript-cinoptions* *javascript-indenting* *cino-J*
JN Indent JavaScript object declarations correctly by not confusing
them with labels. The value 'N' is currently unused but must be
non-zero (e.g. 'J1'). >
non-zero (e.g. 'J1'). If you enable this you probably also want
to set |cino-j|. >
var bar = {
foo: {
@@ -704,6 +706,43 @@ Indent for a continuation line: >
let g:pyindent_continue = '&sw * 2'
R *ft-r-indent*
Function arguments are aligned if they span for multiple lines. If you prefer
do not have the arguments of functions aligned, put in your |vimrc|:
>
let r_indent_align_args = 0
<
All lines beginning with a comment character, #, get the same indentation
level of the normal R code. Users of Emacs/ESS may be used to have lines
beginning with a single # indented in the 40th column, ## indented as R code,
and ### not indented. If you prefer that lines beginning with comment
characters are aligned as they are by Emacs/ESS, put in your |vimrc|:
>
let r_indent_ess_comments = 1
<
If you prefer that lines beginning with a single # are aligned at a column
different from the 40th one, you should set a new value to the variable
r_indent_comment_column, as in the example below:
>
let r_indent_comment_column = 30
<
Any code after a line that ends with "<-" is indented. Emacs/ESS does not
indent the code if it is a top level function. If you prefer that the
Vim-R-plugin behaves like Emacs/ESS in this regard, put in your |vimrc|:
>
let r_indent_ess_compatible = 1
<
Below is an example of indentation with and without this option enabled:
>
### r_indent_ess_compatible = 1 ### r_indent_ess_compatible = 0
foo <- foo <-
function(x) function(x)
{ {
paste(x) paste(x)
} }
<
SHELL *ft-sh-indent*
The amount of indent applied under various circumstances in a shell file can
+2 -2
View File
@@ -1,4 +1,4 @@
*index.txt* For Vim version 7.3. Last change: 2011 Jan 04
*index.txt* For Vim version 7.3. Last change: 2011 Aug 06
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1261,7 +1261,7 @@ tag command action ~
|:k| :k set a mark
|:keepalt| :keepa[lt] following command keeps the alternate file
|:keepmarks| :kee[pmarks] following command keeps marks where they are
|:keepjumps| :keepj[jumps] following command keeps jumplist and marks
|:keepjumps| :keepj[umps] following command keeps jumplist and marks
|:lNext| :lN[ext] go to previous entry in location list
|:lNfile| :lNf[ile] go to last entry in previous file
|:list| :l[ist] print lines
+20 -4
View File
@@ -1,4 +1,4 @@
*insert.txt* For Vim version 7.3. Last change: 2010 Nov 10
*insert.txt* For Vim version 7.3. Last change: 2011 Sep 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1020,6 +1020,21 @@ On the second invocation the arguments are:
The function must return a List with the matching words. These matches
usually include the "a:base" text. When there are no matches return an empty
List.
In order to return more information than the matching words, return a Dict
that contains the List. The Dict can have these items:
words The List of matching words (mandatory).
refresh A string to control re-invocation of the function
(optional).
The only value currently recognized is "always", the
effect is that the function is called whenever the
leading text is changed.
Other items are ignored.
For example, the function can contain this: >
let matches = ... list of words ...
return {'words': matches, 'refresh': 'always'}
<
*complete-items*
Each list item can either be a string or a Dictionary. When it is a string it
is used as the completion. When it is a Dictionary it can contain these
@@ -1040,9 +1055,10 @@ items:
empty when non-zero this match will be added even when it is
an empty string
All of these except 'icase' must be a string. If an item does not meet these
requirements then an error message is given and further items in the list are
not used. You can mix string and Dictionary items in the returned list.
All of these except 'icase', 'dup' and 'empty' must be a string. If an item
does not meet these requirements then an error message is given and further
items in the list are not used. You can mix string and Dictionary items in
the returned list.
The "menu" item is used in the popup menu and may be truncated, thus it should
be relatively short. The "info" item can be longer, it will be displayed in
+7 -2
View File
@@ -1,4 +1,4 @@
*map.txt* For Vim version 7.3. Last change: 2011 Jun 13
*map.txt* For Vim version 7.3. Last change: 2011 Aug 19
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -228,7 +228,7 @@ text before the cursor and start omni completion when some condition is met.
For abbreviations |v:char| is set to the character that was typed to trigger
the abbreviation. You can use this to decide how to expand the {lhs}. You
you should not either insert or change the v:char.
should not either insert or change the v:char.
Be very careful about side effects! The expression is evaluated while
obtaining characters, you may very well make the command dysfunctional.
@@ -544,6 +544,7 @@ construct can be used:
<Char-123> character 123
<Char-033> character 27
<Char-0x7f> character 127
<S-Char-114> character 114 ('r') shifted ('R')
This is useful to specify a (multi-byte) character in a 'keymap' file.
Upper and lowercase differences are ignored.
@@ -1211,17 +1212,21 @@ completion can be enabled:
-complete=augroup autocmd groups
-complete=buffer buffer names
-complete=color color schemes
-complete=command Ex command (and arguments)
-complete=compiler compilers
-complete=cscope |:cscope| suboptions
-complete=dir directory names
-complete=environment environment variable names
-complete=event autocommand events
-complete=expression Vim expression
-complete=file file and directory names
-complete=file_in_path file and directory names in |'path'|
-complete=filetype filetype names |'filetype'|
-complete=function function name
-complete=help help subjects
-complete=highlight highlight groups
-complete=locale locale names (as output of locale -a)
-complete=mapping mapping name
-complete=menu menus
-complete=option options
+3 -3
View File
@@ -1,4 +1,4 @@
*mbyte.txt* For Vim version 7.3. Last change: 2011 Feb 01
*mbyte.txt* For Vim version 7.3. Last change: 2011 Jul 18
VIM REFERENCE MANUAL by Bram Moolenaar et al.
@@ -1306,8 +1306,8 @@ character. However, search patterns may not match on an overlong sequence.
character.) An exception is NUL (zero) which is displayed as "<00>".
In the file and buffer the full range of Unicode characters can be used (31
bits). However, displaying only works for 16 bit characters, and only for the
characters present in the selected font.
bits). However, displaying only works for the characters present in the
selected font.
Useful commands:
- "ga" shows the decimal, hexadecimal and octal value of the character under
+1 -3
View File
@@ -1,4 +1,4 @@
*motion.txt* For Vim version 7.3. Last change: 2011 Jun 02
*motion.txt* For Vim version 7.3. Last change: 2011 Jul 19
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1017,8 +1017,6 @@ CTRL-O Go to [count] Older cursor position in jump list
<Tab> or *CTRL-I* *<Tab>*
CTRL-I Go to [count] newer cursor position in jump list
(not a motion command).
In a |quickfix-window| it takes you to the position of
the error under the cursor.
{not in Vi}
{not available without the |+jumplist| feature}
+20 -11
View File
@@ -1,4 +1,4 @@
*options.txt* For Vim version 7.3. Last change: 2011 Jun 12
*options.txt* For Vim version 7.3. Last change: 2011 Sep 09
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -3308,7 +3308,7 @@ A jump table for the options with a short description can be found at |Q_op|.
XXX: Think about how 'fullscreen' and 'transparency' should interact.
*'fuoptions'* *'fuopt'*
'fuoptions' 'fuopt' string (default "maxvert")
'fuoptions' 'fuopt' string (default "maxvert,maxhorz")
global
{not in Vi}
{only in MacVim GUI}
@@ -3328,6 +3328,7 @@ A jump table for the options with a short description can be found at |Q_op|.
number of columns, it is restored to the value it had before
entering fullscreen.
background:color
{not supported in Mac OS X native full screen}
When entering fullscreen, 'color' defines the color of the part
of the screen that is not occupied by the Vim control. If
'color' is an 8-digit hexadecimal number preceded by '#',
@@ -3339,15 +3340,15 @@ A jump table for the options with a short description can be found at |Q_op|.
scheme.
Examples:
Don't change size of Vim when entering fullscreen: >
Don't change size when entering fullscreen: >
:set fuoptions=
< Maximize Vim when entering fullscreen: >
:set fuoptions=maxvert,maxhorz
< Maximize Vim only vertically when entering fullscreen, and color the
< Only maximize vertically when entering fullscreen: >
:set fuoptions=maxvert
< Maximize only vertically when entering fullscreen, and color the
background dark blue: >
:set fuoptions=maxvert,background:#FF003042
< Don't change the size of Vim when entering fullscreen, and color the
background like the current text background: >
< Don't change size when entering fullscreen, and color the background
like the current text background: >
:set fuoptions=background:Normal
<
XXX: what if the font size is changed? you probably never want to
@@ -4975,6 +4976,10 @@ A jump table for the options with a short description can be found at |Q_op|.
written. A ":set nomodified" command also resets the original
values to the current values and the 'modified' option will be
reset.
This option is not set when a change is made to the buffer as the
result of a BufNewFile, BufRead/BufReadPost, BufWritePost,
FileAppendPost or VimLeave autocommand event. See |gzip-example| for
an explanation.
When 'buftype' is "nowrite" or "nofile" this option may be set, but
will be ignored.
@@ -6012,8 +6017,11 @@ A jump table for the options with a short description can be found at |Q_op|.
"bash.exe -c ls" or "command.com /c dir". For the MS-DOS-like
systems, the default is set according to the value of 'shell', to
reduce the need to set this option by the user. It's not used for
OS/2 (EMX figures this out itself). See |option-backslash| about
including spaces and backslashes. See |dos-shell|.
OS/2 (EMX figures this out itself).
On Unix it can have more than one flag. Each white space separated
part is passed as an argument to the shell command.
See |option-backslash| about including spaces and backslashes.
Also see |dos-shell| for MS-DOS and MS-Windows.
This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons.
@@ -6116,7 +6124,8 @@ A jump table for the options with a short description can be found at |Q_op|.
{not in Vi}
When on, use temp files for shell commands. When off use a pipe.
When using a pipe is not possible temp files are used anyway.
Currently a pipe is only supported on Unix. You can check it with: >
Currently a pipe is only supported on Unix and MS-Windows 2K and
later. You can check it with: >
:if has("filterpipe")
< The advantage of using a pipe is that nobody can read the temp file
and the 'shell' command does not need to support redirection.
+48 -50
View File
@@ -1,4 +1,4 @@
*os_vms.txt* For Vim version 7.3. Last change: 2010 Aug 16
*os_vms.txt* For Vim version 7.3. Last change: 2011 Aug 14
VIM REFERENCE MANUAL
@@ -38,9 +38,6 @@ You can download the Vim source code by ftp from the official Vim site:
Or use one of the mirrors:
ftp://ftp.vim.org/pub/vim/MIRRORS
You will need both the Unix and Extra archives to build vim.exe for VMS.
For using Vim's full power you will need the runtime files as well.
You can download precompiled executables from:
http://www.polarhome.com/vim/
ftp://ftp.polarhome.com/pub/vim/
@@ -75,7 +72,7 @@ See the file [.SRC]INSTALLVMS.TXT.
4. Problems *vms-problems*
The code has been tested under Open VMS 6.2 - 8.2 on Alpha, VAX and IA64
platforms with the DEC C compiler. It should work without bigger problems.
platforms with the DEC C compiler. It should work without big problems.
If your system does not have some include libraries you can tune up in
OS_VMS_CONF.H file.
@@ -88,11 +85,11 @@ Also GTK, XPM library paths should be configured in MAKE_VMS.MMS
Note: Under VAX it should work with the DEC C compiler without problems. The
VAX C compiler is not fully ANSI C compatible in pre-processor directives
semantics, therefore you have to use a converter program what will do the lion
semantics, therefore you have to use a converter program that will do the lion
part of the job. For detailed instructions read file INSTALLvms.txt
MMS_VIM.EXE is build together with VIM.EXE, but for XD.EXE you should
change to subdirectory and build it separately.
MMS_VIM.EXE is build together with VIM.EXE, but for XXD.EXE you should
change to a subdirectory and build it separately.
CTAGS is not part of the Vim source distribution anymore, however the OpenVMS
specific source might contain CTAGS source files as described above.
@@ -184,9 +181,9 @@ You may want to create .vimrc and .gvimrc files in your home directory
The easiest way is just rename example files. You may leave the menu file
(MENU.VIM) and files vimrc and gvimrc in the original $VIM directory. It will
be default setup for all users, and for users it is enough just to have their
own additions or resetting in their home directory in files .vimrc and .gvimrc.
It should work without problems.
be the default setup for all users, and for users it is enough to just have
their own additions or resetting in their home directory in files .vimrc and
.gvimrc. It should work without problems.
Note: Remember, system rc files (default for all users) don't have a leading
".". So, system rc files are: >
@@ -200,7 +197,7 @@ and user customized rc files are: >
sys$login:.vimrc
sys$login:.gvimrc
You can check that everything is on the right place with the :version command.
You can check that everything is at the right place with the :version command.
Example LOGIN.COM: >
@@ -209,15 +206,15 @@ Example LOGIN.COM: >
$ gv*im:== spawn/nowait/input=NLA0 mcr VIM:VIM.EXE -g -GEOMETRY 80x40
$ set disp/create/node=192.168.5.223/trans=tcpip
Note: This set-up should be enough, if you are working on standalone server or
clustered environment, but if you want to use Vim as internode editor in
Note: This set-up should be enough, if you are working on a standalone server or
clustered environment, but if you want to use Vim as an internode editor in
DECNET environment, it will satisfy as well.
You just have to define the "whole" path: >
$ define VIM "<server_name>[""user password""]::device:<path>"
$ vi*m :== "mcr VIM:VIM.EXE"
As for example: >
For example: >
$ define VIM "PLUTO::RF10:[UTIL.VIM]"
$ define VIM "PLUTO""ZAY mypass""::RF10:[UTIL.VIM]" ! if passwd required
@@ -300,12 +297,12 @@ For more information type $help set disp in VMS prompt.
4) If you are working on MS-Windows or some other non X/Window environment
you need to set up one X server and run Vim as in point 2.
For MS-Windows there are available free X servers as MIX , Omni X etc.,
For MS-Windows there are available free X servers as MIX, Omni X etc.,
as well as excellent commercial products as eXcursion or ReflectionX with
built-in DEC support.
Please note, that executables without GUI are slightly faster during startup
then with enabled GUI in character mode. Therefore, if you do not use GUI
than with enabled GUI in character mode. Therefore, if you do not use GUI
features, it is worth to choose non GUI executables.
==============================================================================
@@ -326,8 +323,8 @@ features, it is worth to choose non GUI executables.
8.12 diff-mode
8.13 Allow '$' in C keywords
8.14 VIMTUTOR for beginners
8.15 Slow start in console mode issue
8.16 Common VIM directory - different architectures
8.15 Slow start in console mode issue
8.16 Common VIM directory - different architectures
8.1 Backspace/delete
@@ -360,7 +357,7 @@ number, try these settings. >
:set nowritebackup " does not have any purpose on VMS. It's the
" default.
Recovery is working perfect as well from the default swap file.
Recovery is working perfectly as well from the default swap file.
Read more with :help swapfile
(Claude Marinier <ClaudeMarinier@xwavesolutions.com> Vim 5.5, Zoltan Arpadffy
@@ -386,7 +383,7 @@ Note: You may use <,> brackets as well (device:<path>file.ext;version) as
rf10:<user.zay.work>test.c;1
(David Elins <delins@foliage.com>, Jerome Lauret
<JLAURET@mail.chem.sunysb.edu> Vim 5.6 )
<JLAURET@mail.chem.sunysb.edu> Vim 5.6)
8.5 Remote host invocation
@@ -445,14 +442,14 @@ Terminal entry not found in termcap
builtin_dumb
defaulting to 'vt320'
---
The solution is to define default terminal name: >
The solution is to define the default terminal name: >
$ ! unknown terminal name. Let us use vt320 or ansi instead.
$ ! Note: it's case sensitive
$ define term "vt320"
Terminals from VT100 to VT320 (as V300, VT220, VT200 ) do not need any extra
keyboard mappings. They should work perfect as they are, including arrows,
Terminals from VT100 to VT320 (as V300, VT220, VT200) do not need any extra
keyboard mappings. They should work perfectly as they are, including arrows,
Ins, Del buttons etc., except Backspace in GUI mode. To solve it, add to
.gvimrc: >
@@ -465,8 +462,8 @@ your .vimrc file: >
set ttyfast " set fast terminal
Note: if you're using Vim on remote host or through very slow connection, it's
recommended to avoid fast terminal option with: >
Note: if you're using Vim on remote host or through a very slow connection, it's
recommended to avoid the fast terminal option with: >
set nottyfast " set terminal to slow mode
@@ -483,8 +480,8 @@ special commands to execute executables: >
OpenVMS users always have to be aware that the Vim command :! "just" drop them
to DCL prompt. This feature is possible to use without any problem with all
DCL commands, but if we want to execute some program as XXD, CTAGS, JTAGS etc.
we're running into trouble if we follow the Vim documentation (see: help
DCL commands, but if we want to execute some programs such as XXD, CTAGS, JTAGS,
etc. we're running into trouble if we follow the Vim documentation (see: help
xxd).
Solution: Execute with the MC command and add the full path to the executable.
@@ -534,7 +531,7 @@ Example: >
$define SYS$PRINT HP5ANSI
You can print out whole buffer or just the marked area.
You can print out the whole buffer or just the marked area.
More info under :help hardcopy
(Zoltan Arpadffy, Vim 6.0c)
@@ -561,16 +558,16 @@ will be confused after a window-resize.
From 6.0 diff functionality has been implemented, but OpenVMS does not use
GNU/Unix like diff therefore built in diff does not work.
There is a simple solution to solve this anomaly. Install a Unix like diff
and Vim will work perfect in diff mode too. You just have to redefine your
and Vim will work perfectly in diff mode too. You just have to redefine your
diff program as: >
define /nolog diff <GNU_PATH>diff.exe
Another, more sophisticated solution is described below (8.12 diff-mode)
There are some other programs as patch, make etc that may cause same problems.
At www.polarhome.com is possible to download an GNU package for Alpha and VAX
boxes that is meant to solve GNU problems on OpenVMS.
( Zoltan Arpadffy, Vim 6.1)
There are other programs such as patch, make etc that may cause the same
problems. At www.polarhome.com is possible to download an GNU package for
Alpha and VAX boxes that is meant to solve GNU problems on OpenVMS.
(Zoltan Arpadffy, Vim 6.1)
8.12 diff-mode
@@ -632,7 +629,7 @@ You can now compare files in 4 ways: >
3. VIM diff: $ VIMDIFF <FILE1> <FILE2>
4. GVIM diff: $ GVIMDIFF <FILE1> <FILE2>
( Coen Engelbarts, Vim 6.1)
(Coen Engelbarts, Vim 6.1)
8.13 Allow '$' in C keywords
@@ -653,35 +650,36 @@ Now word-based commands, e.g. the '*'-search-command and the CTRL-]
tag-lookup, work on the whole identifier. (Ctags on VMS also supports '$' in
C keywords since ctags version 5.1.)
( Coen Engelbarts, Vim 6.1)
(Coen Engelbarts, Vim 6.1)
8.14 VIMTUTOR for beginners
It exits VIMTUTOR.COM DCL script that can help Vim beginners to learn/make
first steps with Vim on OpenVMS. Depending of binary distribution you may
start it with: >
The VIMTUTOR.COM DCL script can help Vim beginners to learn/make their first
steps with Vim on OpenVMS. Depending of binary distribution you may start it
with: >
@vim:vimtutor
(Thomas.R.Wyant III, Vim 6.1)
8.14 Slow start in console mode issue
8.16 Slow start in console mode issue
As GUI/GTK Vim works equally well in console mode, many administrators
deploy those executables system wide.
Unfortunately, on a remote slow connections GUI/GTK executables behave rather
slow when user wants to run Vim just in the console mode - because of X environment detection timeout.
slow when user wants to run Vim just in the console mode - because of X
environment detection timeout.
Luckily, there is a simple solution for that. Administrators need to deploy
both GUI/GTK build and just console build executables, like below: >
|- vim73
|----- doc
|----- syntax
|----- syntax
vimrc (system rc files)
gvimrc
gvim.exe (the renamed GUI or GTK built vim.exe)
vim.exe (the console only executable)
gvim.exe (the renamed GUI or GTK built vim.exe)
vim.exe (the console only executable)
Define system symbols like below in for ex in LOGIN.COM or SYLOGIN.COM: >
@@ -692,7 +690,7 @@ Define system symbols like below in for ex in LOGIN.COM or SYLOGIN.COM: >
$ gv*im :== spawn/nowait/input=NLA0 mcr VIM:GVIM.EXE -g -GEOMETRY 80x40
Like this, users that do not have X environment and want to use Vim just in
Like this, users that do not have X environment and want to use Vim just in
console mode can avoid performance problems.
(Zoltan Arpadffy, Vim 7.2)
@@ -714,8 +712,8 @@ View of Cluster from system ID 11655 node: TOR
+---------------------------------+
It is convenient to have a common VIM directory but execute different
executables.
There are more solutions for this problem:
executables.
There are several solutions for this problem:
Solution 1. All executables in the same directory with different names
This is easily done with the following script that can be added
@@ -769,7 +767,7 @@ GNU_TOOLS.ZIP package downloadable from http://www.polarhome.com/vim/
Version 7.3
- CTAGS 5.8 included
- VMS compile warnings fixed - floating-point overflow warning corrected on VAX
- filepath completition corrected - too many chars were escaped in filename
- filepath completion corrected - too many chars were escaped in filename
and shell commands
- the following plugins are included into VMS runtime:
genutils 2.4, multiselect 2.2, multvals 3.1, selectbuf 4.3,
@@ -784,10 +782,10 @@ Version 7.3
Version 7.2 (2008 Aug 9)
- VCF files write corrected
- CTAGS 5.7 included
- corrected make_vms.mms (on VAX gave syntax error)
- corrected make_vms.mms (on VAX gave syntax error)
Version 7.1 (2007 Jun 15)
- create TAGS file from menu
- create TAGS file from menu
Version 7 (2006 May 8)
- Improved low level char input (affects just console mode)
+4 -4
View File
@@ -1,4 +1,4 @@
*os_win32.txt* For Vim version 7.3. Last change: 2011 May 28
*os_win32.txt* For Vim version 7.3. Last change: 2011 Aug 14
VIM REFERENCE MANUAL by George Reilly
@@ -316,11 +316,11 @@ A. When using :! to run an external command, you can run it with "start": >
There are two optional arguments (see the next Q):
/min the window will be minimized.
/b" no console window will be opened
You can only one of these flags at a time. A second second one will be
You can use only one of these flags at a time. A second one will be
treated as the start of the command.
Q. How do I avoid getting a window for programs that I run asynchronously?
A. You have two possible solutions depending on what exactly do you want:
A. You have two possible solutions depending on what you want:
1) You may use the /min flag in order to run program in a minimized state
with no other changes. It will work equally for console and GUI
applications.
@@ -328,7 +328,7 @@ A. You have two possible solutions depending on what exactly do you want:
console window for them (GUI applications are not affected). But you
should use this flag only if the application you run doesn't require any
input. Otherwise it will get an EOF error because its input stream
(stdin) would be redirected to \\.\NUL (stdoud and stderr too).
(stdin) would be redirected to \\.\NUL (stdout and stderr too).
Example for a console application, run Exuberant ctags: >
:!start /min ctags -R .
+3 -5
View File
@@ -1,4 +1,4 @@
*pattern.txt* For Vim version 7.3. Last change: 2011 May 25
*pattern.txt* For Vim version 7.3. Last change: 2011 Jul 20
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1036,11 +1036,9 @@ x A single character, with no special meaning, matches itself
These items only work for 8-bit characters.
*/[[=* *[==]*
- An equivalence class. This means that characters are matched that
have almost the same meaning, e.g., when ignoring accents. The form
is:
have almost the same meaning, e.g., when ignoring accents. This
only works for Unicode, latin1 and latin9. The form is:
[=a=]
Currently this is only implemented for latin1. Also works for the
latin1 characters in utf-8 and latin9.
*/[[.* *[..]*
- A collation element. This currently simply accepts a single
character in the form:
+2 -1
View File
@@ -1,4 +1,4 @@
*pi_vimball.txt* For Vim version 7.3. Last change: 2011 Apr 02
*pi_vimball.txt* For Vim version 7.3. Last change: 2011 Aug 14
----------------
Vimball Archiver
@@ -16,6 +16,7 @@ Copyright: (c) 2004-2011 by Charles E. Campbell, Jr. *Vimball-copyright*
1. Contents *vba* *vimball* *vimball-contents*
1. Contents......................................: |vimball-contents|
2. Vimball Introduction..........................: |vimball-intro|
3. Vimball Manual................................: |vimball-manual|
MkVimball.....................................: |:MkVimball|
UseVimball....................................: |:UseVimball|
+1 -2
View File
@@ -1,4 +1,4 @@
*pi_zip.txt* For Vim version 7.3. Last change: 2011 May 24
*pi_zip.txt* For Vim version 7.3. Last change: 2011 Aug 14
+====================+
| Zip File Interface |
@@ -69,7 +69,6 @@ Copyright: Copyright (C) 2005-2011 Charles E Campbell, Jr *zip-copyright*
let g:loaded_zipPlugin= 1
let g:loaded_zip = 1
<
<
==============================================================================
3. Additional Extensions *zip-extension*
+8 -7
View File
@@ -1,4 +1,4 @@
*starting.txt* For Vim version 7.3. Last change: 2010 Sep 18
*starting.txt* For Vim version 7.3. Last change: 2011 Jul 22
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -424,12 +424,7 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
"-d con:30/10/600/150". But you can also use it to start
editing on another device, e.g., AUX:. {not in Vi}
*-f*
-f Amiga: Do not restart Vim to open a new window. This
option should be used when Vim is started by a program that
will wait for the edit session to finish (e.g., mail or
readnews). See |amiga-window|.
GUI: Do not disconnect from the program that started Vim.
-f GUI: Do not disconnect from the program that started Vim.
'f' stands for "foreground". If omitted, the GUI forks a new
process and exits the current one. "-f" should be used when
gvim is started by a program that will wait for the edit
@@ -437,8 +432,14 @@ a slash. Thus "-R" means recovery and "-/R" readonly.
never to fork, include 'f' in 'guioptions' in your |gvimrc|.
Careful: You can use "-gf" to start the GUI in the foreground,
but "-fg" is used to specify the foreground color. |gui-fork|
Amiga: Do not restart Vim to open a new window. This
option should be used when Vim is started by a program that
will wait for the edit session to finish (e.g., mail or
readnews). See |amiga-window|.
{not in Vi}
*--nofork*
--nofork GUI: Do not fork. Same as |-f|.
*-u* *E282*
+11 -5
View File
@@ -1,4 +1,4 @@
*syntax.txt* For Vim version 7.3. Last change: 2011 May 06
*syntax.txt* For Vim version 7.3. Last change: 2011 Jul 18
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -866,13 +866,13 @@ used.
Detecting whether a file is csh or tcsh is notoriously hard. Some systems
symlink /bin/csh to /bin/tcsh, making it almost impossible to distinguish
between csh and tcsh. In case VIM guesses wrong you can set the
"filetype_csh" variable. For using csh: >
:let filetype_csh = "csh"
"filetype_csh" variable. For using csh: *g:filetype_csh*
>
:let g:filetype_csh = "csh"
For using tcsh: >
:let filetype_csh = "tcsh"
:let g:filetype_csh = "tcsh"
Any script with a tcsh extension or a standard tcsh filename (.tcshrc,
tcsh.tcshrc, tcsh.login) will have filetype tcsh. All other tcsh/csh scripts
@@ -2372,6 +2372,12 @@ This will make the syntax synchronization start 50 lines before the first
displayed line. The default value is 10. The disadvantage of using a larger
number is that redrawing can become slow.
Vim tries to guess what type a ".r" file is. If it can't be detected (from
comment lines), the default is "r". To make the default rexx add this line to
your .vimrc: *g:filetype_r*
>
:let g:filetype_r = "r"
RUBY *ruby.vim* *ft-ruby-syntax*
+9 -1
View File
@@ -4280,6 +4280,8 @@ E848 syntax.txt /*E848*
E849 syntax.txt /*E849*
E85 options.txt /*E85*
E850 change.txt /*E850*
E851 gui_x11.txt /*E851*
E852 gui_x11.txt /*E852*
E86 windows.txt /*E86*
E87 windows.txt /*E87*
E88 windows.txt /*E88*
@@ -5013,7 +5015,6 @@ cino-( indent.txt /*cino-(*
cino-) indent.txt /*cino-)*
cino-+ indent.txt /*cino-+*
cino-/ indent.txt /*cino-\/*
cino-2 indent.txt /*cino-2*
cino-: indent.txt /*cino-:*
cino-= indent.txt /*cino-=*
cino-> indent.txt /*cino->*
@@ -5040,6 +5041,7 @@ cino-p indent.txt /*cino-p*
cino-star indent.txt /*cino-star*
cino-t indent.txt /*cino-t*
cino-u indent.txt /*cino-u*
cino-w indent.txt /*cino-w*
cino-{ indent.txt /*cino-{*
cino-} indent.txt /*cino-}*
cinoptions-values indent.txt /*cinoptions-values*
@@ -5149,6 +5151,7 @@ cpo-+ options.txt /*cpo-+*
cpo-- options.txt /*cpo--*
cpo-. options.txt /*cpo-.*
cpo-/ options.txt /*cpo-\/*
cpo-; options.txt /*cpo-;*
cpo-< options.txt /*cpo-<*
cpo-> options.txt /*cpo->*
cpo-A options.txt /*cpo-A*
@@ -5743,6 +5746,7 @@ ft-ptcap-syntax syntax.txt /*ft-ptcap-syntax*
ft-python-indent indent.txt /*ft-python-indent*
ft-python-syntax syntax.txt /*ft-python-syntax*
ft-quake-syntax syntax.txt /*ft-quake-syntax*
ft-r-indent indent.txt /*ft-r-indent*
ft-readline-syntax syntax.txt /*ft-readline-syntax*
ft-rexx-syntax syntax.txt /*ft-rexx-syntax*
ft-ruby-omni insert.txt /*ft-ruby-omni*
@@ -5838,6 +5842,8 @@ g:decada.Error_Format ft_ada.txt /*g:decada.Error_Format*
g:decada.Make() ft_ada.txt /*g:decada.Make()*
g:decada.Make_Command ft_ada.txt /*g:decada.Make_Command*
g:decada.Unit_Name() ft_ada.txt /*g:decada.Unit_Name()*
g:filetype_csh syntax.txt /*g:filetype_csh*
g:filetype_r syntax.txt /*g:filetype_r*
g:gnat ft_ada.txt /*g:gnat*
g:gnat.Error_Format ft_ada.txt /*g:gnat.Error_Format*
g:gnat.Find() ft_ada.txt /*g:gnat.Find()*
@@ -6073,6 +6079,7 @@ gtk-tooltip-colors gui_x11.txt /*gtk-tooltip-colors*
gu change.txt /*gu*
gugu change.txt /*gugu*
gui gui.txt /*gui*
gui-IME gui.txt /*gui-IME*
gui-clipboard gui_w32.txt /*gui-clipboard*
gui-colors syntax.txt /*gui-colors*
gui-extras gui.txt /*gui-extras*
@@ -6283,6 +6290,7 @@ i) motion.txt /*i)*
i< motion.txt /*i<*
i> motion.txt /*i>*
iB motion.txt /*iB*
iBus gui.txt /*iBus*
iW motion.txt /*iW*
i[ motion.txt /*i[*
i] motion.txt /*i]*
+71 -118
View File
@@ -1,4 +1,4 @@
*todo.txt* For Vim version 7.3. Last change: 2011 Jun 19
*todo.txt* For Vim version 7.3. Last change: 2011 Sep 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -34,66 +34,45 @@ not be repeated below, unless there is extra information.
*known-bugs*
-------------------- Known bugs and current work -----------------------
Patch to start GTK only after forking. (Tim Starling, 2011 Sep 12)
Patch for Lua debug(). (Rob Hoelz, 2011 Sep 12)
Go through more coverity reports.
Using "." to repeat a Visual delete counts bytes, not characters. Can this be
fixed? (Connor Lane Smith, 2011 Sep 1)
Patch to allow getchar() in expression mapping.
Why was typeahead saved and restored? (James Vega, 2011 Aug 31)
Crash in autocomplete, valgrind log. (Greg Weber, 2011 Apr 22)
Discussion about canonicalization of Hebrew. (Ron Aaron, 2011 April 10)
Patch to fix gj with count. (James Vega, 2011 Jun 13)
Patch to disallow fork() when __APPLE__ is defined. (Hisashi T Fujinaka, 2010
Nov 25)
7 Output for ":scriptnames" and ":breaklist" should shorten the file names:
use "~/" when possible.
Patch by Jean-Rene David, 2011 May 1.
Cindent wrong after patch 7.3.202. (Lech Lorens, issue 9)
Patch for cindent fix with closing brace placement, including tests.
(Lech Lorens, issue 10, 2011 Jun 12)
Patch for better #if 0 syntax highlighting for C code. (Ben Schmidt, 2011 Jan
20)
Change to C syntax folding to make it work much faster, but a bit less
reliable. (Lech Lorens, 2009 Nov 9) Enable with an option?
Most time is spent in in_id_list().
Updated to merge both patches. (Ben Schmidt, 2011 May 2)
GTK: Patch to fix menu popping down. (Hong Xu, 2010 Dec 4, Dec 5)
Update 2011 Feb 3.
Patch to use pipes on Win32. (Vincent Berthoux, 2011 Feb 28)
Update Mar 1 using 'shelltemp'.
Patch to fix CTRL-R CTRL-W in the command line when the cursor is not at the
end. (Tyru, 2011 Jun 6)
Patch to fail if configure can't find an interface, such as Python.
(Shlomi Fish, 2011 Jul 11)
Patch to support UTF-8 for Hangul. (Shawn Y.H. Kim, 2011 May 1)
Needs more work.
Patch to make ";" not get stuck on "t" command. (Christian Brabandt, 2011 May
23)
Patch for glob() returning a list. (Christian Brabandt, 2011 Aug 24, second
one)
Patch to do more testing of Javascript indenting. Some items are srong.
(Luc Deschenaux, 2011 Jun 14)
Patch for: (Christian Brabandt, 2011 Aug 22)
- Make it possible to enter "r<C-E>" and "r<C-Y>" (get character from line
below/above).
"gh<Del>" deletes the current line, except when it's the last line.
Hint by Christian Brabandt, 2011 Mar 22
Patch for: (Christian Brabandt, 2011 Aug 24, updated patch)
8 ":sign unplace * file={filename}" should work. Also: ":sign unplace *
buffer={bufnr}". So one can remove all signs for one file/buffer.
"echo 'abc' > ''" returns 0 or 1, depending on 'ignorecase'.
mb_strnicmp() checks for illegal and truncated bytes are wrong.
Should also not assume that byte length is equal before case folding.
Patch by Ivan Krasilnikov, 2011 May 27.
The :z command doesn't work exactly as it should. (ChangZhuo Chen, 2011 Mar 2)
Compare with how old Vi works and with posix spec. terminal is 80 x 24,
'scroll' option set to 11.
Problem with l: dictionary being locked in a function. (ZyX, 2011 Jul 21)
'cursorline' is displayed too short when there are concealed characters and
'list' is set. (Dennis Preiser)
Patch 7.3.116 was the wrong solution.
Christian Brabandt has another incomplete patch. (2011 Jul 13)
With concealed text mouse click doesn't put the cursor in the right position.
(Herb Sitz) Fix by Christian Brabandt, 2011 Jun 16. Doesn't work properly,
@@ -103,24 +82,12 @@ Syntax region with 'concealends' and a 'cchar' value, 'conceallevel' set to 2,
only one of the two ends gets the cchar displayed. (Brett Stahlman, 2010 Aug
21, Ben Fritz, 2010 Sep 14)
When opening file from windows explorer, characters inside [] cause
problems, even though double quotes are used. (Manuel Stol, 2011 Mar 9)
Patch to change the meaning of \n in substitute(). (motoya kurotsu, 2011 Mar 8)
Gui menu edit/paste in block mode insert only inserts in one line (Bjorn
Winckler, 2011 May 11)
Use function to set paste option and restore it, use CTRL-R+ to paste.
Help file foldexpr (ZyX)
Need to escape $HOME on Windows? (ZyX, 2011 Jul 21)
Bug in repeating Visual "u". (Lawrence Kesteloot, 2010 Dec 20)
Patch to automatically get version number into NSIS. (Guopeng Wen, 2011 May
27)
Patch to make character classes work with multi-byte characters.
(Dominique Pelle, 2011 May 31)
With "unamedplus" in 'clipboard' pasting in Visual mode causes error for empty
register. (Michael Seiwald, 2011 Jun 28) I can't reproduce it.
In GTK Gvim, setting 'lines' and 'columns' to 99999 causes a crash (Tony
Mechelynck, 2011 Apr 25). Can reproduce the crash sometimes:
@@ -137,15 +104,8 @@ The error was 'RenderBadPicture (invalid Picture parameter)'.
backtrace from your debugger if you break on the gdk_x_error() function.)
Check that number of pixels doesn't go above 65535?
8 Add an event like CursorHold that is triggered repeatedly, not just once
after typing something.
Need for CursorHold that retriggers. Use a key that doesn't do anything, or a
function that resets did_cursorhold.
Patch by Christian Brabandt, 2011 May 6.
CursorHold repeats typed key when it's the start of a mapping.
(Will Gray, 2011 Mar 23)
Christian Brabandt: problem is that OP_PENDING isn't set.
popup completion menu closes quickly when there is a fold in the buffer. (Jan
Christoph Ebersbach, 2011 Jul 3)
Windows keys not set properly on Windows 7? (cncyber, 2010 Aug 26)
@@ -167,6 +127,8 @@ Using ":break" or something else that stops executing commands inside a
Vim using lots of memory when joining lines. (John Little, 2010 Dec 3)
Changes to manpage plugin. (Elias Toivanen, 2011 Jul 25)
On 64 bit MS-Windows "long" is only 32 bits, but we sometimes need to store a
64 bits value. Change all number options to use nropt_T and define it to the
right type.
@@ -174,24 +136,27 @@ right type.
string() can't parse back "inf" and "nan". Fix documentation or fix code?
(ZyX, 2010 Aug 23)
Make 'formatprg' global-local. (Sung Pae)
When doing "redir => s:foo" in a script and then "redir END" somewhere else
(e.g. in a function) it can't find s:foo.
7 Make "ga" show the digraph for a character, if it exists.
Patch from Christian Brabandt, 2011 Aug 19.
maparg() does not show the <script> flag. When temporarily changing a
mapping, how to restore the script ID?
Patch to fix \%V item in regexp. (Christian Brabandt, 2010 Nov 8)
Update Nov 19. James Vega: still not right. Christian: it's difficult.
Patch to add up to 99 match groups. (Christian Brabandt, 2010 Dec 22)
Also add named groups: \%{name}(re) and \%{name}g
Bug in try/catch: return with invalid compare throws error that isn't caught.
(ZyX, 2011 Jan 26)
Highlighting stops working after changing it many times. Script to reproduce
it: Pablo Contreras, 2010 Oct 12 Windows XP and 7. Font is never freed?
When setting a local option value from the global value, add a script ID that
indicates this, so that ":verbose set" can give a hint. Check with options in
the help file.
After patch 7.3.097 still get E15. (Yukihiro Nakadaira, 2011 Jan 18)
Also for another example (ZyX, 2011 Jan 24)
@@ -199,10 +164,6 @@ Build problem with small features on Mac OS X 10.6. (Rainer, 2011 Jan 24)
"0g@$" puts '] on last byte of multi-byte. (ZyX, 2011 Jan 22)
Deleting a linewise selection that includes the last line of the file leaves
an empty line. (Ben Schmidt, 2011 Mar 17)
Patch by Christian Brabandt, 2011 Mar 19.
Patch to support sorting on floating point number. (Alex Jakushev, 2010 Oct
30)
@@ -222,6 +183,29 @@ With a filler line in diff mode, it isn't displayed in the column with line
number, but it is in the sign column. Doesn't look right. (ZyX 2011 Jun 5)
Patch by Christian Brabandt, 2011 Jun 5. Introduces new problems.
8 Add a command to jump to the next character highlighted with "Error".
Patch by Christian Brabandt, uses ]e [e ]t and [t. 2011 Aug 9.
8 Add an event like CursorHold that is triggered repeatedly, not just once
after typing something.
Need for CursorHold that retriggers. Use a key that doesn't do anything, or a
function that resets did_cursorhold.
Patch by Christian Brabandt, 2011 May 6.
7 Use "++--", "+++--" for different levels instead of "+---" "+----".
Patch by Christian Brabandt, 2011 Jul 27.
Update by Ben Fritz, with fix for TOhtml. (2011 Jul 30)
9 Add %F to 'errorformat': file name without spaces. Useful on Unix to
avoid matching something up to a time 11:22:33.
Patch by Christian Brabandt, 2011 Jul 27.
Patch to fix \%V item in regexp. (Christian Brabandt, 2010 Nov 8)
Update Nov 19. James Vega: still not right. Christian: it's difficult.
Patch to add up to 99 match groups. (Christian Brabandt, 2010 Dec 22)
Also add named groups: \%{name}(re) and \%{name}g
In the sandbox it's not allowed to do many things, but it's possible to change
or set variables. Add a way to prevent variables from being changed in the
sandbox? E.g.: ":protect g:restore_settings".
@@ -334,26 +318,20 @@ Echo starts in the wrong column:
Patch for GVimExt to show an icon. (Dominik Riebeling, 2010 Nov 7)
GvimExt sets $LANG in the wrong way. Patch by Yasuhiro Matsumoto, 2011 Jun
15. This will fix issue no 11.
When writing a file > 2Gbyte, the reported number of bytes is negative.
(Antonio Colombo, 2010 Dec 18)
Patch: Let rare word highlighting overrule good word highlighting.
(Jakson A. Aquino, 2010 Jul 30)
Patch to make more characters work in dialogs. (Yankwei Jia, 2010 Aug 4)
Patch for VisVim, pass file name to VimOpenFile. (Jiri Sedlak, 2010 Nov 12)
(Jakson A. Aquino, 2010 Jul 30, again 2011 Jul 2)
When 'lines' is 25 and 'scrolloff' is 12, "j" scrolls zero or two lines
instead of one. (Constantin Pan, 2010 Sep 10)
Crash in setqflist(). (Benoit Mortgat, 2010 Nov 18)
Patch to handle resizing when tab is opened, when at full size. (Yukihiro
Nakadaira, 2010 Jan 6)
Gui menu edit/paste in block mode insert only inserts in one line (Bjorn
Winckler, 2011 May 11)
Requires a map mode for Insert mode started from blockwise Visual mode.
Writing nested List and Dict in viminfo gives error message and can't be read
back. (Yukihiro Nakadaira, 2010 Nov 13)
@@ -429,6 +407,9 @@ characters. (2010 Aug 14, bootleq)
Problem with stop directory in findfile(). (Adam Simpkins, 2009 Aug 26)
Using ']' as the end of a range in a pattern requires double escaping:
/[@-\\]] (Andy Wokula, 2011 Jun 28)
Undo problem: line not removed as expected when using setline() from Insert
mode. (Israel Chauca, 2010 May 13, more in second msg)
Break undo when CTRL-R = changes the text? Or save more lines?
@@ -448,10 +429,6 @@ echo, just not for ":call" and ":call call()". (Ted, 2011 Mar 17)
Cannot use getchar() inside :normal and using an expression mapping. Is this
supposed to work? (XyX, 2010 Sep 22)
When using an expression mapping with a multi-byte character each byte is
converted to a utf-8 character. (ZyX, 2011 Jan 4)
Patch for possible solution. (Yukihiro Nakadaira, 2011 Jan 5)
When a:base in 'completefunc' starts with a number it's passed as a number,
not a string. (Sean Ma) Need to add flag to call_func_retlist() to force a
string value.
@@ -778,11 +755,6 @@ an alternate solution, also for src/ex_getln.c.
This also fails when the file or directory name contains "%". (Thoml, 2008
July 7)
The str2special() function doesn't handle multi-byte characters properly.
Patch from Vladimir Vichniakov, 2007 Apr 24.
Should clean up the whole function. Also allow modifiers like <S-Char-32>?
find_special_key() also has this problem.
Problem with 'langmap' being used on the rhs of a mapping. (Nikolai Weibull,
2008 May 14)
@@ -858,8 +830,6 @@ try/catch not working for argument of return. (Matt Wozniski, 2008 Sep 15)
try/catch not working when inside a for loop. (ZyX, 2011 Jan 25)
Recognize and ignore BOM in error file. (Aleksey Baibarin)
":tab help" always opens a new tab, while ":help" re-uses an existing window.
Would be more consistent when an existing tab is re-used. (Tony Mechelynck)
@@ -893,9 +863,6 @@ Can't easily close the help window, like ":pc" closes the preview window and
":ccl" closes the quickfix window. Add ":hclose". (Chris Gaal)
Patch for :helpclose, Christian Brabandt, 2010 Sep 6.
Patch for :lmake not updating the quickfix window title. (Lech Lorens, 2011
Mar 26)
When 'diffopt' has "context:0" a single deleted line causes two folds to merge
and mess up syncing. (Austin Jennings, 2008 Jan 31)
@@ -956,9 +923,6 @@ popup menu over it, first draw the new popup menu, remember its position and
size and then redraw the text, skipping the characters under the popup menu.
This should avoid flicker. Other solution by A.Politz, 2007 Aug 22.
When the popup menu is close to the edge of the window it is truncated. Patch
to anchor the popup menu in a different way. (James Vega, 2008 Jul 30)
Windows 98: pasting from the clipboard with text from another application has
a trailing NUL. (Joachim Hofmann) Perhaps the length specified for CF_TEXT
isn't right?
@@ -1097,9 +1061,6 @@ If the variable "g:x#y#z" exists completion after ":echo g:x#" doesn't work.
Feature request: Command to go to previous tab, like what CTRL-W p does for
windows. (Adam George)
When using input() in a loop and then ":echo" the display column isn't right.
(Benjamin Fritz, 2008 Aug 28) Patch by Ben Schmidt, 2008 Sep 2.
F1 - F4 in an xterm produce a different escape sequence when used with a
modifier key. Need to catch three different sequences. Use K_ZF1, like
K_ZHOME? (Dickey, 2007 Dec 2)
@@ -1525,6 +1486,7 @@ Awaiting updated patches:
- Patch for 'breakindent' option: repeat indent for wrapped line. (Vaclav
Smilauer, 2004 Sep 13, fix Oct 31, update 2007 May 30)
Version for latest MacVim: Tobia Conforto, 2009 Nov 23
More recent version: https://retracile.net/wiki/VimBreakIndent
8 Add a few more command names to the menus. Patch from Jiri Brezina
(28 feb 2002). Will mess the translations...
7 ATTENTION dialog choices are more logical when "Delete it' appears
@@ -2683,7 +2645,6 @@ Folding:
8 Add "z/" and "z?" for searching in not folded text only.
9 Add search pattern item to only match in closed or open fold and/or fold
with certain level. Allows doing ":g/pat/cmd" to work on closed folds.
7 Use "++--", "+++--" for different levels instead of "+---" "+----".
8 When a closed fold is displayed open because of 'foldminlines', the
behavior of commands is still like the fold is closed. How to make the
user aware of this?
@@ -2863,7 +2824,6 @@ Syntax highlighting:
8 Highlight the text between two matching parens (e.g., with a grey
background) when on one of the parens or in between them.
Option for the matchparen plugin?
8 Add a command to jump to the next character highlighted with "Error".
8 When using a cterm, and no ctermfg or ctermbg are defined, use start/stop
sequences. Add remark in docs that :if 'term' == "term-name" should be
used.
@@ -4500,11 +4460,8 @@ Marks:
Digraphs:
7 Make "ga" show the digraph for a character, if it exists.
Also the keymap?
7 Make "ga" show the keymap for a character, if it exists.
Also show the code of the character after conversion to 'filenecoding'.
- Make it possible to enter "r<C-E>" and "r<C-Y>" (get character from line
below/above).
- Use digraph table to tell Vim about the collating sequence of special
characters?
8 Add command to remove one or more (all) digraphs. (Brown)
@@ -4622,8 +4579,6 @@ Debug mode:
Various improvements:
9 Python: be able to define a Python function that can be called directly
from Vim script. Requires converting the arguments and return value.
8 ":sign unplace * file={filename}" should work. Also: ":sign unplace *
buffer={bufnr}". So one can remove all signs for one file/buffer.
7 Add plugins for formatting? Should be able to make a choice depending on
the language of a file (English/Korean/Japanese/etc.).
Setting the 'langformat' option to "chinese" would load the
@@ -4641,8 +4596,6 @@ Various improvements:
7 Instead of filtering errors with a shell script it should be possible to
do this with Vim script. A function that filters the raw text that comes
from the 'makeprg'?
9 Add %F to 'errorformat': file name without spaces. Useful on Unix to
avoid matching something up to a time 11:22:33.
- Add %b to 'errorformat': buffer number. (Yegappan Lakshmanan / Suresh
Govindachar)
7 Add a command that goes back to the position from before jumping to the
+5 -3
View File
@@ -1,4 +1,4 @@
*undo.txt* For Vim version 7.3. Last change: 2010 Dec 19
*undo.txt* For Vim version 7.3. Last change: 2011 Aug 02
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -35,8 +35,10 @@ CTRL-R Redo [count] changes which were undone. {Vi: redraw
:red[o] Redo one change which was undone. {Vi: no redo}
*U*
U Undo all latest changes on one line. {Vi: while not
moved off of it}
U Undo all latest changes on one line, the line where
the latest change was made. |U| itself also counts as
a change, and thus |U| undoes a previous |U|.
{Vi: while not moved off of the last modified line}
The last changes are remembered. You can use the undo and redo commands above
to revert the text to how it was before each change. You can also apply the
+3 -3
View File
@@ -1,4 +1,4 @@
*vi_diff.txt* For Vim version 7.3. Last change: 2010 Oct 11
*vi_diff.txt* For Vim version 7.3. Last change: 2011 Aug 29
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -88,8 +88,8 @@ Maximum display width Unix and Win32: 1024 characters, otherwise 255
characters
Maximum lhs of a mapping 50 characters.
Number of different highlighting types: over 30000
Range of a Number variable: -2147483648 to 2147483647 (more on 64 bit
systems)
Range of a Number variable: -2147483648 to 2147483647 (might be more on 64
bit systems)
Maximum length of a line in a tags file: 512 bytes.
Information for undo and text in registers is kept in memory, thus when making
+2 -2
View File
@@ -1,4 +1,4 @@
*windows.txt* For Vim version 7.3. Last change: 2010 Aug 15
*windows.txt* For Vim version 7.3. Last change: 2011 Aug 14
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -246,7 +246,7 @@ window will appear.
These command modifiers can be combined to make a vertically split window
occupy the full height. Example: >
:vertical topleft edit tags
:vertical topleft split tags
Opens a vertically split, full-height window on the "tags" file at the far
left of the Vim window.
+15 -4
View File
@@ -1,7 +1,7 @@
" Vim support file to detect file types
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2011 Jun 13
" Last Change: 2011 Sep 07
" Listen very carefully, I will say this only once
if exists("did_load_filetypes")
@@ -922,7 +922,7 @@ au BufNewFile,BufRead *.java,*.jav setf java
au BufNewFile,BufRead *.jj,*.jjt setf javacc
" JavaScript, ECMAScript
au BufNewFile,BufRead *.js,*.javascript,*.es,*.jsx setf javascript
au BufNewFile,BufRead *.js,*.javascript,*.es,*.jsx,*.json setf javascript
" Java Server Pages
au BufNewFile,BufRead *.jsp setf jsp
@@ -1588,8 +1588,13 @@ func! s:FTr()
endif
endfor
" Nothing recognized, assume Rexx
setf rexx
" Nothing recognized, use user default or assume Rexx
if exists("g:filetype_r")
exe "setf " . g:filetype_r
else
" Rexx used to be the default, but R appears to be much more popular.
setf r
endif
endfunc
" Remind
@@ -2340,6 +2345,9 @@ endfunc
" Yaml
au BufNewFile,BufRead *.yaml,*.yml setf yaml
" yum conf (close enough to dosini)
au BufNewFile,BufRead */etc/yum.conf setf dosini
" Zope
" dtml (zope dynamic template markup language), pt (zope page template),
" cpt (zope form controller page template)
@@ -2510,6 +2518,9 @@ au BufNewFile,BufRead *xmodmap* call s:StarSetf('xmodmap')
" Xinetd conf
au BufNewFile,BufRead */etc/xinetd.d/* call s:StarSetf('xinetd')
" yum conf (close enough to dosini)
au BufNewFile,BufRead */etc/yum.repos.d/* call s:StarSetf('dosini')
" Z-Shell script
au BufNewFile,BufRead zsh*,zlog* call s:StarSetf('zsh')
+2 -2
View File
@@ -1,7 +1,7 @@
" Vim filetype plugin file
" Language: C
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2007 Sep 25
" Last Change: 2011 Aug 04
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
@@ -36,7 +36,7 @@ endif
" When the matchit plugin is loaded, this makes the % command skip parens and
" braces in comments.
let b:match_words = &matchpairs
let b:match_words = &matchpairs . ',^\s*#\s*if\(\|def\|ndef\)\>:^\s*#\s*elif\>:^\s*#\s*else\>:^\s*#\s*endif\>'
let b:match_skip = 's:comment\|string\|character'
" Win32 can filter files in the browse dialog
+4 -1
View File
@@ -13,7 +13,10 @@ set cpo&vim
let b:undo_ftplugin = "setl fo< tw< cole< cocu<"
setlocal formatoptions+=tcroql textwidth=78 cole=2 cocu=nc
setlocal formatoptions+=tcroql textwidth=78
if has("conceal")
setlocal cole=2 cocu=nc
endif
if has("gui_macvim")
" Use swipe gesture to navigate back/forward
+4 -2
View File
@@ -1,7 +1,7 @@
" Vim filetype plugin file
" Language: man
" Maintainer: SungHyun Nam <goweol@gmail.com>
" Last Change: 2010 Nov 29
" Last Change: 2011 Jul 25
" To make the ":Man" command available before editing a manual page, source
" this script from your startup vimrc file.
@@ -17,7 +17,9 @@ if &filetype == "man"
" Ensure Vim is not recursively invoked (man-db does this)
" when doing ctrl-[ on a man page reference.
let $MANPAGER = ""
if exists("$MANPAGER")
let $MANPAGER = ""
endif
" allow dot and dash in manual page name.
setlocal iskeyword+=\.,-
+2 -1
View File
@@ -23,6 +23,7 @@
" 26-04-2002 Got initial version working reasonably well
" 29-04-2002 Fixed problems in function headers and max line width
" Added support for two-line if's without curly braces
" Fixed hang: 2011 Aug 31
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
@@ -118,7 +119,7 @@ function! GetAwkIndent()
" Case 1
if prev_data =~ ')' && brace_balance < 0
while brace_balance != 0
while brace_balance != 0 && prev_lineno > 0
let prev_lineno = s:Get_prev_line( prev_lineno )
let prev_data = getline( prev_lineno )
let brace_balance=brace_balance+s:Get_brace_balance(prev_data,'(',')' )
+2 -2
View File
@@ -1,7 +1,7 @@
" Vim indent file
" Language: DTD (Document Type Definition for XML)
" Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2010-09-21
" Latest Revision: 2011-07-08
let s:cpo_save = &cpo
set cpo&vim
@@ -52,7 +52,7 @@ function s:indent_to_innermost_parentheses(line, end)
let end = a:end
let parentheses = [end - 1]
while token != ""
let [token, end] = s:lex(a:line, end, '^\%([(),|]\|[A-Za-z0-9_-]\+\|#PCDATA\|%[A-Za-z0-9_-]\+;\)[?*+]\=')
let [token, end] = s:lex(a:line, end, '^\%([(),|]\|[A-Za-z0-9_-]\+\|#P\=CDATA\|%[A-Za-z0-9_-]\+;\)[?*+]\=')
if token[0] == '('
call add(parentheses, end - 1)
elseif token[0] == ')'
+482
View File
@@ -0,0 +1,482 @@
" Vim indent file
" Language: R
" Author: Jakson Alves de Aquino <jalvesaq@gmail.com>
" Last Change: Wed Aug 31, 2011 12:24AM
" Only load this indent file when no other was loaded.
if exists("b:did_r_indent")
finish
endif
let b:did_r_indent = 1
setlocal indentkeys=0{,0},:,!^F,o,O,e
setlocal indentexpr=GetRIndent()
" Only define the function once.
if exists("*GetRIndent")
finish
endif
" Options to make the indentation more similar to Emacs/ESS:
if !exists("g:r_indent_align_args")
let g:r_indent_align_args = 1
endif
if !exists("g:r_indent_ess_comments")
let g:r_indent_ess_comments = 0
endif
if !exists("g:r_indent_comment_column")
let g:r_indent_comment_column = 40
endif
if ! exists("g:r_indent_ess_compatible")
let g:r_indent_ess_compatible = 0
endif
function s:RDelete_quotes(line)
let i = 0
let j = 0
let line1 = ""
let llen = strlen(a:line)
while i < llen
if a:line[i] == '"'
let i += 1
let line1 = line1 . 's'
while !(a:line[i] == '"' && ((i > 1 && a:line[i-1] == '\' && a:line[i-2] == '\') || a:line[i-1] != '\')) && i < llen
let i += 1
endwhile
if a:line[i] == '"'
let i += 1
endif
else
if a:line[i] == "'"
let i += 1
let line1 = line1 . 's'
while !(a:line[i] == "'" && ((i > 1 && a:line[i-1] == '\' && a:line[i-2] == '\') || a:line[i-1] != '\')) && i < llen
let i += 1
endwhile
if a:line[i] == "'"
let i += 1
endif
else
if a:line[i] == "`"
let i += 1
let line1 = line1 . 's'
while a:line[i] != "`" && i < llen
let i += 1
endwhile
if a:line[i] == "`"
let i += 1
endif
endif
endif
endif
if i == llen
break
endif
let line1 = line1 . a:line[i]
let j += 1
let i += 1
endwhile
return line1
endfunction
" Convert foo(bar()) int foo()
function s:RDelete_parens(line)
if s:Get_paren_balance(a:line, "(", ")") != 0
return a:line
endif
let i = 0
let j = 0
let line1 = ""
let llen = strlen(a:line)
while i < llen
let line1 = line1 . a:line[i]
if a:line[i] == '('
let nop = 1
while nop > 0 && i < llen
let i += 1
if a:line[i] == ')'
let nop -= 1
else
if a:line[i] == '('
let nop += 1
endif
endif
endwhile
let line1 = line1 . a:line[i]
endif
let i += 1
endwhile
return line1
endfunction
function! s:Get_paren_balance(line, o, c)
let line2 = substitute(a:line, a:o, "", "g")
let openp = strlen(a:line) - strlen(line2)
let line3 = substitute(line2, a:c, "", "g")
let closep = strlen(line2) - strlen(line3)
return openp - closep
endfunction
function! s:Get_matching_brace(linenr, o, c, delbrace)
let line = SanitizeRLine(getline(a:linenr))
if a:delbrace == 1
let line = substitute(line, '{$', "", "")
endif
let pb = s:Get_paren_balance(line, a:o, a:c)
let i = a:linenr
while pb != 0 && i > 1
let i -= 1
let pb += s:Get_paren_balance(SanitizeRLine(getline(i)), a:o, a:c)
endwhile
return i
endfunction
" This function is buggy because there 'if's without 'else'
" It must be rewritten relying more on indentation
function! s:Get_matching_if(linenr, delif)
" let filenm = expand("%")
" call writefile([filenm], "/tmp/matching_if_" . a:linenr)
let line = SanitizeRLine(getline(a:linenr))
if a:delif
let line = substitute(line, "if", "", "g")
endif
let elsenr = 0
let i = a:linenr
let ifhere = 0
while i > 0
let line2 = substitute(line, '\<else\>', "xxx", "g")
let elsenr += strlen(line) - strlen(line2)
if line =~ '.*\s*if\s*()' || line =~ '.*\s*if\s*()'
let elsenr -= 1
if elsenr == 0
let ifhere = i
break
endif
endif
let i -= 1
let line = SanitizeRLine(getline(i))
endwhile
if ifhere
return ifhere
else
return a:linenr
endif
endfunction
function! s:Get_last_paren_idx(line, o, c, pb)
let blc = a:pb
let line = substitute(a:line, '\t', s:curtabstop, "g")
let theidx = -1
let llen = strlen(line)
let idx = 0
while idx < llen
if line[idx] == a:o
let blc -= 1
if blc == 0
let theidx = idx
endif
else
if line[idx] == a:c
let blc += 1
endif
endif
let idx += 1
endwhile
return theidx + 1
endfunction
" Get previous relevant line. Search back until getting a line that isn't
" comment or blank
function s:Get_prev_line(lineno)
let lnum = a:lineno - 1
let data = getline( lnum )
while lnum > 0 && (data =~ '^\s*#' || data =~ '^\s*$')
let lnum = lnum - 1
let data = getline( lnum )
endwhile
return lnum
endfunction
" This function is also used by r-plugin/common_global.vim
" Delete from '#' to the end of the line, unless the '#' is inside a string.
function SanitizeRLine(line)
let newline = s:RDelete_quotes(a:line)
let newline = s:RDelete_parens(newline)
let newline = substitute(newline, '#.*', "", "")
let newline = substitute(newline, '\s*$', "", "")
return newline
endfunction
function GetRIndent()
let clnum = line(".") " current line
let cline = getline(clnum)
if cline =~ '^\s*#'
if g:r_indent_ess_comments == 1
if cline =~ '^\s*###'
return 0
endif
if cline !~ '^\s*##'
return g:r_indent_comment_column
endif
endif
endif
let cline = SanitizeRLine(cline)
if cline =~ '^\s*}' || cline =~ '^\s*}\s*)$'
let indline = s:Get_matching_brace(clnum, '{', '}', 1)
if indline > 0 && indline != clnum
let iline = SanitizeRLine(getline(indline))
if s:Get_paren_balance(iline, "(", ")") == 0 || iline =~ '(\s*{$'
return indent(indline)
else
let indline = s:Get_matching_brace(indline, '(', ')', 1)
return indent(indline)
endif
endif
endif
" Find the first non blank line above the current line
let lnum = s:Get_prev_line(clnum)
" Hit the start of the file, use zero indent.
if lnum == 0
return 0
endif
let line = SanitizeRLine(getline(lnum))
if &filetype == "rhelp"
if cline =~ '^\\dontshow{' || cline =~ '^\\dontrun{' || cline =~ '^\\donttest{' || cline =~ '^\\testonly{'
return 0
endif
if line =~ '^\\examples{' || line =~ '^\\usage{' || line =~ '^\\dontshow{' || line =~ '^\\dontrun{' || line =~ '^\\donttest{' || line =~ '^\\testonly{'
return 0
endif
if line =~ '^\\method{.*}{.*}(.*'
let line = substitute(line, '^\\method{\(.*\)}{.*}', '\1', "")
endif
endif
if cline =~ '^\s*{'
if g:r_indent_ess_compatible && line =~ ')$'
let nlnum = lnum
let nline = line
while s:Get_paren_balance(nline, '(', ')') < 0
let nlnum = s:Get_prev_line(nlnum)
let nline = SanitizeRLine(getline(nlnum)) . nline
endwhile
if nline =~ '^\s*function\s*(' && indent(nlnum) == &sw
return 0
endif
endif
if s:Get_paren_balance(line, "(", ")") == 0
return indent(lnum)
endif
endif
" line is an incomplete command:
if line =~ '\<\(if\|while\|for\|function\)\s*()$' || line =~ '\<else$' || line =~ '<-$'
return indent(lnum) + &sw
endif
" Deal with () and []
let pb = s:Get_paren_balance(line, '(', ')')
if line =~ '^\s*{$' || line =~ '(\s*{' || (pb == 0 && (line =~ '{$' || line =~ '(\s*{$'))
return indent(lnum) + &sw
endif
let bb = s:Get_paren_balance(line, '[', ']')
let s:curtabstop = repeat(' ', &tabstop)
if g:r_indent_align_args == 1
if pb == 0 && bb == 0 && (line =~ '.*[,&|\-\*+<>]$' || cline =~ '^\s*[,&|\-\*+<>]')
return indent(lnum)
endif
if pb > 0
if &filetype == "rhelp"
let ind = s:Get_last_paren_idx(line, '(', ')', pb)
else
let ind = s:Get_last_paren_idx(getline(lnum), '(', ')', pb)
endif
return ind
endif
if pb < 0 && line =~ '.*[,&|\-\*+<>]$'
let lnum = s:Get_prev_line(lnum)
while pb < 1 && lnum > 0
let line = SanitizeRLine(getline(lnum))
let line = substitute(line, '\t', s:curtabstop, "g")
let ind = strlen(line)
while ind > 0
if line[ind] == ')'
let pb -= 1
else
if line[ind] == '('
let pb += 1
endif
endif
if pb == 1
return ind + 1
endif
let ind -= 1
endwhile
let lnum -= 1
endwhile
return 0
endif
if bb > 0
let ind = s:Get_last_paren_idx(getline(lnum), '[', ']', bb)
return ind
endif
endif
let post_block = 0
if line =~ '}$'
let lnum = s:Get_matching_brace(lnum, '{', '}', 0)
let line = SanitizeRLine(getline(lnum))
if lnum > 0 && line =~ '^\s*{'
let lnum = s:Get_prev_line(lnum)
let line = SanitizeRLine(getline(lnum))
endif
let pb = s:Get_paren_balance(line, '(', ')')
let post_block = 1
endif
let post_fun = 0
if pb < 0 && line !~ ')\s*[,&|\-\*+<>]$'
let post_fun = 1
while pb < 0 && lnum > 0
let lnum -= 1
let linepiece = SanitizeRLine(getline(lnum))
let pb += s:Get_paren_balance(linepiece, "(", ")")
let line = linepiece . line
endwhile
if line =~ '{$' && post_block == 0
return indent(lnum) + &sw
endif
" Now we can do some tests again
if cline =~ '^\s*{'
return indent(lnum)
endif
if post_block == 0
let newl = SanitizeRLine(line)
if newl =~ '\<\(if\|while\|for\|function\)\s*()$' || newl =~ '\<else$' || newl =~ '<-$'
return indent(lnum) + &sw
endif
endif
endif
if cline =~ '^\s*else'
if line =~ '<-\s*if\s*()'
return indent(lnum) + &sw
else
if line =~ '\<if\s*()'
return indent(lnum)
else
return indent(lnum) - &sw
endif
endif
endif
if bb < 0 && line =~ '.*]'
while bb < 0 && lnum > 0
let lnum -= 1
let linepiece = SanitizeRLine(getline(lnum))
let bb += s:Get_paren_balance(linepiece, "[", "]")
let line = linepiece . line
endwhile
let line = s:RDelete_parens(line)
endif
let plnum = s:Get_prev_line(lnum)
let ppost_else = 0
if plnum > 0
let pline = SanitizeRLine(getline(plnum))
let ppost_block = 0
if pline =~ '}$'
let ppost_block = 1
let plnum = s:Get_matching_brace(plnum, '{', '}', 0)
let pline = SanitizeRLine(getline(plnum))
if pline =~ '^\s*{$' && plnum > 0
let plnum = s:Get_prev_line(plnum)
let pline = SanitizeRLine(getline(plnum))
endif
endif
if pline =~ 'else$'
let ppost_else = 1
let plnum = s:Get_matching_if(plnum, 0)
let pline = SanitizeRLine(getline(plnum))
endif
if pline =~ '^\s*else\s*if\s*('
let pplnum = s:Get_prev_line(plnum)
let ppline = SanitizeRLine(getline(pplnum))
while ppline =~ '^\s*else\s*if\s*(' || ppline =~ '^\s*if\s*()\s*\S$'
let plnum = pplnum
let pline = ppline
let pplnum = s:Get_prev_line(plnum)
let ppline = SanitizeRLine(getline(pplnum))
endwhile
while ppline =~ '\<\(if\|while\|for\|function\)\s*()$' || ppline =~ '\<else$' || ppline =~ '<-$'
let plnum = pplnum
let pline = ppline
let pplnum = s:Get_prev_line(plnum)
let ppline = SanitizeRLine(getline(pplnum))
endwhile
endif
let ppb = s:Get_paren_balance(pline, '(', ')')
if ppb < 0 && (pline =~ ')\s*{$' || pline =~ ')$')
while ppb < 0 && plnum > 0
let plnum -= 1
let linepiece = SanitizeRLine(getline(plnum))
let ppb += s:Get_paren_balance(linepiece, "(", ")")
let pline = linepiece . pline
endwhile
let pline = s:RDelete_parens(pline)
endif
endif
let ind = indent(lnum)
let pind = indent(plnum)
if g:r_indent_align_args == 0 && pb != 0
let ind += pb * &sw
return ind
endif
if ind == pind || (ind == (pind + &sw) && pline =~ '{$' && ppost_else == 0)
return ind
endif
while pind < ind && plnum > 0 && ppb == 0
let ind = pind
let plnum = s:Get_prev_line(plnum)
let pline = getline(plnum)
let ppb = s:Get_paren_balance(pline, '(', ')')
while pline =~ '^\s*else'
let plnum = s:Get_matching_if(plnum, 1)
let pline = getline(plnum)
let ppb = s:Get_paren_balance(pline, '(', ')')
endwhile
let pind = indent(plnum)
if ind == (pind + &sw) && pline =~ '{$'
return ind
endif
endwhile
return ind
endfunction
" vim: sw=4
+20 -14
View File
@@ -1,7 +1,7 @@
" Vim indent file
" Language: reStructuredText Documentation Format
" Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2006-12-20
" Latest Revision: 2011-08-03
if exists("b:did_indent")
finish
@@ -16,6 +16,9 @@ if exists("*GetRSTIndent")
finish
endif
let s:itemization_pattern = '^\s*[-*+]\s'
let s:enumeration_pattern = '^\s*\%(\d\+\|#\)\.\s\+'
function GetRSTIndent()
let lnum = prevnonblank(v:lnum - 1)
if lnum == 0
@@ -25,27 +28,30 @@ function GetRSTIndent()
let ind = indent(lnum)
let line = getline(lnum)
if line =~ '^\s*[-*+]\s'
let ind = ind + 2
elseif line =~ '^\s*\d\+.\s'
let ind = ind + matchend(substitute(line, '^\s*', '', ''), '\d\+.\s\+')
if line =~ s:itemization_pattern
let ind += 2
elseif line =~ s:enumeration_pattern
let ind += matchend(line, s:enumeration_pattern)
endif
let line = getline(v:lnum - 1)
" Indent :FIELD: lines. Dont match if there is no text after the field or
" if the text ends with a sent-ender.
if line =~ '^:.\+:\s\{-1,\}\S.\+[^.!?:]$'
return matchend(line, '^:.\{-1,}:\s\+')
endif
if line =~ '^\s*$'
execute lnum
call search('^\s*\%([-*+]\s\|\d\+.\s\|\.\.\|$\)', 'bW')
call search('^\s*\%([-*+]\s\|\%(\d\+\|#\)\.\s\|\.\.\|$\)', 'bW')
let line = getline('.')
if line =~ '^\s*[-*+]'
let ind = ind - 2
elseif line =~ '^\s*\d\+\.\s'
let ind = ind - matchend(substitute(line, '^\s*', '', ''),
\ '\d\+\.\s\+')
if line =~ s:itemization_pattern
let ind -= 2
elseif line =~ s:enumeration_pattern
let ind -= matchend(line, s:enumeration_pattern)
elseif line =~ '^\s*\.\.'
let ind = ind - 3
else
let ind = ind
let ind -= 3
endif
endif
+1 -1
View File
@@ -1215,7 +1215,7 @@ if has("gui_macvim")
macm Window.Minimize\ All key=<D-M-m> action=miniaturizeAll: alt=YES
macm Window.Zoom key=<D-C-z> action=performZoom:
macm Window.Zoom\ All key=<D-M-C-z> action=zoomAll: alt=YES
macm Window.Toggle\ Full\ Screen\ Mode key=<D-F>
macm Window.Toggle\ Full\ Screen\ Mode key=<D-C-f>
macm Window.Select\ Next\ Tab key=<D-}>
macm Window.Select\ Previous\ Tab key=<D-{>
macm Window.Bring\ All\ To\ Front action=arrangeInFront:
+2 -2
View File
@@ -1,6 +1,6 @@
" Vim plugin for showing matching parens
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2010 Nov 16
" Last Change: 2011 Aug 27
" Exit quickly when:
" - this plugin was already loaded (or disabled)
@@ -82,7 +82,7 @@ function! s:Highlight_Matching_Pair()
endif
" When not in a string or comment ignore matches inside them.
" We match "escape" for special items, such as listpEscapeSpecial.
" We match "escape" for special items, such as lispEscapeSpecial.
let s_skip ='synIDattr(synID(line("."), col("."), 0), "name") ' .
\ '=~? "string\\|character\\|singlequote\\|escape\\|comment"'
execute 'if' s_skip '| let s_skip = 0 | endif'
+8 -8
View File
@@ -1,13 +1,13 @@
" Vim syntax file
" Language: BIND zone files (RFC1035)
" Language: BIND zone files (RFC 1035)
" Maintainer: Julian Mehnle <julian@mehnle.net>
" URL: http://www.mehnle.net/source/odds+ends/vim/syntax/
" Last Change: Thu 2006-04-20 12:30:45 UTC
" Last Change: Thu 2011-07-16 20:42:00 UTC
"
" Based on an earlier version by Вячеслав Горбанев (Slava Gorbanev), with
" heavy modifications.
"
" $Id: bindzone.vim,v 1.2 2006/04/20 22:06:21 vimboss Exp $
" $Id: bindzone.vim 12 2011-07-16 21:09:57Z julian $
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
@@ -23,7 +23,7 @@ syn case match
syn region zoneRRecord start=/^/ end=/$/ contains=zoneOwnerName,zoneSpecial,zoneTTL,zoneClass,zoneRRType,zoneComment,zoneUnknown
syn match zoneDirective /^\$ORIGIN\s\+/ nextgroup=zoneOrigin,zoneUnknown
syn match zoneDirective /^\$TTL\s\+/ nextgroup=zoneNumber,zoneUnknown
syn match zoneDirective /^\$TTL\s\+/ nextgroup=zoneTTL,zoneUnknown
syn match zoneDirective /^\$INCLUDE\s\+/ nextgroup=zoneText,zoneUnknown
syn match zoneDirective /^\$GENERATE\s/
@@ -34,9 +34,9 @@ syn match zoneOrigin contained /[^[:space:]!"#$%&'()*+,\/:;<=>?@[\]\
syn match zoneDomain contained /[^[:space:]!"#$%&'()*+,\/:;<=>?@[\]\^`{|}~]\+\(\s\|;\|$\)\@=/
syn match zoneSpecial contained /^[@*.]\s/
syn match zoneTTL contained /\<\d[0-9HhWwDd]*\>/ nextgroup=zoneClass,zoneRRType skipwhite
syn keyword zoneClass contained IN CHAOS nextgroup=zoneRRType,zoneTTL skipwhite
syn keyword zoneRRType contained A AAAA CNAME HINFO MX NS PTR SOA SRV TXT nextgroup=zoneRData skipwhite
syn match zoneTTL contained /\s\@<=\d[0-9WwDdHhMmSs]*\(\s\|$\)\@=/ nextgroup=zoneClass,zoneRRType skipwhite
syn keyword zoneClass contained IN CHAOS nextgroup=zoneRRType,zoneTTL skipwhite
syn keyword zoneRRType contained A AAAA CNAME DNAME HINFO MX NS PTR SOA SRV TXT SPF nextgroup=zoneRData skipwhite
syn match zoneRData contained /[^;]*/ contains=zoneDomain,zoneIPAddr,zoneIP6Addr,zoneText,zoneNumber,zoneParen,zoneUnknown
syn match zoneIPAddr contained /\<[0-9]\{1,3}\(\.[0-9]\{1,3}\)\{,3}\>/
@@ -66,7 +66,7 @@ syn match zoneNumber contained /\<[0-9]\+\(\s\|;\|$\)\@=/
syn match zoneSerial contained /\<[0-9]\{9,10}\(\s\|;\|$\)\@=/
syn match zoneErrParen /)/
syn region zoneParen contained start="(" end=")" contains=zoneSerial,zoneNumber,zoneComment
syn region zoneParen contained start="(" end=")" contains=zoneSerial,zoneTTL,zoneNumber,zoneComment
syn match zoneComment /;.*/
" Define the default highlighting.
+36 -17
View File
@@ -1,7 +1,7 @@
" Vim syntax file
" Language: C
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2009 Nov 17
" Last Change: 2011 Sep 07
" Quit when a (custom) syntax file was already loaded
if exists("b:current_syntax")
@@ -72,7 +72,7 @@ endif
" This should be before cErrInParen to avoid problems with #define ({ xxx })
if exists("c_curly_error")
syntax match cCurlyError "}"
syntax region cBlock start="{" end="}" contains=ALLBUT,cCurlyError,@cParenGroup,cErrInParen,cCppParen,cErrInBracket,cCppBracket,cCppString,@Spell fold
syntax region cBlock start="{" end="}" contains=ALLBUT,cBadBlock,cCurlyError,@cParenGroup,cErrInParen,cCppParen,cErrInBracket,cCppBracket,cCppString,@Spell fold
else
syntax region cBlock start="{" end="}" transparent fold
endif
@@ -80,31 +80,33 @@ endif
"catch errors caused by wrong parenthesis and brackets
" also accept <% for {, %> for }, <: for [ and :> for ] (C99)
" But avoid matching <::.
syn cluster cParenGroup contains=cParenError,cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cBitField,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom
syn cluster cParenGroup contains=cParenError,cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cBitField,cOctalZero,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom
if exists("c_no_curly_error")
syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cCppString,@Spell
syn region cParen transparent start='(' end=')' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cCppParen,cCppString,@Spell
" cCppParen: same as cParen but ends at end-of-line; used in cDefine
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell
syn match cParenError display ")"
syn match cErrInParen display contained "^[{}]\|^<%\|^%>"
elseif exists("c_no_bracket_error")
syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cCppString,@Spell
syn region cParen transparent start='(' end=')' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cCppParen,cCppString,@Spell
" cCppParen: same as cParen but ends at end-of-line; used in cDefine
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell
syn match cParenError display ")"
syn match cErrInParen display contained "[{}]\|<%\|%>"
else
syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cErrInBracket,cCppBracket,cCppString,@Spell
syn region cParen transparent start='(' end=')' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cCppParen,cErrInBracket,cCppBracket,cCppString,@Spell
" cCppParen: same as cParen but ends at end-of-line; used in cDefine
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cErrInBracket,cParen,cBracket,cString,@Spell
syn match cParenError display "[\])]"
syn match cErrInParen display contained "[\]{}]\|<%\|%>"
syn region cBracket transparent start='\[\|<::\@!' end=']\|:>' contains=ALLBUT,@cParenGroup,cErrInParen,cCppParen,cCppBracket,cCppString,@Spell
syn region cBracket transparent start='\[\|<::\@!' end=']\|:>' end='}'me=s-1 contains=ALLBUT,cBlock,@cParenGroup,cErrInParen,cCppParen,cCppBracket,cCppString,@Spell
" cCppBracket: same as cParen but ends at end-of-line; used in cDefine
syn region cCppBracket transparent start='\[\|<::\@!' skip='\\$' excludenl end=']\|:>' end='$' contained contains=ALLBUT,@cParenGroup,cErrInParen,cParen,cBracket,cString,@Spell
syn match cErrInBracket display contained "[);{}]\|<%\|%>"
endif
syntax region cBadBlock keepend extend start="{" end="}" contained containedin=cParen,cBracket,cBadBlock transparent fold
"integer number, or floating point number without a dot and with "f".
syn case ignore
syn match cNumbers display transparent "\<\d\|\.\d" contains=cNumber,cFloat,cOctalError,cOctal
@@ -270,27 +272,39 @@ if !exists("c_no_c99") " ISO C99
endif
" Accept %: for # (C99)
syn region cPreCondit start="^\s*\(%:\|#\)\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" keepend contains=cComment,cCommentL,cCppString,cCharacter,cCppParen,cParenError,cNumbers,cCommentError,cSpaceError
syn match cPreCondit display "^\s*\(%:\|#\)\s*\(else\|endif\)\>"
syn region cPreCondit start="^\s*\(%:\|#\)\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" keepend contains=cComment,cCommentL,cCppString,cCharacter,cCppParen,cParenError,cNumbers,cCommentError,cSpaceError
syn match cPreConditMatch display "^\s*\(%:\|#\)\s*\(else\|endif\)\>"
if !exists("c_no_if0")
syn cluster cCppOutInGroup contains=cCppInIf,cCppInElse,cCppInElse2,cCppOutIf,cCppOutIf2,cCppOutElse,cCppInSkip,cCppOutSkip
syn region cCppOutWrapper start="^\s*\(%:\|#\)\s*if\s\+0\+\s*\($\|//\|/\*\|&\)" end=".\@=\|$" contains=cCppOutIf,cCppOutElse fold
syn region cCppOutIf contained start="0\+" matchgroup=cCppOutWrapper end="^\s*\(%:\|#\)\s*endif\>" contains=cCppOutIf2,cCppOutElse
if !exists("c_no_if0_fold")
syn region cCppOut start="^\s*\(%:\|#\)\s*if\s\+0\+\>" end=".\@=\|$" contains=cCppOut2 fold
syn region cCppOutIf2 contained matchgroup=cCppOutWrapper start="0\+" end="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0\+\s*\($\|//\|/\*\|&\)\)\@!\|endif\>\)"me=s-1 contains=cSpaceError,cCppOutSkip fold
else
syn region cCppOut start="^\s*\(%:\|#\)\s*if\s\+0\+\>" end=".\@=\|$" contains=cCppOut2
syn region cCppOutIf2 contained matchgroup=cCppOutWrapper start="0\+" end="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0\+\s*\($\|//\|/\*\|&\)\)\@!\|endif\>\)"me=s-1 contains=cSpaceError,cCppOutSkip
endif
syn region cCppOut2 contained start="0" end="^\s*\(%:\|#\)\s*\(endif\>\|else\>\|elif\>\)" contains=cSpaceError,cCppSkip
syn region cCppSkip contained start="^\s*\(%:\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" contains=cSpaceError,cCppSkip
syn region cCppOutElse contained matchgroup=cCppOutWrapper start="^\s*\(%:\|#\)\s*\(else\|elif\)" end="^\s*\(%:\|#\)\s*endif\>"me=s-1 contains=TOP,cPreCondit
syn region cCppInWrapper start="^\s*\(%:\|#\)\s*if\s\+0*[1-9]\d*\s*\($\|//\|/\*\||\)" end=".\@=\|$" contains=cCppInIf,cCppInElse fold
syn region cCppInIf contained matchgroup=cCppInWrapper start="\d\+" end="^\s*\(%:\|#\)\s*endif\>" contains=TOP,cPreCondit
if !exists("c_no_if0_fold")
syn region cCppInElse contained start="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0*[1-9]\d*\s*\($\|//\|/\*\||\)\)\@!\)" end=".\@=\|$" containedin=cCppInIf contains=cCppInElse2 fold
else
syn region cCppInElse contained start="^\s*\(%:\|#\)\s*\(else\>\|elif\s\+\(0*[1-9]\d*\s*\($\|//\|/\*\||\)\)\@!\)" end=".\@=\|$" containedin=cCppInIf contains=cCppInElse2
endif
syn region cCppInElse2 contained matchgroup=cCppInWrapper start="^\s*\(%:\|#\)\s*\(else\|elif\)\([^/]\|/[^/*]\)*" end="^\s*\(%:\|#\)\s*endif\>"me=s-1 contains=cSpaceError,cCppOutSkip
syn region cCppOutSkip contained start="^\s*\(%:\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" contains=cSpaceError,cCppOutSkip
syn region cCppInSkip contained matchgroup=cCppInWrapper start="^\s*\(%:\|#\)\s*\(if\s\+\(\d\+\s*\($\|//\|/\*\||\|&\)\)\@!\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" containedin=cCppOutElse,cCppInIf,cCppInSkip contains=TOP,cPreProc
endif
syn region cIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
syn match cIncluded display contained "<[^>]*>"
syn match cInclude display "^\s*\(%:\|#\)\s*include\>\s*["<]" contains=cIncluded
"syn match cLineSkip "\\$"
syn cluster cPreProcGroup contains=cPreCondit,cIncluded,cInclude,cDefine,cErrInParen,cErrInBracket,cUserLabel,cSpecial,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cString,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cParen,cBracket,cMulti
syn cluster cPreProcGroup contains=cPreCondit,cIncluded,cInclude,cDefine,cErrInParen,cErrInBracket,cUserLabel,cSpecial,cOctalZero,cCppOutWrapper,cCppInWrapper,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cString,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cParen,cBracket,cMulti
syn region cDefine start="^\s*\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell
syn region cPreProc start="^\s*\(%:\|#\)\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell
" Highlight User Labels
syn cluster cMultiGroup contains=cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cBitField,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cCppParen,cCppBracket,cCppString
syn cluster cMultiGroup contains=cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cBitField,cOctalZero,cCppOutWrapper,cCppInWrapper,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cCppParen,cCppBracket,cCppString
syn region cMulti transparent start='?' skip='::' end=':' contains=ALLBUT,@cMultiGroup,@Spell
" Avoid matching foo::bar() in C++ by requiring that the next char is not ':'
syn cluster cLabelGroup contains=cUserLabel
@@ -354,6 +368,9 @@ hi def link cDefine Macro
hi def link cIncluded cString
hi def link cError Error
hi def link cStatement Statement
hi def link cCppInWrapper cCppOutWrapper
hi def link cCppOutWrapper cPreCondit
hi def link cPreConditMatch cPreCondit
hi def link cPreCondit PreCondit
hi def link cType Type
hi def link cConstant Constant
@@ -365,8 +382,10 @@ hi def link cComment Comment
hi def link cSpecial SpecialChar
hi def link cTodo Todo
hi def link cBadContinuation Error
hi def link cCppSkip cCppOut
hi def link cCppOut2 cCppOut
hi def link cCppOutSkip cCppOutIf2
hi def link cCppInElse2 cCppOutIf2
hi def link cCppOutIf2 cCppOut2 " Old syntax group for #if 0 body
hi def link cCppOut2 cCppOut " Old syntax group for #if of #if 0
hi def link cCppOut Comment
let b:current_syntax = "c"
+2 -2
View File
@@ -1,7 +1,7 @@
" Vim syntax file
" Language: dnsmasq(8) configuration file
" Maintainer: Thilo Six <T.Six@gmx.de>
" Last Change: 17 May 2011
" Last Change: 2011 Jul 14
" Credits: This file is a mix of cfg.vim, wget.vim and xf86conf.vim, credits go to:
" Igor N. Prischepoff
" Doug Kearns
@@ -58,7 +58,7 @@ syn match DnsmasqString "'.*'"
syn match DnsmasqComment "^#.*$" contains=DnsmasqTodo
syn match DnsmasqComment "\s#.*$" contains=DnsmasqTodo
syn keyword DnsmasqTodo FIXME TODO XXX NOT contained
syn keyword DnsmasqTodo FIXME TODO XXX NOTE contained
syn match DnsmasqKeywordSpecial "\<set\>:"me=e-1
syn match DnsmasqKeywordSpecial "\<tag\>:"me=e-1
+19 -12
View File
@@ -1,9 +1,10 @@
" Vim syntax file
" Language: Configuration File (ini file) for MSDOS/MS Windows
" Version Info: @(#)dosini.vim 1.6 97/12/15 08:54:12
" Author: Sean M. McKee <mckee@misslink.net>
" Maintainer: Nima Talebi <nima@it.net.au>
" Last Change: Mon, 26 Jun 2006 22:07:28 +1000
" Language: Configuration File (ini file) for MSDOS/MS Windows
" Version: 2.0
" Original Author: Sean M. McKee <mckee@misslink.net>
" Previous Maintainer: Nima Talebi <nima@it.net.au>
" Current Maintainer: Hong Xu <xuhdev@gmail.com>
" Last Change: 2011 Jul 21
" For version 5.x: Clear all syntax items
@@ -17,9 +18,13 @@ endif
" shut case off
syn case ignore
syn match dosiniLabel "^.\{-}="
syn region dosiniHeader start="^\[" end="\]"
syn match dosiniComment "^;.*$"
syn match dosiniBool "\<\(yes\|no\|y\|n\|true\|false\)\>"
syn match dosiniNumber "\<\d\+\>"
syn match dosiniNumber "\<\d*\.\d\+\>"
syn match dosiniNumber "\<\d\+e[+-]\=\d\+\>"
syn match dosiniLabel "^.\{-}="
syn region dosiniHeader start="^\s*\[" end="\]"
syn match dosiniComment "^[#;].*$"
" Define the default highlighting.
" For version 5.7 and earlier: only when not done already
@@ -32,13 +37,15 @@ if version >= 508 || !exists("did_dosini_syntax_inits")
command -nargs=+ HiLink hi def link <args>
endif
HiLink dosiniHeader Special
HiLink dosiniComment Comment
HiLink dosiniLabel Type
HiLink dosiniBool Boolean
HiLink dosiniNumber Number
HiLink dosiniHeader Special
HiLink dosiniComment Comment
HiLink dosiniLabel Type
delcommand HiLink
endif
let b:current_syntax = "dosini"
" vim:ts=8
" vim: sts=2 sw=2 et
+2 -1
View File
@@ -2,7 +2,7 @@
" Language: gnash(1) configuration files
" http://www.gnu.org/software/gnash/manual/gnashuser.html#gnashrc
" Maintainer: Thilo Six <T.Six@gmx.de>
" Last Change: 17 May 2011
" Last Change: 2011 Jul 02
" Credidts: derived from readline.vim
" Nikolai Weibull
"
@@ -32,6 +32,7 @@ syn case match
syn match GnashSet '^\s*set\>'
syn match GnashSet '^\s*append\>'
syn case ignore
syn match GnashKeyword '\<CertDir\>'
syn match GnashKeyword '\<ASCodingErrorsVerbosity\>'
syn match GnashKeyword '\<CertFile\>'
+13 -4
View File
@@ -1,7 +1,7 @@
" Vim syntax file
" Language: Vim help file
" Maintainer: Bram Moolenaar (Bram@vim.org)
" Last Change: 2010 Nov 03
" Last Change: 2011 Jul 11
" Quit when a (custom) syntax file was already loaded
if exists("b:current_syntax")
@@ -21,8 +21,13 @@ else
syn match helpHyperTextEntry "\*[#-)!+-~]\+\*\s"he=e-1 contains=helpStar
syn match helpHyperTextEntry "\*[#-)!+-~]\+\*$" contains=helpStar
endif
syn match helpBar contained "|" conceal
syn match helpStar contained "\*" conceal
if has("conceal")
syn match helpBar contained "|" conceal
syn match helpStar contained "\*" conceal
else
syn match helpBar contained "|"
syn match helpStar contained "\*"
endif
syn match helpNormal "|.*====*|"
syn match helpNormal ":|vim:|" " for :help modeline
syn match helpVim "Vim version [0-9.a-z]\+"
@@ -31,7 +36,11 @@ syn match helpOption "'[a-z]\{2,\}'"
syn match helpOption "'t_..'"
syn match helpHeader "\s*\zs.\{-}\ze\s\=\~$" nextgroup=helpIgnore
syn match helpGraphic ".* \ze`$" nextgroup=helpIgnore
syn match helpIgnore "." contained conceal
if has("conceal")
syn match helpIgnore "." contained conceal
else
syn match helpIgnore "." contained
endif
syn keyword helpNote note Note NOTE note: Note: NOTE: Notes Notes:
syn match helpSpecial "\<N\>"
syn match helpSpecial "\<N\.$"me=e-1
+5 -3
View File
@@ -1,7 +1,7 @@
" Vim syntax file
" Language: pam(8) configuration file
" Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2006-04-19
" Latest Revision: 2011-08-03
if exists("b:current_syntax")
@@ -33,7 +33,7 @@ syn match pamconfTypeLineCont contained '\\$'
\ pamconfTypeLineCont skipwhite skipnl
syn keyword pamconfControl contained requisite required sufficient
\ optional
\ optional include substack
\ nextgroup=pamconfMPath,
\ pamconfControlLineContH skipwhite
@@ -57,7 +57,9 @@ syn keyword pamconfControlValues contained success open_err symbol_err
\ bad_item and default
\ nextgroup=pamconfControlValueEq
syn match pamconfControlValueEq contained '=' nextgroup=pamconfControlAction
syn match pamconfControlValueEq contained '='
\ nextgroup=pamconfControlActionN,
\ pamconfControlAction
syn match pamconfControlActionN contained '\d\+\>'
\ nextgroup=pamconfControlValues,
+89 -47
View File
@@ -1,7 +1,7 @@
" Vim syntax file
" Language: php PHP 3/4/5
" Maintainer: Jason Woofenden <jason@jasonwoof.com>
" Last Change: April 28, 2011
" Last Change: July 29, 2011
" URL: https://gitorious.org/jasonwoof/vim-syntax/blobs/master/php.vim
" Former Maintainers: Peter Hodge <toomuchphp-vim@yahoo.com>
" Debian VIM Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
@@ -54,14 +54,6 @@
" the string would be highlighted as an error, what is incorrect.
" ii) Same problem if you are setting php_folding = 2 with a closing
" } inside an string on the first line of this string.
"
" - A double-quoted string like this:
" "$foo->someVar->someOtherVar->bar"
" will highight '->someOtherVar->bar' as though they will be parsed
" as object member variables, but PHP only recognizes the first
" object member variable ($foo->someVar).
"
"
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
@@ -131,7 +123,7 @@ syn keyword phpCoreConstant PHP_VERSION PHP_OS DEFAULT_INCLUDE_PATH PEAR_INSTALL
syn case ignore
syn keyword phpConstant __LINE__ __FILE__ __FUNCTION__ __METHOD__ __CLASS__ contained
syn keyword phpConstant __LINE__ __FILE__ __FUNCTION__ __METHOD__ __CLASS__ __DIR__ __NAMESPACE__ contained
" Function and Methods ripped from php_manual_de.tar.gz Jan 2003
@@ -273,7 +265,7 @@ syn keyword phpRepeat as do endfor endforeach endwhile for foreach while contai
syn keyword phpLabel case default switch contained
" Statement
syn keyword phpStatement return break continue exit contained
syn keyword phpStatement return break continue exit goto contained
" Keyword
syn keyword phpKeyword var const contained
@@ -282,7 +274,7 @@ syn keyword phpKeyword var const contained
syn keyword phpType bool[ean] int[eger] real double float string array object NULL contained
" Structure
syn keyword phpStructure extends implements instanceof parent self contained
syn keyword phpStructure namespace extends implements instanceof parent self contained
" Operator
syn match phpOperator "[-=+%^&|*!.~?:]" contained display
@@ -302,11 +294,41 @@ syn match phpIdentifierSimply "${\h\w*}" contains=phpOperator,phpParent contai
syn region phpIdentifierComplex matchgroup=phpParent start="{\$"rs=e-1 end="}" contains=phpIdentifier,phpMemberSelector,phpVarSelector,phpIdentifierComplexP contained extend
syn region phpIdentifierComplexP matchgroup=phpParent start="\[" end="]" contains=@phpClInside contained
" Interpolated indentifiers (inside strings)
syn match phpBrackets "[][}{]" contained display
" errors
syn match phpInterpSimpleError "\[[^]]*\]" contained display " fallback (if nothing else matches)
syn match phpInterpSimpleError "->[^a-zA-Z_]" contained display
" make sure these stay above the correct DollarCurlies so they don't take priority
syn match phpInterpBogusDollarCurley "${[^}]*}" contained display " fallback (if nothing else matches)
syn match phpinterpSimpleBracketsInner "\w\+" contained
syn match phpInterpSimpleBrackets "\[\h\w*]" contained contains=phpBrackets,phpInterpSimpleBracketsInner
syn match phpInterpSimpleBrackets "\[\d\+]" contained contains=phpBrackets,phpInterpSimpleBracketsInner
syn match phpInterpSimpleBrackets "\[0[xX]\x\+]" contained contains=phpBrackets,phpInterpSimpleBracketsInner
syn match phpInterpSimple "\$\h\w*\(\[[^]]*\]\|->\h\w*\)\?" contained contains=phpInterpSimpleBrackets,phpIdentifier,phpInterpSimpleError,phpMethods,phpMemberSelector display
syn match phpInterpVarname "\h\w*" contained
syn match phpInterpMethodName "\h\w*" contained " default color
syn match phpInterpSimpleCurly "\${\h\w*}" contains=phpInterpVarname contained extend
syn region phpInterpDollarCurley1Helper matchgroup=phpParent start="{" end="\[" contains=phpInterpVarname contained
syn region phpInterpDollarCurly1 matchgroup=phpParent start="\${\h\w*\["rs=s+1 end="]}" contains=phpInterpDollarCurley1Helper,@phpClConst contained extend
syn match phpInterpDollarCurley2Helper "{\h\w*->" contains=phpBrackets,phpInterpVarname,phpMemberSelector contained
syn region phpInterpDollarCurly2 matchgroup=phpParent start="\${\h\w*->"rs=s+1 end="}" contains=phpInterpDollarCurley2Helper,phpInterpMethodName contained
syn match phpInterpBogusDollarCurley "${\h\w*->}" contained display
syn match phpInterpBogusDollarCurley "${\h\w*\[]}" contained display
syn region phpInterpComplex matchgroup=phpParent start="{\$"rs=e-1 end="}" contains=phpIdentifier,phpMemberSelector,phpVarSelector,phpIdentifierComplexP contained extend
syn region phpIdentifierComplexP matchgroup=phpParent start="\[" end="]" contains=@phpClInside contained
" define a cluster to get all interpolation syntaxes for double-quoted strings
syn cluster phpInterpDouble contains=phpInterpSimple,phpInterpSimpleCurly,phpInterpDollarCurly1,phpInterpDollarCurly2,phpInterpBogusDollarCurley,phpInterpComplex
" Methoden
syn match phpMethodsVar "->\h\w*" contained contains=phpMethods,phpMemberSelector display
" Include
syn keyword phpInclude include require include_once require_once contained
syn keyword phpInclude include require include_once require_once use contained
" Peter Hodge - added 'clone' keyword
" Define
@@ -322,12 +344,18 @@ syn match phpNumber "\<0x\x\{1,8}\>" contained display
" Float
syn match phpFloat "\(-\=\<\d+\|-\=\)\.\d\+\>" contained display
" SpecialChar
syn match phpSpecialChar "\\[abcfnrtyv\\]" contained display
syn match phpSpecialChar "\\\d\{3}" contained contains=phpOctalError display
syn match phpSpecialChar "\\x\x\{2}" contained display
syn match phpDoubleSpecialChar "\\\"" contained display
syn match phpSingleSpecialChar "\\[\\']" contained display
" Backslash escapes
syn case match
" for double quotes and heredoc
syn match phpBackslashSequences "\\[fnrtv\\\"$]" contained display
syn match phpBackslashSequences "\\\d\{1,3}" contained contains=phpOctalError display
syn match phpBackslashSequences "\\x\x\{1,2}" contained display
" additional sequence for double quotes only
syn match phpBackslashDoubleQuote "\\[\"]" contained display
" for single quotes only
syn match phpBackslashSingleQuote "\\[\\']" contained display
syn case ignore
" Error
syn match phpOctalError "[89]" contained display
@@ -356,23 +384,32 @@ endif
" String
if exists("php_parent_error_open")
syn region phpStringDouble matchgroup=None start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@phpAddStrings,phpIdentifier,phpSpecialChar,phpIdentifierSimply,phpIdentifierComplex,phpDoubleSpecialChar contained keepend
syn region phpBacktick matchgroup=None start=+`+ skip=+\\\\\|\\"+ end=+`+ contains=@phpAddStrings,phpIdentifier,phpSpecialChar,phpIdentifierSimply,phpIdentifierComplex contained keepend
syn region phpStringSingle matchgroup=None start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=@phpAddStrings,phpSingleSpecialChar contained keepend
syn region phpStringDouble matchgroup=None start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@phpAddStrings,phpBackslashSequences,phpBackslashDoubleQuote,@phpInterpDouble contained keepend
syn region phpBacktick matchgroup=None start=+`+ skip=+\\\\\|\\"+ end=+`+ contains=@phpAddStrings,phpIdentifier,phpBackslashSequences,phpIdentifierSimply,phpIdentifierComplex contained keepend
syn region phpStringSingle matchgroup=None start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=@phpAddStrings,phpBackslashSingleQuote contained keepend
else
syn region phpStringDouble matchgroup=None start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@phpAddStrings,phpIdentifier,phpSpecialChar,phpIdentifierSimply,phpIdentifierComplex,phpDoubleSpecialChar contained extend keepend
syn region phpBacktick matchgroup=None start=+`+ skip=+\\\\\|\\"+ end=+`+ contains=@phpAddStrings,phpIdentifier,phpSpecialChar,phpIdentifierSimply,phpIdentifierComplex contained extend keepend
syn region phpStringSingle matchgroup=None start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=@phpAddStrings,phpSingleSpecialChar contained keepend extend
syn region phpStringDouble matchgroup=None start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@phpAddStrings,phpBackslashSequences,phpBackslashDoubleQuote,@phpInterpDouble contained extend keepend
syn region phpBacktick matchgroup=None start=+`+ skip=+\\\\\|\\"+ end=+`+ contains=@phpAddStrings,phpIdentifier,phpBackslashSequences,phpIdentifierSimply,phpIdentifierComplex contained extend keepend
syn region phpStringSingle matchgroup=None start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=@phpAddStrings,phpBackslashSingleQuote contained keepend extend
endif
" HereDoc
" HereDoc and NowDoc
if version >= 600
syn case match
syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\I\i*\)$" end="^\z1\(;\=$\)\@=" contained contains=phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar keepend extend
" HereDoc
syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\(\"\=\)\z(\I\i*\)\2$" end="^\z1\(;\=$\)\@=" contained contains=phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpBackslashSequences,phpMethodsVar keepend extend
" including HTML,JavaScript,SQL even if not enabled via options
syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(html\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@=" contained contains=@htmlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar keepend extend
syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(sql\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@=" contained contains=@sqlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpSpecialChar,phpMethodsVar keepend extend
syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\z(\(\I\i*\)\=\(javascript\)\c\(\i*\)\)$" end="^\z1\(;\=$\)\@=" contained contains=@htmlJavascript,phpIdentifierSimply,phpIdentifier,phpIdentifierComplex,phpSpecialChar,phpMethodsVar keepend extend
syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\(\"\=\)\z(\(\I\i*\)\=\(html\)\c\(\i*\)\)\2$" end="^\z1\(;\=$\)\@=" contained contains=@htmlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpBackslashSequences,phpMethodsVar keepend extend
syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\(\"\=\)\z(\(\I\i*\)\=\(sql\)\c\(\i*\)\)\2$" end="^\z1\(;\=$\)\@=" contained contains=@sqlTop,phpIdentifier,phpIdentifierSimply,phpIdentifierComplex,phpBackslashSequences,phpMethodsVar keepend extend
syn region phpHereDoc matchgroup=Delimiter start="\(<<<\)\@<=\(\"\=\)\z(\(\I\i*\)\=\(javascript\)\c\(\i*\)\)\2$" end="^\z1\(;\=$\)\@=" contained contains=@htmlJavascript,phpIdentifierSimply,phpIdentifier,phpIdentifierComplex,phpBackslashSequences,phpMethodsVar keepend extend
" NowDoc
syn region phpNowDoc matchgroup=Delimiter start="\(<<<\)\@<='\z(\I\i*\)'$" end="^\z1\(;\=$\)\@=" contained keepend extend
" including HTML,JavaScript,SQL even if not enabled via options
syn region phpNowDoc matchgroup=Delimiter start="\(<<<\)\@<='\z(\(\I\i*\)\=\(html\)\c\(\i*\)\)'$" end="^\z1\(;\=$\)\@=" contained contains=@htmlTop keepend extend
syn region phpNowDoc matchgroup=Delimiter start="\(<<<\)\@<='\z(\(\I\i*\)\=\(sql\)\c\(\i*\)\)'$" end="^\z1\(;\=$\)\@=" contained contains=@sqlTop keepend extend
syn region phpNowDoc matchgroup=Delimiter start="\(<<<\)\@<='\z(\(\I\i*\)\=\(javascript\)\c\(\i*\)\)'$" end="^\z1\(;\=$\)\@=" contained contains=@htmlJavascript keepend extend
syn case ignore
endif
@@ -389,7 +426,7 @@ else
endif
syn cluster phpClConst contains=phpFunctions,phpIdentifier,phpConditional,phpRepeat,phpStatement,phpOperator,phpRelation,phpStringSingle,phpStringDouble,phpBacktick,phpNumber,phpFloat,phpKeyword,phpType,phpBoolean,phpStructure,phpMethodsVar,phpConstant,phpCoreConstant,phpException
syn cluster phpClInside contains=@phpClConst,phpComment,phpLabel,phpParent,phpParentError,phpInclude,phpHereDoc
syn cluster phpClInside contains=@phpClConst,phpComment,phpLabel,phpParent,phpParentError,phpInclude,phpHereDoc,phpNowDoc
syn cluster phpClFunction contains=@phpClInside,phpDefine,phpParentError,phpStorageClass
syn cluster phpClTop contains=@phpClFunction,phpFoldFunction,phpFoldClass,phpFoldInterface,phpFoldTry,phpFoldCatch
@@ -452,17 +489,14 @@ else
syn keyword phpStorageClass final global private protected public static contained
endif
" TODO: fold on "trait". For now just make sure it gets colored:
syn keyword phpStructure trait
" ================================================================
" Peter Hodge - June 9, 2006
" Some of these changes (highlighting isset/unset/echo etc) are not so
" critical, but they make things more colourful. :-)
" corrected highlighting for an escaped '\$' inside a double-quoted string
syn match phpSpecialChar "\\\$" contained display
" highlight object variables inside strings
syn match phpMethodsVar "->\h\w*" contained contains=phpMethods,phpMemberSelector display containedin=phpStringDouble
" highlight constant E_STRICT
syntax case match
syntax keyword phpCoreConstant E_STRICT contained
@@ -613,13 +647,21 @@ if version >= 508 || !exists("did_php_syn_inits")
HiLink phpType Type
HiLink phpInclude Include
HiLink phpDefine Define
HiLink phpSpecialChar SpecialChar
HiLink phpDoubleSpecialChar SpecialChar
HiLink phpSingleSpecialChar SpecialChar
HiLink phpBackslashSequences SpecialChar
HiLink phpBackslashDoubleQuote SpecialChar
HiLink phpBackslashSingleQuote SpecialChar
HiLink phpParent Delimiter
HiLink phpBrackets Delimiter
HiLink phpIdentifierConst Delimiter
HiLink phpParentError Error
HiLink phpOctalError Error
HiLink phpInterpSimpleError Error
HiLink phpInterpBogusDollarCurley Error
HiLink phpInterpDollarCurly1 Error
HiLink phpInterpDollarCurly2 Error
HiLink phpInterpSimpleBracketsInner String
HiLink phpInterpSimpleCurly Delimiter
HiLink phpInterpVarname Identifier
HiLink phpTodo Todo
HiLink phpMemberSelector Structure
if exists("php_oldStyle")
@@ -631,13 +673,13 @@ if version >= 508 || !exists("did_php_syn_inits")
hi phpIdentifier guifg=DarkGray ctermfg=Brown
hi phpIdentifierSimply guifg=DarkGray ctermfg=Brown
else
HiLink phpIntVar Identifier
HiLink phpEnvVar Identifier
HiLink phpOperator Operator
HiLink phpVarSelector Operator
HiLink phpRelation Operator
HiLink phpIdentifier Identifier
HiLink phpIdentifierSimply Identifier
HiLink phpIntVar Identifier
HiLink phpEnvVar Identifier
HiLink phpOperator Operator
HiLink phpVarSelector Operator
HiLink phpRelation Operator
HiLink phpIdentifier Identifier
HiLink phpIdentifierSimply Identifier
endif
delcommand HiLink
+18 -16
View File
@@ -1,7 +1,7 @@
" Vim syntax file
" Language: Verilog
" Maintainer: Mun Johl <Mun.Johl@emulex.com>
" Last Update: Fri Oct 13 11:44:32 PDT 2006
" Last Update: Wed Jul 20 16:04:19 PDT 2011
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
@@ -11,11 +11,13 @@ elseif exists("b:current_syntax")
finish
endif
" Set the local value of the 'iskeyword' option
" Set the local value of the 'iskeyword' option.
" NOTE: '?' was added so that verilogNumber would be processed correctly when
" '?' is the last character of the number.
if version >= 600
setlocal iskeyword=@,48-57,_,192-255
setlocal iskeyword=@,48-57,63,_,192-255
else
set iskeyword=@,48-57,_,192-255
set iskeyword=@,48-57,63,_,192-255
endif
" A bunch of useful Verilog keywords
@@ -48,7 +50,7 @@ syn keyword verilogLabel begin end fork join
syn keyword verilogConditional if else case casex casez default endcase
syn keyword verilogRepeat forever repeat while for
syn keyword verilogTodo contained TODO
syn keyword verilogTodo contained TODO FIXME
syn match verilogOperator "[&|~><!)(*#%@+/=?:;}{,.\^\-\[\]]"
@@ -113,17 +115,17 @@ if version >= 508 || !exists("did_verilog_syn_inits")
" The default highlighting.
HiLink verilogCharacter Character
HiLink verilogConditional Conditional
HiLink verilogRepeat Repeat
HiLink verilogString String
HiLink verilogTodo Todo
HiLink verilogComment Comment
HiLink verilogConstant Constant
HiLink verilogLabel Label
HiLink verilogNumber Number
HiLink verilogOperator Special
HiLink verilogStatement Statement
HiLink verilogGlobal Define
HiLink verilogDirective SpecialComment
HiLink verilogRepeat Repeat
HiLink verilogString String
HiLink verilogTodo Todo
HiLink verilogComment Comment
HiLink verilogConstant Constant
HiLink verilogLabel Label
HiLink verilogNumber Number
HiLink verilogOperator Special
HiLink verilogStatement Statement
HiLink verilogGlobal Define
HiLink verilogDirective SpecialComment
HiLink verilogEscape Special
delcommand HiLink
+11 -11
View File
@@ -1,5 +1,5 @@
===============================================================================
= B i e n v e n u e dans le T u t o r i e l de V I M - Version 1.7.fr.2 =
= B i e n v e n u e dans l e T u t o r i e l de V I M - Version 1.7 =
===============================================================================
Vim est un éditeur très puissant qui a trop de commandes pour pouvoir
@@ -67,7 +67,7 @@ NOTE : Les touches fl
4. Si vous avez mémorisé ces étapes et êtes confiant, effectuez les étapes
1 à 3 pour sortir puis rentrer dans l'éditeur.
NOTE : :q! <Entrée> annule tous les changements que vous avez fait. Dans
NOTE : :q! <Entrée> annule tous les changements que vous avez faits. Dans
quelques leçons, vous apprendrez à enregistrer les changements.
5. Déplacez le curseur à la Leçon 1.3.
@@ -260,7 +260,7 @@ NOTE : La lettre d appara
Une courte liste de mouvements :
w - jusqu'au début du prochain mot, en EXCLUANT son premier caractère.
e - jusqu'à la fin du mot courant, en EXCLUANT son denier caractère.
e - jusqu'à la fin du mot courant, en EXCLUANT son dernier caractère.
$ - jusqu'à la fin de la ligne, en INCLUANT son dernier caractère.
Ainsi, taper de va effacer depuis le curseur jusqu'à la fin du mot.
@@ -299,7 +299,7 @@ NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, d
Outre la combinaison de l'opérateur d'effacement avec un déplacement
mentionné ci-dessus, vous pouvez insérer un nombre (quantificateur)
pour effacez encore plus :
pour effacer encore plus :
d nombre déplacement
1. Déplacez le curseur vers le premier mot en MAJUSCULES dans la ligne
@@ -704,7 +704,7 @@ NOTE : Si vous quittez Vim et le red
3. Appuyez : . En bas de l'écran :'<,'> va apparaître.
4. Tapez w TEST , où TEST est un nom de fichier qui n'existe pas.
Vérifiez que vous voyez :'<,'>w TEST avant de d'appuyer sur Entrée.
Vérifiez que vous voyez :'<,'>w TEST avant de d'appuyer sur <Entrée>.
5. Vim va enregistrer les lignes sélectionnées dans le fichier TEST.
Utilisez :!dir ou !ls pour le voir. Ne l'effacez pas encore !
@@ -725,7 +725,7 @@ NOTE : L'appui de v d
1. Placez le curseur juste au-dessus de cette ligne.
NOTE : Après avoir exécuté l'étape 2 vous verrez du texte de la Leçon 5.3.
Puis déplacez vous vers le bas pour voir cette leçon à nouveau.
Puis déplacez-vous vers le bas pour voir cette leçon à nouveau.
2. Maintenant récupérez votre fichier TEST en utilisant la commande :r TEST
où TEST est le nom de votre fichier.
@@ -854,7 +854,7 @@ NOTE : Le mode Remplacement est comme le mode Insertion, mais tous les
5. Tapez p pour coller le texte. Puis tapez : un second <Échap> .
6. Utilisez le mode Visuel pour sélectionner "élément", copiez le avec y ,
déplacez vous à la fin de la ligne suivant avec j$ et collez le texte
déplacez-vous à la fin de la ligne suivant avec j$ et collez le texte
à cet endroit avec p .
---> a) ceci est le premier élément.
@@ -1012,8 +1012,8 @@ NOTE : Le compl
Ceci conclut le Tutoriel Vim. Le but était de vous donner un bref aperçu de
l'éditeur Vim, juste assez pour vous permettre d'utiliser l'éditeur
relativement facilement. Il est loin d'être complet, vu que Vim a beaucoup
beaucoup plus de commandes. Un Manuel de l'utilisateur est disponible en
anglais : :help user-manual .
plus de commandes. Un Manuel de l'utilisateur est disponible en anglais :
:help user-manual
Pour continuer à découvrir et à apprendre Vim, il existe un livre traduit en
français. Il parle plus de Vi que de Vim, mais pourra vous être utile.
@@ -1030,9 +1030,9 @@ NOTE : Le compl
Université d'État du Colorado. E-mail : bware@mines.colorado.edu.
Modifié pour Vim par Bram Moolenar.
Traduit en Français par Adrien Beau, en avril 2001.
Traduit en français par Adrien Beau, en avril 2001.
Dernières mises à jour par Dominique Pellé.
E-mail : dominique.pelle@gmail.com
Last Change : 2010 May 23
Last Change : 2011 Jun 25
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+11 -11
View File
@@ -1,5 +1,5 @@
===============================================================================
= B i e n v e n u e dans le T u t o r i e l de V I M - Version 1.7.fr.2 =
= B i e n v e n u e dans l e T u t o r i e l de V I M - Version 1.7 =
===============================================================================
Vim est un éditeur très puissant qui a trop de commandes pour pouvoir
@@ -67,7 +67,7 @@ NOTE : Les touches fléchées devraient également fonctionner. Mais en utilisan
4. Si vous avez mémorisé ces étapes et êtes confiant, effectuez les étapes
1 à 3 pour sortir puis rentrer dans l'éditeur.
NOTE : :q! <Entrée> annule tous les changements que vous avez fait. Dans
NOTE : :q! <Entrée> annule tous les changements que vous avez faits. Dans
quelques leçons, vous apprendrez à enregistrer les changements.
5. Déplacez le curseur à la Leçon 1.3.
@@ -260,7 +260,7 @@ NOTE : La lettre d apparaîtra sur la dernière ligne de l'écran lors de
Une courte liste de mouvements :
w - jusqu'au début du prochain mot, en EXCLUANT son premier caractère.
e - jusqu'à la fin du mot courant, en EXCLUANT son denier caractère.
e - jusqu'à la fin du mot courant, en EXCLUANT son dernier caractère.
$ - jusqu'à la fin de la ligne, en INCLUANT son dernier caractère.
Ainsi, taper de va effacer depuis le curseur jusqu'à la fin du mot.
@@ -299,7 +299,7 @@ NOTE : Le seul appui d'un mouvement en mode Normal, sans commande, déplace le
Outre la combinaison de l'opérateur d'effacement avec un déplacement
mentionné ci-dessus, vous pouvez insérer un nombre (quantificateur)
pour effacez encore plus :
pour effacer encore plus :
d nombre déplacement
1. Déplacez le curseur vers le premier mot en MAJUSCULES dans la ligne
@@ -704,7 +704,7 @@ NOTE : Si vous quittez Vim et le redémarrez de nouveau avec le fichier TEST,
3. Appuyez : . En bas de l'écran :'<,'> va apparaître.
4. Tapez w TEST , où TEST est un nom de fichier qui n'existe pas.
Vérifiez que vous voyez :'<,'>w TEST avant de d'appuyer sur Entrée.
Vérifiez que vous voyez :'<,'>w TEST avant de d'appuyer sur <Entrée>.
5. Vim va enregistrer les lignes sélectionnées dans le fichier TEST.
Utilisez :!dir ou !ls pour le voir. Ne l'effacez pas encore !
@@ -725,7 +725,7 @@ NOTE : L'appui de v démarre la sélection Visuelle. Vous pouvez déplacer le
1. Placez le curseur juste au-dessus de cette ligne.
NOTE : Après avoir exécuté l'étape 2 vous verrez du texte de la Leçon 5.3.
Puis déplacez vous vers le bas pour voir cette leçon à nouveau.
Puis déplacez-vous vers le bas pour voir cette leçon à nouveau.
2. Maintenant récupérez votre fichier TEST en utilisant la commande :r TEST
où TEST est le nom de votre fichier.
@@ -854,7 +854,7 @@ NOTE : Le mode Remplacement est comme le mode Insertion, mais tous les
5. Tapez p pour coller le texte. Puis tapez : un second <Échap> .
6. Utilisez le mode Visuel pour sélectionner "élément", copiez le avec y ,
déplacez vous à la fin de la ligne suivant avec j$ et collez le texte
déplacez-vous à la fin de la ligne suivant avec j$ et collez le texte
à cet endroit avec p .
---> a) ceci est le premier élément.
@@ -1012,8 +1012,8 @@ NOTE : Le complètement fonctionne pour de nombreuses commandes. Essayez
Ceci conclut le Tutoriel Vim. Le but était de vous donner un bref aperçu de
l'éditeur Vim, juste assez pour vous permettre d'utiliser l'éditeur
relativement facilement. Il est loin d'être complet, vu que Vim a beaucoup
beaucoup plus de commandes. Un Manuel de l'utilisateur est disponible en
anglais : :help user-manual .
plus de commandes. Un Manuel de l'utilisateur est disponible en anglais :
:help user-manual
Pour continuer à découvrir et à apprendre Vim, il existe un livre traduit en
français. Il parle plus de Vi que de Vim, mais pourra vous être utile.
@@ -1030,9 +1030,9 @@ NOTE : Le complètement fonctionne pour de nombreuses commandes. Essayez
Université d'État du Colorado. E-mail : bware@mines.colorado.edu.
Modifié pour Vim par Bram Moolenar.
Traduit en Français par Adrien Beau, en avril 2001.
Traduit en français par Adrien Beau, en avril 2001.
Dernières mises à jour par Dominique Pellé.
E-mail : dominique.pelle@gmail.com
Last Change : 2010 May 23
Last Change : 2011 Jun 25
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+31 -8
View File
@@ -142,6 +142,7 @@ static char *null_libintl_bindtextdomain(const char *, const char *);
static int dyn_libintl_init(char *dir);
static void dyn_libintl_end(void);
static wchar_t *oldenv = NULL;
static HINSTANCE hLibintlDLL = 0;
static char *(*dyn_libintl_gettext)(const char *) = null_libintl_gettext;
static char *(*dyn_libintl_textdomain)(const char *) = null_libintl_textdomain;
@@ -339,8 +340,10 @@ DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /* lpReserved */)
inc_cRefThisDLL()
{
#ifdef FEAT_GETTEXT
if (g_cRefThisDll == 0)
if (g_cRefThisDll == 0) {
dyn_gettext_load();
oldenv = GetEnvironmentStringsW();
}
#endif
InterlockedIncrement((LPLONG)&g_cRefThisDll);
}
@@ -349,8 +352,13 @@ inc_cRefThisDLL()
dec_cRefThisDLL()
{
#ifdef FEAT_GETTEXT
if (InterlockedDecrement((LPLONG)&g_cRefThisDll) == 0)
if (InterlockedDecrement((LPLONG)&g_cRefThisDll) == 0) {
dyn_gettext_free();
if (oldenv != NULL) {
FreeEnvironmentStringsW(oldenv);
oldenv = NULL;
}
}
#else
InterlockedDecrement((LPLONG)&g_cRefThisDll);
#endif
@@ -586,8 +594,23 @@ STDMETHODIMP CShellExt::QueryContextMenu(HMENU hMenu,
// Initialize m_cntOfHWnd to 0
m_cntOfHWnd = 0;
// Retrieve all the vim instances
EnumWindows(EnumWindowsProc, (LPARAM)this);
HKEY keyhandle;
bool showExisting = true;
// Check whether "Edit with existing Vim" entries are disabled.
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Vim\\Gvim", 0,
KEY_READ, &keyhandle) == ERROR_SUCCESS)
{
if (RegQueryValueEx(keyhandle, "DisableEditWithExisting", 0, NULL,
NULL, NULL) == ERROR_SUCCESS)
showExisting = false;
RegCloseKey(keyhandle);
}
// Retrieve all the vim instances, unless disabled.
if (showExisting)
EnumWindows(EnumWindowsProc, (LPARAM)this);
if (cbFiles > 1)
{
@@ -890,8 +913,8 @@ STDMETHODIMP CShellExt::InvokeGvim(HWND hParent,
NULL, // Process handle not inheritable.
NULL, // Thread handle not inheritable.
FALSE, // Set handle inheritance to FALSE.
0, // No creation flags.
NULL, // Use parent's environment block.
oldenv == NULL ? 0 : CREATE_UNICODE_ENVIRONMENT,
oldenv, // Use unmodified environment block.
NULL, // Use parent's starting directory.
&si, // Pointer to STARTUPINFO structure.
&pi) // Pointer to PROCESS_INFORMATION structure.
@@ -972,8 +995,8 @@ STDMETHODIMP CShellExt::InvokeSingleGvim(HWND hParent,
NULL, // Process handle not inheritable.
NULL, // Thread handle not inheritable.
FALSE, // Set handle inheritance to FALSE.
0, // No creation flags.
NULL, // Use parent's environment block.
oldenv == NULL ? 0 : CREATE_UNICODE_ENVIRONMENT,
oldenv, // Use unmodified environment block.
NULL, // Use parent's starting directory.
&si, // Pointer to STARTUPINFO structure.
&pi) // Pointer to PROCESS_INFORMATION structure.
+64 -5
View File
@@ -11,9 +11,9 @@ The file "feature.h" can be edited to match your preferences. You can skip
this, then you will get the default behavior as is documented, which should
be fine for most people.
With the exception of the last two sections (Windows 3.1 and MS-DOS),
this document assumes that you are building Vim for Win32
(Windows NT/2000/XP/2003/Vista and Windows 95/98/Me)
With the exception of two sections (Windows 3.1 and MS-DOS), this document
assumes that you are building Vim for Win32 or later.
(Windows 95/98/Me/NT/2000/XP/2003/Vista/7)
Contents:
@@ -27,6 +27,9 @@ Contents:
8. Windows 3.1
9. MS-DOS
10. Installing after building from sources
The currently preferred method is using the free Visual C++ Toolkit 2008
|msvc-2008-express|, the produced binary runs on most MS-Windows systems. If
you need the executable to run on Windows 98 or ME, use the 2003 one
@@ -407,5 +410,61 @@ Windows exe (GUI or console mode), or a 16-bit MS-DOS version.
NOTE: multi-byte support is broken in the Borland libraries, not everything
will work properly! Esp. handling multi-byte file names.
If you get all kinds of strange error messages when compiling, try adding
changing the file format from "unix" to "dos".
If you get all kinds of strange error messages when compiling, try changing
the file format from "unix" to "dos".
10. Installing after building from sources
==========================================
[provided by Michael Soyka]
After you've built the Vim binaries as described above, you're ready to
install Vim on your system. However, if you've obtained the Vim sources
using Mercurial or by downloading them as a unix tar file, you must first
create a "vim73" directory. If you instead downloaded the sources as
zip files, you can skip this setup as the zip archives already have the
correct directory structure.
A. Create a Vim "runtime" subdirectory named "vim73"
-----------------------------------------------------
If you obtained your Vim sources as zip files, you can skip this step.
Otherwise, continue reading.
Go to the directory that contains the Vim "src" and "runtime"
directories and create a new subdirectory named "vim73".
Copy the "runtime" files into "vim73":
copy runtime\* vim73
B. Copy the new binaries into the "vim73" directory
----------------------------------------------------
Regardless of how you installed the Vim sources, you need to copy the
new binaries you created above into "vim73":
copy src\*.exe vim73
copy src\GvimExt\gvimext.dll vim73
copy src\xxd\xxd.exe vim73
C. Move the "vim73" directory into the Vim installation subdirectory
---------------------------------------------------------------------
Move the "vim73" subdirectory into the subdirectory where you want Vim
to be installed. Typically, this subdirectory will be named "vim".
If you already have a "vim73" subdirectory in "vim", delete it first
by running its uninstal.exe program.
D. Install Vim
---------------
"cd" to your Vim installation subdirectory "vim\vim73" and run the
"install.exe" program. It will ask you a number of questions about
how you would like to have your Vim setup. Among these are:
- You can tell it to write a "_vimrc" file with your preferences in the
parent directory.
- It can also install an "Edit with Vim" entry in the Windows Explorer
popup menu.
- You can have it create batch files, so that you can run Vim from the
console or in a shell. You can select one of the directories in your
PATH or add the directory to PATH using the Windows Control Panel.
- Create entries for Vim on the desktop and in the Start menu.
Happy Vimming!
+175 -590
View File
@@ -2,16 +2,27 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
<data>
<int key="IBDocument.SystemTarget">1050</int>
<string key="IBDocument.SystemVersion">10F569</string>
<string key="IBDocument.InterfaceBuilderVersion">762</string>
<string key="IBDocument.AppKitVersion">1038.29</string>
<string key="IBDocument.HIToolboxVersion">461.00</string>
<string key="IBDocument.SystemVersion">11B26</string>
<string key="IBDocument.InterfaceBuilderVersion">1617</string>
<string key="IBDocument.AppKitVersion">1138</string>
<string key="IBDocument.HIToolboxVersion">566.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="NS.object.0">762</string>
<string key="NS.object.0">1617</string>
</object>
<array class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<integer value="620"/>
<array key="IBDocument.IntegratedClassDependencies">
<string>NSPopUpButton</string>
<string>NSButton</string>
<string>NSMenu</string>
<string>NSTextFieldCell</string>
<string>NSButtonCell</string>
<string>NSMenuItem</string>
<string>NSMatrix</string>
<string>NSCustomView</string>
<string>NSCustomObject</string>
<string>NSPopUpButtonCell</string>
<string>NSUserDefaultsController</string>
<string>NSTextField</string>
</array>
<array key="IBDocument.PluginDependencies">
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -31,7 +42,7 @@
<bool key="NSSharedInstance">YES</bool>
</object>
<object class="NSCustomView" id="225936320">
<nil key="NSNextResponder"/>
<reference key="NSNextResponder"/>
<int key="NSvFlags">268</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="NSTextField" id="176759725">
@@ -707,17 +718,65 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
</object>
</array>
<string key="NSFrameSize">{483, 290}</string>
<reference key="NSSuperview"/>
<string key="NSClassName">NSView</string>
</object>
<object class="NSCustomView" id="836854791">
<reference key="NSNextResponder"/>
<int key="NSvFlags">268</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="NSButton" id="1062985527">
<reference key="NSNextResponder" ref="836854791"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{18, 50}, {388, 18}}</string>
<reference key="NSSuperview" ref="836854791"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="209959448"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="37046570">
<int key="NSCellFlags">-2080244224</int>
<int key="NSCellFlags2">0</int>
<string key="NSContents">Prefer native full-screen support (requires Mac OS X 10.7)</string>
<reference key="NSSupport" ref="398275172"/>
<reference key="NSControlView" ref="1062985527"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
<reference key="NSNormalImage" ref="385062508"/>
<reference key="NSAlternateImage" ref="426852917"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
</object>
<object class="NSTextField" id="209959448">
<reference key="NSNextResponder" ref="836854791"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{17, 20}, {415, 28}}</string>
<reference key="NSSuperview" ref="836854791"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="485630420">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">272760832</int>
<string key="NSContents">You may want to disable this option when using multiple monitors since the native full-screen support renders secondary monitors useless.</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="209959448"/>
<reference key="NSBackgroundColor" ref="821672772"/>
<object class="NSColor" key="NSTextColor" id="1006868929">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC41AA</bytes>
</object>
</object>
</object>
<object class="NSButton" id="818542525">
<reference key="NSNextResponder" ref="836854791"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{18, 92}, {174, 18}}</string>
<string key="NSFrame">{{18, 146}, {174, 18}}</string>
<reference key="NSSuperview" ref="836854791"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="536705090"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="948343868">
<int key="NSCellFlags">67239424</int>
@@ -738,8 +797,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<object class="NSTextField" id="536705090">
<reference key="NSNextResponder" ref="836854791"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{17, 20}, {444, 70}}</string>
<string key="NSFrame">{{17, 74}, {444, 70}}</string>
<reference key="NSSuperview" ref="836854791"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="1062985527"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="581527358">
<int key="NSCellFlags">67239424</int>
@@ -748,17 +809,16 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="536705090"/>
<reference key="NSBackgroundColor" ref="821672772"/>
<object class="NSColor" key="NSTextColor" id="1006868929">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC41AA</bytes>
</object>
<reference key="NSTextColor" ref="1006868929"/>
</object>
</object>
<object class="NSButton" id="747671808">
<reference key="NSNextResponder" ref="836854791"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{18, 228}, {190, 18}}</string>
<string key="NSFrame">{{18, 282}, {190, 18}}</string>
<reference key="NSSuperview" ref="836854791"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="864999293"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="266098397">
<int key="NSCellFlags">67239424</int>
@@ -779,8 +839,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<object class="NSTextField" id="864999293">
<reference key="NSNextResponder" ref="836854791"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{17, 198}, {449, 28}}</string>
<string key="NSFrame">{{17, 252}, {449, 28}}</string>
<reference key="NSSuperview" ref="836854791"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="538640217"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="526715553">
<int key="NSCellFlags">67239424</int>
@@ -795,8 +857,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<object class="NSButton" id="538640217">
<reference key="NSNextResponder" ref="836854791"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{18, 174}, {133, 18}}</string>
<string key="NSFrame">{{18, 228}, {133, 18}}</string>
<reference key="NSSuperview" ref="836854791"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="202792916"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="1057999425">
<int key="NSCellFlags">67239424</int>
@@ -817,8 +881,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<object class="NSTextField" id="202792916">
<reference key="NSNextResponder" ref="836854791"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{17, 116}, {449, 56}}</string>
<string key="NSFrame">{{17, 170}, {449, 56}}</string>
<reference key="NSSuperview" ref="836854791"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="818542525"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="894089534">
<int key="NSCellFlags">67239424</int>
@@ -837,8 +903,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
</object>
</object>
</array>
<string key="NSFrameSize">{483, 264}</string>
<string key="NSFrameSize">{483, 318}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="747671808"/>
<string key="NSClassName">NSView</string>
</object>
</array>
@@ -1040,6 +1108,22 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
</object>
<int key="connectionID">1016</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">value: values.MMNativeFullScreen</string>
<reference key="source" ref="1062985527"/>
<reference key="destination" ref="547503666"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="1062985527"/>
<reference key="NSDestination" ref="547503666"/>
<string key="NSLabel">value: values.MMNativeFullScreen</string>
<string key="NSBinding">value</string>
<string key="NSKeyPath">values.MMNativeFullScreen</string>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">1031</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
@@ -1211,6 +1295,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference ref="747671808"/>
<reference ref="536705090"/>
<reference ref="818542525"/>
<reference ref="209959448"/>
<reference ref="1062985527"/>
</array>
<reference key="parent" ref="0"/>
<string key="objectName">Advanced</string>
@@ -1405,80 +1491,77 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<reference key="object" ref="948343868"/>
<reference key="parent" ref="818542525"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1017</int>
<reference key="object" ref="209959448"/>
<array class="NSMutableArray" key="children">
<reference ref="485630420"/>
</array>
<reference key="parent" ref="836854791"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1020</int>
<reference key="object" ref="485630420"/>
<reference key="parent" ref="209959448"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1028</int>
<reference key="object" ref="1062985527"/>
<array class="NSMutableArray" key="children">
<reference ref="37046570"/>
</array>
<reference key="parent" ref="836854791"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1029</int>
<reference key="object" ref="37046570"/>
<reference key="parent" ref="1062985527"/>
</object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
<string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES" key="-3.ImportedFromIB2"/>
<string key="1001.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES" key="1001.ImportedFromIB2"/>
<string key="1004.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1013.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1014.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="115.IBEditorWindowLastContentRect">{{329, 705}, {483, 290}}</string>
<string key="1017.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1020.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1028.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1029.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="115.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES" key="115.ImportedFromIB2"/>
<string key="116.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES" key="116.ImportedFromIB2"/>
<string key="117.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES" key="117.ImportedFromIB2"/>
<string key="119.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES" key="119.ImportedFromIB2"/>
<string key="120.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES" key="120.ImportedFromIB2"/>
<string key="121.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES" key="121.ImportedFromIB2"/>
<string key="122.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES" key="122.ImportedFromIB2"/>
<string key="124.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES" key="124.ImportedFromIB2"/>
<string key="126.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES" key="126.ImportedFromIB2"/>
<string key="134.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES" key="134.ImportedFromIB2"/>
<string key="135.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES" key="135.ImportedFromIB2"/>
<string key="137.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES" key="137.ImportedFromIB2"/>
<string key="138.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES" key="138.ImportedFromIB2"/>
<string key="139.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES" key="139.ImportedFromIB2"/>
<string key="427.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES" key="427.ImportedFromIB2"/>
<string key="429.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES" key="429.ImportedFromIB2"/>
<string key="430.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES" key="430.ImportedFromIB2"/>
<string key="431.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES" key="431.ImportedFromIB2"/>
<string key="436.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES" key="436.ImportedFromIB2"/>
<string key="544.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES" key="544.ImportedFromIB2"/>
<string key="58.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES" key="58.ImportedFromIB2"/>
<string key="620.IBEditorWindowLastContentRect">{{605, 600}, {483, 264}}</string>
<string key="620.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES" key="620.ImportedFromIB2"/>
<string key="782.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES" key="782.ImportedFromIB2"/>
<string key="815.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES" key="815.ImportedFromIB2"/>
<string key="817.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES" key="817.ImportedFromIB2"/>
<string key="826.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES" key="826.ImportedFromIB2"/>
<string key="957.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES" key="957.ImportedFromIB2"/>
<string key="959.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES" key="959.ImportedFromIB2"/>
<string key="960.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES" key="960.ImportedFromIB2"/>
<string key="961.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES" key="961.ImportedFromIB2"/>
<string key="962.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES" key="962.ImportedFromIB2"/>
<string key="972.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="973.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="974.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -1498,7 +1581,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">1016</int>
<int key="maxID">1031</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -1507,25 +1590,30 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string key="superclassName">NSWindowController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">DBPrefsWindowController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">DBPrefsWindowController</string>
<string key="superclassName">NSWindowController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBUserSource</string>
<string key="minorKey"/>
<string key="minorKey">./Classes/DBPrefsWindowController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">FirstResponder</string>
<string key="superclassName">NSObject</string>
<dictionary class="NSMutableDictionary" key="actions">
<string key="atsuiButtonClicked:">id</string>
<string key="loginShellButtonClicked:">id</string>
<string key="quickstartButtonClicked:">id</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="actionInfosByName">
<object class="IBActionInfo" key="atsuiButtonClicked:">
<string key="name">atsuiButtonClicked:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="loginShellButtonClicked:">
<string key="name">loginShellButtonClicked:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="quickstartButtonClicked:">
<string key="name">quickstartButtonClicked:</string>
<string key="candidateClassName">id</string>
</object>
</dictionary>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBUserSource</string>
<string key="minorKey"/>
@@ -1538,537 +1626,35 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<string key="NS.key.0">openInCurrentWindowSelectionChanged:</string>
<string key="NS.object.0">id</string>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<string key="NS.key.0">openInCurrentWindowSelectionChanged:</string>
<object class="IBActionInfo" key="NS.object.0">
<string key="name">openInCurrentWindowSelectionChanged:</string>
<string key="candidateClassName">id</string>
</object>
</object>
<dictionary class="NSMutableDictionary" key="outlets">
<string key="advancedPreferences">NSView</string>
<string key="generalPreferences">NSView</string>
<string key="layoutPopUpButton">NSPopUpButton</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
<object class="IBToOneOutletInfo" key="advancedPreferences">
<string key="name">advancedPreferences</string>
<string key="candidateClassName">NSView</string>
</object>
<object class="IBToOneOutletInfo" key="generalPreferences">
<string key="name">generalPreferences</string>
<string key="candidateClassName">NSView</string>
</object>
<object class="IBToOneOutletInfo" key="layoutPopUpButton">
<string key="name">layoutPopUpButton</string>
<string key="candidateClassName">NSPopUpButton</string>
</object>
</dictionary>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">MMPreferenceController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">MMPreferenceController</string>
<string key="superclassName">DBPrefsWindowController</string>
<object class="NSMutableDictionary" key="actions">
<string key="NS.key.0">changePreloadCacheSize:</string>
<string key="NS.object.0">id</string>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBUserSource</string>
<string key="minorKey"/>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSMenu</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">Miscellaneous.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSMenu</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBUserSource</string>
<string key="minorKey"/>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBUserSource</string>
<string key="minorKey"/>
</object>
</object>
</array>
<array class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
<object class="IBPartialClassDescription">
<string key="className">NSActionCell</string>
<string key="superclassName">NSCell</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSActionCell.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSApplication</string>
<string key="superclassName">NSResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="918094059">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSApplication.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSApplication</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="778322014">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSApplicationScripting.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSApplication</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="637162915">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSColorPanel.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSApplication</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSHelpManager.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSApplication</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSPageLayout.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSApplication</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSUserInterfaceItemSearching.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSButton</string>
<string key="superclassName">NSControl</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSButton.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSButtonCell</string>
<string key="superclassName">NSActionCell</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSButtonCell.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSCell</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSCell.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSControl</string>
<string key="superclassName">NSView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="92287012">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSControl.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSController</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSFormatter</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSFormatter.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSMatrix</string>
<string key="superclassName">NSControl</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSMatrix.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSMenu</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="130422338">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSMenu.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSMenuItem</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="881365129">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSMenuItem.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSMenuItemCell</string>
<string key="superclassName">NSButtonCell</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSMenuItemCell.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSAccessibility.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<reference key="sourceIdentifier" ref="918094059"/>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<reference key="sourceIdentifier" ref="778322014"/>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<reference key="sourceIdentifier" ref="637162915"/>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<reference key="sourceIdentifier" ref="92287012"/>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSDictionaryController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSDragging.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSFontManager.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSFontPanel.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSKeyValueBinding.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<reference key="sourceIdentifier" ref="130422338"/>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSNibLoading.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSOutlineView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSPasteboard.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSSavePanel.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSTableView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSToolbarItem.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="975692421">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSArchiver.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSClassDescription.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSError.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSObjectScripting.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSPortCoder.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSScriptClassDescription.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSScriptKeyValueCoding.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSScriptObjectSpecifiers.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSScriptWhoseTests.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURLDownload.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSPopUpButton</string>
<string key="superclassName">NSButton</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSPopUpButton.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSPopUpButtonCell</string>
<string key="superclassName">NSMenuItemCell</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSPopUpButtonCell.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSInterfaceStyle.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSResponder</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSResponder.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSTextField</string>
<string key="superclassName">NSControl</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSTextField.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSTextFieldCell</string>
<string key="superclassName">NSActionCell</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSTextFieldCell.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSUserDefaultsController</string>
<string key="superclassName">NSController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSUserDefaultsController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSClipView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSView</string>
<reference key="sourceIdentifier" ref="881365129"/>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSRulerView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSView</string>
<string key="superclassName">NSResponder</string>
<reference key="sourceIdentifier" ref="975692421"/>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSWindow</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSDrawer.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSWindow</string>
<string key="superclassName">NSResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSWindow.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSWindow</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSWindowScripting.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSWindowController</string>
<string key="superclassName">NSResponder</string>
<object class="NSMutableDictionary" key="actions">
<string key="NS.key.0">showWindow:</string>
<string key="NS.object.0">id</string>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSWindowController.h</string>
<string key="minorKey">./Classes/MMPreferenceController.h</string>
</object>
</object>
</array>
@@ -2080,7 +1666,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<integer value="1050" key="NS.object.0"/>
</object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<string key="IBDocument.LastKnownRelativeProjectPath">../MacVim.xcodeproj</string>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<dictionary class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
<string key="NSMenuCheckmark">{9, 8}</string>
Binary file not shown.
+1 -1
View File
@@ -1232,7 +1232,7 @@
</dict>
</array>
<key>CFBundleVersion</key>
<string>59</string>
<string>62</string>
<key>NSMainNibFile</key>
<string>MainMenu</string>
<key>NSPrincipalClass</key>
+41 -4
View File
@@ -223,6 +223,7 @@ fsEventCallback(ConstFSEventStreamRef streamRef,
[NSNumber numberWithBool:YES], MMUseInlineImKey,
#endif // INCLUDE_OLD_IM_CODE
[NSNumber numberWithBool:NO], MMSuppressTerminationAlertKey,
[NSNumber numberWithBool:YES], MMNativeFullScreenKey,
nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:dict];
@@ -241,6 +242,12 @@ fsEventCallback(ConstFSEventStreamRef streamRef,
{
if (!(self = [super init])) return nil;
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7)
// Disable automatic relaunching
if ([NSApp respondsToSelector:@selector(disableRelaunchOnLogin)])
[NSApp disableRelaunchOnLogin];
#endif
vimControllers = [NSMutableArray new];
cachedVimControllers = [NSMutableArray new];
preloadPid = -1;
@@ -1065,10 +1072,40 @@ fsEventCallback(ConstFSEventStreamRef streamRef,
NSOpenPanel *panel = [NSOpenPanel openPanel];
[panel setAllowsMultipleSelection:YES];
[panel setAccessoryView:showHiddenFilesView()];
#if (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6)
// NOTE: -[NSOpenPanel runModalForDirectory:file:types:] is deprecated on
// 10.7 but -[NSOpenPanel setDirectoryURL:] requires 10.6 so jump through
// the following hoops on 10.6+.
dir = [dir stringByExpandingTildeInPath];
if (dir) {
NSURL *dirURL = [NSURL fileURLWithPath:dir isDirectory:YES];
if (dirURL)
[panel setDirectoryURL:dirURL];
}
int result = [panel runModalForDirectory:dir file:nil types:nil];
if (NSOKButton == result)
[self application:NSApp openFiles:[panel filenames]];
NSInteger result = [panel runModal];
#else
NSInteger result = [panel runModalForDirectory:dir file:nil types:nil];
#endif
if (NSOKButton == result) {
// NOTE: -[NSOpenPanel filenames] is deprecated on 10.7 so use
// -[NSOpenPanel URLs] instead. The downside is that we have to check
// that each URL is really a path first.
NSMutableArray *filenames = [NSMutableArray array];
NSArray *urls = [panel URLs];
NSUInteger i, count = [urls count];
for (i = 0; i < count; ++i) {
NSURL *url = [urls objectAtIndex:i];
if ([url isFileURL]) {
NSString *path = [url path];
if (path)
[filenames addObject:path];
}
}
if ([filenames count] > 0)
[self application:NSApp openFiles:filenames];
}
}
- (IBAction)selectNextWindow:(id)sender
@@ -1410,7 +1447,7 @@ fsEventCallback(ConstFSEventStreamRef streamRef,
// as follows:
//
// 1. Search through ordered windows as determined by NSApp. Unfortunately
// this method can fail, e.g. if a full screen window is on another
// this method can fail, e.g. if a full-screen window is on another
// "Space" (in this case NSApp returns no windows at all), so we have to
// fall back on ...
// 2. Search through all Vim controllers and return the first visible
+3 -3
View File
@@ -131,9 +131,9 @@ extern NSTimeInterval MMBalloonEvalInternalDelay;
- (int)lookupColorWithKey:(NSString *)key;
- (BOOL)hasSpecialKeyWithValue:(char_u *)value;
- (void)enterFullscreen:(int)fuoptions background:(int)bg;
- (void)leaveFullscreen;
- (void)setFullscreenBackgroundColor:(int)color;
- (void)enterFullScreen:(int)fuoptions background:(int)bg;
- (void)leaveFullScreen;
- (void)setFullScreenBackgroundColor:(int)color;
- (void)setAntialias:(BOOL)antialias;
+7 -6
View File
@@ -1150,27 +1150,27 @@ extern GuiFont gui_mch_retain_font(GuiFont font);
return NO;
}
- (void)enterFullscreen:(int)fuoptions background:(int)bg
- (void)enterFullScreen:(int)fuoptions background:(int)bg
{
NSMutableData *data = [NSMutableData data];
[data appendBytes:&fuoptions length:sizeof(int)];
bg = MM_COLOR(bg);
[data appendBytes:&bg length:sizeof(int)];
[self queueMessage:EnterFullscreenMsgID data:data];
[self queueMessage:EnterFullScreenMsgID data:data];
}
- (void)leaveFullscreen
- (void)leaveFullScreen
{
[self queueMessage:LeaveFullscreenMsgID data:nil];
[self queueMessage:LeaveFullScreenMsgID data:nil];
}
- (void)setFullscreenBackgroundColor:(int)color
- (void)setFullScreenBackgroundColor:(int)color
{
NSMutableData *data = [NSMutableData data];
color = MM_COLOR(color);
[data appendBytes:&color length:sizeof(int)];
[self queueMessage:SetFullscreenColorMsgID data:data];
[self queueMessage:SetFullScreenColorMsgID data:data];
}
- (void)setAntialias:(BOOL)antialias
@@ -1819,6 +1819,7 @@ static void netbeansReadCallback(CFSocketRef s,
[NSNumber numberWithInt:p_mh], @"p_mh",
[NSNumber numberWithBool:mmta], @"p_mmta",
[NSNumber numberWithInt:numTabs], @"numTabs",
[NSNumber numberWithInt:fuoptions_flags], @"fullScreenOptions",
nil];
// Put the state before all other messages.
@@ -14,7 +14,7 @@
@class MMVimView;
@interface MMFullscreenWindow : NSWindow {
@interface MMFullScreenWindow : NSWindow {
NSWindow *target;
MMVimView *view;
NSPoint oldPosition;
@@ -22,7 +22,7 @@
int options;
int state;
// These are only valid in fullscreen mode and store pre-fu vim size
// These are only valid in full-screen mode and store pre-fu vim size
int nonFuRows, nonFuColumns;
// These store the size vim had right after entering fu mode
@@ -32,14 +32,15 @@
int startFuFlags;
}
- (MMFullscreenWindow *)initWithWindow:(NSWindow *)t view:(MMVimView *)v
- (MMFullScreenWindow *)initWithWindow:(NSWindow *)t view:(MMVimView *)v
backgroundColor:(NSColor *)back;
- (void)setOptions:(int)opt;
- (void)enterFullscreen;
- (void)leaveFullscreen;
- (void)enterFullScreen;
- (void)leaveFullScreen;
- (void)centerView;
- (BOOL)canBecomeKeyWindow;
- (BOOL)canBecomeMainWindow;
- (void)applicationDidChangeScreenParameters:(NSNotification *)notification;
@end
@@ -8,7 +8,7 @@
* See README.txt for an overview of the Vim source code.
*/
/*
* MMFullscreenWindow
* MMFullScreenWindow
*
* A window without any decorations which covers an entire screen.
*
@@ -23,7 +23,7 @@
* Author: Nico Weber
*/
#import "MMFullscreenWindow.h"
#import "MMFullScreenWindow.h"
#import "MMTextView.h"
#import "MMVimController.h"
#import "MMVimView.h"
@@ -45,18 +45,17 @@ enum {
};
@interface MMFullscreenWindow (Private)
@interface MMFullScreenWindow (Private)
- (BOOL)isOnPrimaryScreen;
- (void)windowDidBecomeMain:(NSNotification *)notification;
- (void)windowDidResignMain:(NSNotification *)notification;
- (void)windowDidMove:(NSNotification *)notification;
- (void)applicationDidChangeScreenParameters:(NSNotification *)notification;
- (void)resizeVimView;
@end
@implementation MMFullscreenWindow
@implementation MMFullScreenWindow
- (MMFullscreenWindow *)initWithWindow:(NSWindow *)t view:(MMVimView *)v
- (MMFullScreenWindow *)initWithWindow:(NSWindow *)t view:(MMVimView *)v
backgroundColor:(NSColor *)back
{
NSScreen* screen = [t screen];
@@ -103,11 +102,6 @@ enum {
name:NSWindowDidMoveNotification
object:self];
[nc addObserver:self
selector:@selector(applicationDidChangeScreenParameters:)
name:NSApplicationDidChangeScreenParametersNotification
object:NSApp];
// NOTE: Vim needs to process mouse moved events, so enable them here.
[self setAcceptsMouseMovedEvents:YES];
@@ -131,9 +125,9 @@ enum {
options = opt;
}
- (void)enterFullscreen
- (void)enterFullScreen
{
ASLogDebug(@"Enter full screen now");
ASLogDebug(@"Enter full-screen now");
// Hide Dock and menu bar now to avoid the hide animation from playing
// after the fade to black (see also windowDidBecomeMain:).
@@ -186,18 +180,18 @@ enum {
// focus gained message
[self setDelegate:delegate];
// Store view dimension used before entering full screen, then resize the
// Store view dimension used before entering full-screen, then resize the
// view to match 'fuopt'.
[[view textView] getMaxRows:&nonFuRows columns:&nonFuColumns];
[self resizeVimView];
// Store options used when entering full screen so that we can restore
// dimensions when exiting full screen.
// Store options used when entering full-screen so that we can restore
// dimensions when exiting full-screen.
startFuFlags = options;
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
// HACK! Put window on all Spaces to avoid Spaces (available on OS X 10.5
// and later) from moving the full screen window to a separate Space from
// and later) from moving the full-screen window to a separate Space from
// the one the decorated window is occupying. The collection behavior is
// restored further down.
NSWindowCollectionBehavior wcb = [self collectionBehavior];
@@ -223,7 +217,7 @@ enum {
state = InFullScreen;
}
- (void)leaveFullscreen
- (void)leaveFullScreen
{
// fade to black
Boolean didBlend = NO;
@@ -272,10 +266,10 @@ enum {
id delegate = [self delegate];
[self setDelegate:nil];
// move text view back to original window, hide fullscreen window,
// move text view back to original window, hide fullScreen window,
// show original window
// do this _after_ resetting delegate and window controller, so the
// window controller doesn't get a focus lost message from the fullscreen
// window controller doesn't get a focus lost message from the fullScreen
// window.
[view removeFromSuperviewWithoutNeedingDisplay];
[[target contentView] addSubview:view];
@@ -290,15 +284,30 @@ enum {
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
// HACK! Put decorated window on all Spaces (available on OS X 10.5 and
// later) so that the decorated window stays on the same Space as the full
// screen window (they may occupy different Spaces e.g. if the full screen
// screen window (they may occupy different Spaces e.g. if the full-screen
// window was dragged to another Space). The collection behavior is
// restored further down.
NSWindowCollectionBehavior wcb = [target collectionBehavior];
[target setCollectionBehavior:NSWindowCollectionBehaviorCanJoinAllSpaces];
#endif
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7)
// HACK! On Mac OS X 10.7 windows animate when makeKeyAndOrderFront: is
// called. This is distracting here, so disable the animation and restore
// animation behavior after calling makeKeyAndOrderFront:.
NSWindowAnimationBehavior a = NSWindowAnimationBehaviorNone;
if ([target respondsToSelector:@selector(animationBehavior)]) {
a = [target animationBehavior];
[target setAnimationBehavior:NSWindowAnimationBehaviorNone];
}
#endif
[target makeKeyAndOrderFront:self];
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7)
// HACK! Restore animation behavior.
if (NSWindowAnimationBehaviorNone != a)
[target setAnimationBehavior:a];
#endif
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
// Restore collection behavior (see hack above).
[target setCollectionBehavior:wcb];
@@ -318,7 +327,7 @@ enum {
[self autorelease]; // Balance the above retain
state = LeftFullScreen;
ASLogDebug(@"Left full screen");
ASLogDebug(@"Left full-screen");
}
// Title-less windows normally don't receive key presses, override this
@@ -328,12 +337,40 @@ enum {
}
// Title-less windows normally can't become main which means that another
// non-fullscreen window will have the "active" titlebar in expose. Bad, fix it.
// non-full-screen window will have the "active" titlebar in expose. Bad, fix
// it.
- (BOOL)canBecomeMainWindow
{
return YES;
}
- (void)applicationDidChangeScreenParameters:(NSNotification *)notification
{
if (state != InFullScreen)
return;
// This notification is sent when screen resolution may have changed (e.g.
// due to a monitor being unplugged or the resolution being changed
// manually) but it also seems to get called when the Dock is
// hidden/displayed.
ASLogDebug(@"Screen unplugged / resolution changed");
NSScreen *screen = [target screen];
if (!screen) {
// Paranoia: if window we originally used for full-screen is gone, try
// screen window is on now, and failing that (not sure this can happen)
// use main screen.
screen = [self screen];
if (!screen)
screen = [NSScreen mainScreen];
}
// Ensure the full-screen window is still covering the entire screen and
// then resize view according to 'fuopt'.
[self setFrame:[screen frame] display:NO];
[self resizeVimView];
}
- (void)centerView
{
NSRect outer = [self frame], inner = [view frame];
@@ -370,12 +407,12 @@ enum {
return YES;
}
@end // MMFullscreenWindow
@end // MMFullScreenWindow
@implementation MMFullscreenWindow (Private)
@implementation MMFullScreenWindow (Private)
- (BOOL)isOnPrimaryScreen
{
@@ -393,13 +430,13 @@ enum {
{
// Hide menu and dock, both appear on demand.
//
// Another way to deal with several fullscreen windows would be to hide/
// reveal the dock only when the first fullscreen window is created and
// Another way to deal with several full-screen windows would be to hide/
// reveal the dock only when the first full-screen window is created and
// show it again after the last one has been closed, but toggling on each
// focus gain/loss works better with Spaces. The downside is that the
// menu bar flashes shortly when switching between two fullscreen windows.
// menu bar flashes shortly when switching between two full-screen windows.
// XXX: If you have a fullscreen window on a secondary monitor and unplug
// XXX: If you have a full-screen window on a secondary monitor and unplug
// the monitor, this will probably not work right.
if ([self isOnPrimaryScreen]) {
@@ -421,41 +458,14 @@ enum {
return;
// Window may move as a result of being dragged between Spaces.
ASLogDebug(@"Full screen window moved, ensuring it covers the screen...");
ASLogDebug(@"Full-screen window moved, ensuring it covers the screen...");
// Ensure the full screen window is still covering the entire screen and
// Ensure the full-screen window is still covering the entire screen and
// then resize view according to 'fuopt'.
[self setFrame:[[self screen] frame] display:NO];
[self resizeVimView];
}
- (void)applicationDidChangeScreenParameters:(NSNotification *)notification
{
if (state != InFullScreen)
return;
// This notification is sent when screen resolution may have changed (e.g.
// due to a monitor being unplugged or the resolution being changed
// manually) but it also seems to get called when the Dock is
// hidden/displayed.
ASLogDebug(@"Screen unplugged / resolution changed");
NSScreen *screen = [target screen];
if (!screen) {
// Paranoia: if window we originally used for full screen is gone, try
// screen window is on now, and failing that (not sure this can happen)
// use main screen.
screen = [self screen];
if (!screen)
screen = [NSScreen mainScreen];
}
// Ensure the full screen window is still covering the entire screen and
// then resize view according to 'fuopt'.
[self setFrame:[screen frame] display:NO];
[self resizeVimView];
}
- (void)resizeVimView
{
// Resize vim view according to options
@@ -503,9 +513,9 @@ enum {
}
// The new view dimensions are stored and then consulted when attempting to
// restore the windowed view dimensions when leaving full screen.
// NOTE: Store them here and not only in enterFullscreen, otherwise the
// windowed view dimensions will not be restored if the full screen was on
// restore the windowed view dimensions when leaving full-screen.
// NOTE: Store them here and not only in enterFullScreen, otherwise the
// windowed view dimensions will not be restored if the full-screen was on
// a screen that later was unplugged.
startFuRows = fuRows;
startFuColumns = fuColumns;
@@ -513,4 +523,4 @@ enum {
[self centerView];
}
@end // MMFullscreenWindow (Private)
@end // MMFullScreenWindow (Private)
-9
View File
@@ -22,15 +22,6 @@
#define ALPHA(argb) (((argb>>24) & 0xff)/255.0f)
enum {
// These values are chosen so that the min text view size is not too small
// with the default font (they only affect resizing with the mouse, you can
// still use e.g. ":set lines=2" to go below these values).
MMMinRows = 4,
MMMinColumns = 30
};
@interface MMTextViewHelper : NSObject {
id textView;
BOOL isDragging;
+2 -2
View File
@@ -809,12 +809,12 @@ KeyboardInputSourcesEqual(TISInputSourceRef a, TISInputSourceRef b)
#endif
imControl = enable;
ASLogInfo(@"IM control %sabled", enable ? "en" : "dis");
ASLogDebug(@"IM control %sabled", enable ? "en" : "dis");
}
- (void)activateIm:(BOOL)enable
{
ASLogInfo(@"Activate IM=%d", enable);
ASLogDebug(@"Activate IM=%d", enable);
// HACK: If there is marked text when switching IM it will be inserted as
// normal text. To avoid this we abandon the marked text before switching.
+3
View File
@@ -27,8 +27,11 @@
id backendProxy;
NSMenu *mainMenu;
NSMutableArray *popupMenuItems;
// TODO: Move all toolbar code to window controller?
NSToolbar *toolbar;
NSMutableDictionary *toolbarItemDict;
int pid;
NSString *serverName;
NSDictionary *vimState;
+46 -9
View File
@@ -34,6 +34,7 @@
#import "MMWindowController.h"
#import "Miscellaneous.h"
#import "MMCoreTextView.h"
#import "MMWindow.h"
static NSString *MMDefaultToolbarImageName = @"Attention";
@@ -765,15 +766,15 @@ static BOOL isUnsafeMessage(int msgid);
encoding:NSUTF8StringEncoding];
[self setServerName:name];
[name release];
} else if (EnterFullscreenMsgID == msgid) {
} else if (EnterFullScreenMsgID == msgid) {
const void *bytes = [data bytes];
int fuoptions = *((int*)bytes); bytes += sizeof(int);
int bg = *((int*)bytes);
NSColor *back = [NSColor colorWithArgbInt:bg];
[windowController enterFullscreen:fuoptions backgroundColor:back];
} else if (LeaveFullscreenMsgID == msgid) {
[windowController leaveFullscreen];
[windowController enterFullScreen:fuoptions backgroundColor:back];
} else if (LeaveFullScreenMsgID == msgid) {
[windowController leaveFullScreen];
} else if (SetBuffersModifiedMsgID == msgid) {
const void *bytes = [data bytes];
// state < 0 <-> some buffer modified
@@ -805,11 +806,11 @@ static BOOL isUnsafeMessage(int msgid);
}
} else if (CloseWindowMsgID == msgid) {
[self scheduleClose];
} else if (SetFullscreenColorMsgID == msgid) {
} else if (SetFullScreenColorMsgID == msgid) {
const int *bg = (const int*)[data bytes];
NSColor *color = [NSColor colorWithRgbInt:*bg];
[windowController setFullscreenBackgroundColor:color];
[windowController setFullScreenBackgroundColor:color];
} else if (ShowFindReplaceDialogMsgID == msgid) {
NSDictionary *dict = [NSDictionary dictionaryWithData:data];
if (dict) {
@@ -886,7 +887,12 @@ static BOOL isUnsafeMessage(int msgid);
- (void)savePanelDidEnd:(NSSavePanel *)panel code:(int)code
context:(void *)context
{
NSString *path = (code == NSOKButton) ? [panel filename] : nil;
NSString *path = nil;
if (code == NSOKButton) {
NSURL *url = [panel URL];
if ([url isFileURL])
path = [url path];
}
ASLogDebug(@"Open/save panel path=%@", path);
// NOTE! This causes the sheet animation to run its course BEFORE the rest
@@ -1378,6 +1384,12 @@ static BOOL isUnsafeMessage(int msgid);
dir = [vimState objectForKey:@"pwd"];
}
#if (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6)
// 10.6+ APIs uses URLs instead of paths
dir = [dir stringByExpandingTildeInPath];
NSURL *dirURL = dir ? [NSURL fileURLWithPath:dir isDirectory:YES] : nil;
#endif
if (saving) {
NSSavePanel *panel = [NSSavePanel savePanel];
@@ -1387,22 +1399,47 @@ static BOOL isUnsafeMessage(int msgid);
[panel setDelegate:self];
if ([panel isExpanded])
[panel setAccessoryView:showHiddenFilesView()];
#if (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6)
// NOTE: -[NSSavePanel beginSheetForDirectory::::::] is deprecated on
// 10.6 but -[NSSavePanel setDirectoryURL:] requires 10.6 so jump
// through the following hoops on 10.6+.
if (dirURL)
[panel setDirectoryURL:dirURL];
[panel beginSheetModalForWindow:[windowController window]
completionHandler:^(NSInteger result) {
[self savePanelDidEnd:panel code:result context:nil];
}];
#else
[panel beginSheetForDirectory:dir file:nil
modalForWindow:[windowController window]
modalDelegate:self
didEndSelector:@selector(savePanelDidEnd:code:context:)
contextInfo:NULL];
#endif
} else {
NSOpenPanel *panel = [NSOpenPanel openPanel];
[panel setAllowsMultipleSelection:NO];
[panel setAccessoryView:showHiddenFilesView()];
#if (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6)
// NOTE: -[NSOpenPanel beginSheetForDirectory:::::::] is deprecated on
// 10.6 but -[NSOpenPanel setDirectoryURL:] requires 10.6 so jump
// through the following hoops on 10.6+.
if (dirURL)
[panel setDirectoryURL:dirURL];
[panel beginSheetModalForWindow:[windowController window]
completionHandler:^(NSInteger result) {
[self savePanelDidEnd:panel code:result context:nil];
}];
#else
[panel beginSheetForDirectory:dir file:nil types:nil
modalForWindow:[windowController window]
modalDelegate:self
didEndSelector:@selector(savePanelDidEnd:code:context:)
contextInfo:NULL];
#endif
}
}
@@ -1593,8 +1630,8 @@ isUnsafeMessage(int msgid)
ExecuteActionMsgID, // Impossible to predict
ShowPopupMenuMsgID, // Enters modal loop
ActivateMsgID, // ?
EnterFullscreenMsgID, // Modifies delegate of window controller
LeaveFullscreenMsgID, // Modifies delegate of window controller
EnterFullScreenMsgID, // Modifies delegate of window controller
LeaveFullScreenMsgID, // Modifies delegate of window controller
CloseWindowMsgID, // See note below
BrowseForFileMsgID, // Enters modal loop
ShowDialogMsgID, // Enters modal loop
+3
View File
@@ -29,4 +29,7 @@
- (void)setContentMaxSize:(NSSize)size;
- (void)setContentSize:(NSSize)size;
- (IBAction)toggleFullScreen:(id)sender;
- (IBAction)realToggleFullScreen:(id)sender;
@end
+23
View File
@@ -152,4 +152,27 @@
[[self delegate] performSelector:@selector(zoom:) withObject:sender];
}
- (IBAction)toggleFullScreen:(id)sender
{
// HACK! This is an NSWindow method used to enter full-screen on OS X 10.7.
// We override it so that we can interrupt and pass this on to Vim first.
// An alternative hack would be to reroute the action message sent by the
// full-screen button in the top right corner of a window, but there could
// be other places where this action message is sent from.
// To get to the original method (and enter Lion full-screen) we need to
// call realToggleFullScreen: defined below.
// (Use performSelector:: to avoid compilation warning.)
[[self delegate] performSelector:@selector(invFullScreen:) withObject:nil];
}
- (IBAction)realToggleFullScreen:(id)sender
{
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7)
// HACK! See toggleFullScreen: comment above.
if ([NSWindow instancesRespondToSelector:@selector(toggleFullScreen:)])
[super toggleFullScreen:sender];
#endif
}
@end // MMWindow
+12 -6
View File
@@ -13,7 +13,7 @@
@class MMWindow;
@class MMFullscreenWindow;
@class MMFullScreenWindow;
@class MMVimController;
@class MMVimView;
@@ -29,17 +29,22 @@
BOOL windowPresented;
BOOL shouldResizeVimView;
BOOL shouldRestoreUserTopLeft;
BOOL shouldMaximizeWindow;
int updateToolbarFlag;
BOOL keepOnScreen;
BOOL fullscreenEnabled;
NSString *windowAutosaveKey;
MMFullscreenWindow *fullscreenWindow;
BOOL fullScreenEnabled;
MMFullScreenWindow *fullScreenWindow;
int fullScreenOptions;
BOOL delayEnterFullScreen;
NSRect preFullScreenFrame;
MMWindow *decoratedWindow;
NSString *lastSetTitle;
int userRows;
int userCols;
NSPoint userTopLeft;
NSPoint defaultTopLeft;
NSToolbar *toolbar;
}
- (id)initWithVimController:(MMVimController *)controller;
@@ -75,9 +80,10 @@
- (void)liveResizeWillStart;
- (void)liveResizeDidEnd;
- (void)enterFullscreen:(int)fuoptions backgroundColor:(NSColor *)back;
- (void)leaveFullscreen;
- (void)setFullscreenBackgroundColor:(NSColor *)back;
- (void)enterFullScreen:(int)fuoptions backgroundColor:(NSColor *)back;
- (void)leaveFullScreen;
- (void)setFullScreenBackgroundColor:(NSColor *)back;
- (void)invFullScreen:(id)sender;
- (void)setBufferModified:(BOOL)mod;
- (void)setTopLeft:(NSPoint)pt;
+474 -128
View File
@@ -44,7 +44,7 @@
* YES & YES => NO
*
*
* Resizing in full-screen mode:
* Resizing in custom full-screen mode:
*
* The window never resizes since it fills the screen, however the vim view may
* change size, e.g. when the user types ":set lines=60", or when a scrollbar
@@ -52,13 +52,19 @@
*
* It is ensured that the vim view never becomes larger than the screen size
* and that it always stays in the center of the screen.
*
*
* Resizing in native full-screen mode (Mac OS X 10.7+):
*
* The window is always kept centered and resizing works more or less the same
* way as in windowed mode.
*
*/
#import "MMAppController.h"
#import "MMAtsuiTextView.h"
#import "MMFindReplaceController.h"
#import "MMFullscreenWindow.h"
#import "MMFullScreenWindow.h"
#import "MMTextView.h"
#import "MMTypesetter.h"
#import "MMVimController.h"
@@ -69,6 +75,12 @@
#import <PSMTabBarControl/PSMTabBarControl.h>
// These have to be the same as in option.h
#define FUOPT_MAXVERT 0x001
#define FUOPT_MAXHORZ 0x002
#define FUOPT_BGCOLOR_HLGROUP 0x004
@interface MMWindowController (Private)
- (NSSize)contentSize;
@@ -79,9 +91,13 @@
- (void)updateResizeConstraints;
- (NSTabViewItem *)addNewTabViewItem;
- (BOOL)askBackendForStarRegister:(NSPasteboard *)pb;
- (void)updateTablineSeparator;
- (void)hideTablineSeparator:(BOOL)hide;
- (void)doFindNext:(BOOL)next;
- (void)updateToolbar;
- (BOOL)maximizeWindow:(int)options;
- (void)applicationDidChangeScreenParameters:(NSNotification *)notification;
- (void)enterNativeFullScreen;
@end
@@ -181,6 +197,24 @@
if ([win respondsToSelector:@selector(_setContentHasShadow:)])
[win _setContentHasShadow:NO];
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7)
// Building on Mac OS X 10.7 or greater.
// This puts the full-screen button in the top right of each window
if ([win respondsToSelector:@selector(setCollectionBehavior:)])
[win setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary];
// This makes windows animate when opened
if ([win respondsToSelector:@selector(setAnimationBehavior:)])
[win setAnimationBehavior:NSWindowAnimationBehaviorDocumentWindow];
#endif
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(applicationDidChangeScreenParameters:)
name:NSApplicationDidChangeScreenParametersNotification
object:NSApp];
return self;
}
@@ -191,6 +225,7 @@
[decoratedWindow release]; decoratedWindow = nil;
[windowAutosaveKey release]; windowAutosaveKey = nil;
[vimView release]; vimView = nil;
[toolbar release]; toolbar = nil;
[super dealloc];
}
@@ -226,16 +261,20 @@
- (void)cleanup
{
ASLogDebug(@"%@ %s", [self className], _cmd);
ASLogDebug(@"");
if (fullscreenEnabled) {
// If we are closed while still in fullscreen, end fullscreen mode,
// NOTE: Must set this before possibly leaving full-screen.
setupDone = NO;
[[NSNotificationCenter defaultCenter] removeObserver:self];
if (fullScreenEnabled) {
// If we are closed while still in full-screen, end full-screen mode,
// release ourselves (because this won't happen in MMWindowController)
// and perform close operation on the original window.
[self leaveFullscreen];
[self leaveFullScreen];
}
setupDone = NO;
vimController = nil;
[vimView removeFromSuperviewWithoutNeedingDisplay];
@@ -277,17 +316,32 @@
[self updateResizeConstraints];
[self resizeWindowToFitContentSize:[vimView desiredSize]
keepOnScreen:YES];
[[self window] makeKeyAndOrderFront:self];
[decoratedWindow makeKeyAndOrderFront:self];
// HACK! Calling makeKeyAndOrderFront: may cause Cocoa to force the window
// into native full-screen mode (this happens e.g. if a new window is
// opened when MacVim is already in full-screen). In this case we don't
// want the decorated window to pop up before the animation into
// full-screen, so set its alpha to 0.
if (fullScreenEnabled && !fullScreenWindow)
[decoratedWindow setAlphaValue:0];
// Flag that the window is now placed on screen. From now on it is OK for
// code to depend on the screen state. (Such as constraining views etc.)
windowPresented = YES;
if (fullscreenWindow) {
// Delayed entering of full screen happens here (a ":set fu" in a
if (fullScreenWindow) {
// Delayed entering of full-screen happens here (a ":set fu" in a
// GUIEnter auto command could cause this).
[fullscreenWindow enterFullscreen];
fullscreenEnabled = YES;
[fullScreenWindow enterFullScreen];
fullScreenEnabled = YES;
} else if (delayEnterFullScreen) {
// Set alpha to zero so that the decorated window doesn't pop up
// before we enter full-screen.
[decoratedWindow setAlphaValue:0];
[self enterNativeFullScreen];
}
return YES;
@@ -326,6 +380,29 @@
shouldResizeVimView = YES;
keepOnScreen = onScreen;
}
// Autosave rows and columns.
if (windowAutosaveKey && !fullScreenEnabled
&& rows > MMMinRows && cols > MMMinColumns) {
// HACK! If tabline is visible then window will look about one line
// higher than it actually is so increment rows by one before
// autosaving dimension so that the approximate total window height is
// autosaved. This is particularly important when window is maximized
// vertically; if we don't add a row here a new window will appear to
// not be tall enough when the first window is showing the tabline.
// A negative side-effect of this is that the window will redraw on
// startup if the window is too tall to fit on screen (which happens
// for example if 'showtabline=2').
// TODO: Store window pixel dimensions instead of rows/columns?
int autosaveRows = rows;
if (![[vimView tabBarControl] isHidden])
++autosaveRows;
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
[ud setInteger:autosaveRows forKey:MMAutosaveRowsKey];
[ud setInteger:cols forKey:MMAutosaveColumnsKey];
[ud synchronize];
}
}
- (void)zoomWithRows:(int)rows columns:(int)cols state:(int)state
@@ -352,12 +429,12 @@
return;
[decoratedWindow setTitle:title];
if (fullscreenEnabled) {
[fullscreenWindow setTitle:title];
if (fullScreenWindow) {
[fullScreenWindow setTitle:title];
// NOTE: Cocoa does not update the "Window" menu for borderless windows
// so we have to do it manually.
[NSApp changeWindowsItem:fullscreenWindow title:title filename:NO];
[NSApp changeWindowsItem:fullScreenWindow title:title filename:NO];
}
}
@@ -372,12 +449,17 @@
filename = @"";
[decoratedWindow setRepresentedFilename:filename];
[fullscreenWindow setRepresentedFilename:filename];
[fullScreenWindow setRepresentedFilename:filename];
}
- (void)setToolbar:(NSToolbar *)toolbar
- (void)setToolbar:(NSToolbar *)theToolbar
{
// The full-screen window has no toolbar.
if (theToolbar != toolbar) {
[toolbar release];
toolbar = [theToolbar retain];
}
// NOTE: Toolbar must be set here or it won't work to show it later.
[decoratedWindow setToolbar:toolbar];
// HACK! Redirect the pill button so that we can ask Vim to hide the
@@ -399,6 +481,7 @@
{
BOOL scrollbarHidden = [vimView destroyScrollbarWithIdentifier:ident];
shouldResizeVimView = shouldResizeVimView || scrollbarHidden;
shouldMaximizeWindow = shouldMaximizeWindow || scrollbarHidden;
return scrollbarHidden;
}
@@ -408,6 +491,7 @@
BOOL scrollbarToggled = [vimView showScrollbarWithIdentifier:ident
state:visible];
shouldResizeVimView = shouldResizeVimView || scrollbarToggled;
shouldMaximizeWindow = shouldMaximizeWindow || scrollbarToggled;
return scrollbarToggled;
}
@@ -429,8 +513,8 @@
// flag on the window here (should be faster if the window is opaque).
BOOL isOpaque = [back alphaComponent] == 1.0f;
[decoratedWindow setOpaque:isOpaque];
if (fullscreenEnabled)
[fullscreenWindow setOpaque:isOpaque];
if (fullScreenWindow)
[fullScreenWindow setOpaque:isOpaque];
[vimView setDefaultColorsBackground:back foreground:fore];
}
@@ -440,6 +524,7 @@
[[NSFontManager sharedFontManager] setSelectedFont:font isMultiple:NO];
[[vimView textView] setFont:font];
[self updateResizeConstraints];
shouldMaximizeWindow = YES;
}
- (void)setWideFont:(NSFont *)font
@@ -469,38 +554,43 @@
if (windowPresented && shouldResizeVimView) {
shouldResizeVimView = NO;
NSSize originalSize = [vimView frame].size;
NSSize contentSize = [vimView desiredSize];
contentSize = [self constrainContentSizeToScreenSize:contentSize];
int rows = 0, cols = 0;
contentSize = [vimView constrainRows:&rows columns:&cols
toSize:contentSize];
[vimView setFrameSize:contentSize];
// Make sure full-screen window stays maximized (e.g. when scrollbar or
// tabline is hidden) according to 'fuopt'.
if (fullscreenEnabled) {
// NOTE! Don't mark the fullscreen content view as needing an
// update unless absolutely necessary since when it is updated the
// entire screen is cleared. This may cause some parts of the Vim
// view to be cleared but not redrawn since Vim does not realize
// that we've erased part of the view.
if (!NSEqualSizes(originalSize, contentSize)) {
[[fullscreenWindow contentView] setNeedsDisplay:YES];
[fullscreenWindow centerView];
}
} else {
[self resizeWindowToFitContentSize:contentSize
keepOnScreen:keepOnScreen];
BOOL didMaximize = NO;
if (shouldMaximizeWindow && fullScreenEnabled &&
(fullScreenOptions & (FUOPT_MAXVERT|FUOPT_MAXHORZ)) != 0)
didMaximize = [self maximizeWindow:fullScreenOptions];
if (windowAutosaveKey && rows > 0 && cols > 0) {
// Autosave rows and columns now that they should have been
// constrained to fit on screen. We only do this for the
// window which also autosaves window position and we avoid
// autosaving when in fullscreen since the rows usually won't
// fit when in windowed mode.
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
[ud setInteger:rows forKey:MMAutosaveRowsKey];
[ud setInteger:cols forKey:MMAutosaveColumnsKey];
[ud synchronize];
shouldMaximizeWindow = NO;
// Resize Vim view and window, but don't do this now if the window was
// just reszied because this would make the window "jump" unpleasantly.
// Instead wait for Vim to respond to the resize message and do the
// resizing then.
// TODO: What if the resize message fails to make it back?
if (!didMaximize) {
NSSize originalSize = [vimView frame].size;
NSSize contentSize = [vimView desiredSize];
contentSize = [self constrainContentSizeToScreenSize:contentSize];
int rows = 0, cols = 0;
contentSize = [vimView constrainRows:&rows columns:&cols
toSize:contentSize];
[vimView setFrameSize:contentSize];
if (fullScreenWindow) {
// NOTE! Don't mark the full-screen content view as needing an
// update unless absolutely necessary since when it is updated
// the entire screen is cleared. This may cause some parts of
// the Vim view to be cleared but not redrawn since Vim does
// not realize that we've erased part of the view.
if (!NSEqualSizes(originalSize, contentSize)) {
[[fullScreenWindow contentView] setNeedsDisplay:YES];
[fullScreenWindow centerView];
}
} else {
[self resizeWindowToFitContentSize:contentSize
keepOnScreen:keepOnScreen];
}
}
@@ -511,30 +601,12 @@
- (void)showTabBar:(BOOL)on
{
[[vimView tabBarControl] setHidden:!on];
// Showing the tabline may result in the tabline separator being hidden or
// shown; this does not apply to full-screen mode.
if (!on) {
NSToolbar *toolbar = [decoratedWindow toolbar];
if (([decoratedWindow styleMask] & NSTexturedBackgroundWindowMask)
== 0) {
[self hideTablineSeparator:![toolbar isVisible]];
} else {
[self hideTablineSeparator:NO];
}
} else {
if (([decoratedWindow styleMask] & NSTexturedBackgroundWindowMask)
== 0) {
[self hideTablineSeparator:on];
} else {
[self hideTablineSeparator:YES];
}
}
[self updateTablineSeparator];
shouldMaximizeWindow = YES;
}
- (void)showToolbar:(BOOL)on size:(int)size mode:(int)mode
{
NSToolbar *toolbar = [decoratedWindow toolbar];
if (!toolbar) return;
[toolbar setSizeMode:size];
@@ -561,7 +633,7 @@
{
if (vimView && [vimView textView]) {
[[vimView textView] setLinespace:(float)linespace];
shouldResizeVimView = YES;
shouldMaximizeWindow = shouldResizeVimView = YES;
}
}
@@ -633,58 +705,95 @@
}
}
- (void)enterFullscreen:(int)fuoptions backgroundColor:(NSColor *)back
- (void)enterFullScreen:(int)fuoptions backgroundColor:(NSColor *)back
{
if (fullscreenEnabled) return;
if (fullScreenEnabled) return;
// fullscreenWindow could be nil here if this is called multiple times
// during startup.
[fullscreenWindow release];
BOOL useNativeFullScreen = [[NSUserDefaults standardUserDefaults]
boolForKey:MMNativeFullScreenKey];
// Make sure user is not trying to use native full-screen on systems that
// do not support it.
if (![NSWindow instancesRespondToSelector:@selector(toggleFullScreen:)])
useNativeFullScreen = NO;
fullscreenWindow = [[MMFullscreenWindow alloc]
initWithWindow:decoratedWindow view:vimView backgroundColor:back];
[fullscreenWindow setOptions:fuoptions];
[fullscreenWindow setRepresentedFilename:
[decoratedWindow representedFilename]];
// NOTE: Do not enter full screen until the window has been presented since
// we don't actually know which screen to use before then.
if (windowPresented) {
[fullscreenWindow enterFullscreen];
fullscreenEnabled = YES;
// The resize handle disappears so the vim view needs to update the
// scrollbars.
shouldResizeVimView = YES;
fullScreenOptions = fuoptions;
if (useNativeFullScreen) {
// Enter native full-screen mode. Only supported on Mac OS X 10.7+.
if (windowPresented) {
[self enterNativeFullScreen];
} else {
delayEnterFullScreen = YES;
}
} else {
ASLogDebug(@"Delay enter full screen");
// Enter custom full-screen mode. Always supported.
ASLogInfo(@"Enter custom full-screen");
// fullScreenWindow could be non-nil here if this is called multiple
// times during startup.
[fullScreenWindow release];
fullScreenWindow = [[MMFullScreenWindow alloc]
initWithWindow:decoratedWindow view:vimView backgroundColor:back];
[fullScreenWindow setOptions:fuoptions];
[fullScreenWindow setRepresentedFilename:
[decoratedWindow representedFilename]];
// NOTE: Do not enter full-screen until the window has been presented
// since we don't actually know which screen to use before then. (The
// custom full-screen can appear on any screen, as opposed to native
// full-screen which always uses the main screen.)
if (windowPresented) {
[fullScreenWindow enterFullScreen];
fullScreenEnabled = YES;
// The resize handle disappears so the vim view needs to update the
// scrollbars.
shouldResizeVimView = YES;
}
}
}
- (void)leaveFullscreen
- (void)leaveFullScreen
{
if (!fullscreenEnabled) return;
if (!fullScreenEnabled) return;
fullscreenEnabled = NO;
[fullscreenWindow leaveFullscreen];
[fullscreenWindow release];
fullscreenWindow = nil;
ASLogInfo(@"Exit full-screen");
// The vim view may be too large to fit the screen, so update it.
shouldResizeVimView = YES;
fullScreenEnabled = NO;
if (fullScreenWindow) {
// Using custom full-screen
[fullScreenWindow leaveFullScreen];
[fullScreenWindow release];
fullScreenWindow = nil;
// The vim view may be too large to fit the screen, so update it.
shouldResizeVimView = YES;
} else {
// Using native full-screen
// NOTE: fullScreenEnabled is used to detect if we enter full-screen
// programatically and so must be set before calling
// realToggleFullScreen:.
NSParameterAssert(fullScreenEnabled == NO);
[decoratedWindow realToggleFullScreen:self];
}
}
- (void)setFullscreenBackgroundColor:(NSColor *)back
- (void)setFullScreenBackgroundColor:(NSColor *)back
{
if (fullscreenWindow)
[fullscreenWindow setBackgroundColor:back];
if (fullScreenWindow)
[fullScreenWindow setBackgroundColor:back];
}
- (void)invFullScreen:(id)sender
{
[vimController addVimInput:@"<C-\\><C-N>:set invfu<CR>"];
}
- (void)setBufferModified:(BOOL)mod
{
// NOTE: We only set the document edited flag on the decorated window since
// the full-screen window has no close button anyway. (It also saves us
// from keeping track of the flag in two different places.)
// the custom full-screen window has no close button anyway. (It also
// saves us from keeping track of the flag in two different places.)
[decoratedWindow setDocumentEdited:mod];
}
@@ -855,7 +964,7 @@
if (!setupDone)
return;
if (fullscreenEnabled) {
if (fullScreenEnabled) {
// NOTE: The full-screen is not supposed to be able to be moved. If we
// do get here while in full-screen something unexpected happened (e.g.
// the full-screen window was on an external display that got
@@ -884,7 +993,7 @@
- (void)windowDidResize:(id)sender
{
if (!setupDone || fullscreenEnabled) return;
if (!setupDone || fullScreenEnabled) return;
// NOTE: Since we have no control over when the window may resize (Cocoa
// may resize automatically) we simply set the view to fill the entire
@@ -994,6 +1103,150 @@
return NO;
}
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7)
// -- Full-screen delegate ---------------------------------------------------
- (NSApplicationPresentationOptions)window:(NSWindow *)window
willUseFullScreenPresentationOptions:(NSApplicationPresentationOptions)opt
{
return opt | NSApplicationPresentationAutoHideToolbar;
}
- (NSArray *)customWindowsToEnterFullScreenForWindow:(NSWindow *)window
{
return [NSArray arrayWithObject:decoratedWindow];
}
- (void)window:(NSWindow *)window
startCustomAnimationToEnterFullScreenWithDuration:(NSTimeInterval)duration
{
// Fade out window, remove title bar and maximize, then fade back in.
// (There is a small delay before window is maximized but usually this is
// not noticeable on a relatively modern Mac.)
[NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {
[context setDuration:0.5*duration];
[[window animator] setAlphaValue:0];
} completionHandler:^{
[window setStyleMask:([window styleMask] | NSFullScreenWindowMask)];
[[vimView tabBarControl] setStyleNamed:@"Unified"];
[self updateTablineSeparator];
[self maximizeWindow:fullScreenOptions];
[NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {
[context setDuration:0.5*duration];
[[window animator] setAlphaValue:1];
} completionHandler:^{
// Do nothing
}];
}];
}
- (void)windowWillEnterFullScreen:(NSNotification *)notification
{
// Store window frame and use it when exiting full-screen.
preFullScreenFrame = [decoratedWindow frame];
// ASSUMPTION: fullScreenEnabled always reflects the state of Vim's 'fu'.
if (!fullScreenEnabled) {
ASLogDebug(@"Full-screen out of sync, tell Vim to set 'fu'");
// NOTE: If we get here it means that Cocoa has somehow entered
// full-screen without us getting to set the 'fu' option first, so Vim
// and the GUI are out of sync. The following code (eventually) gets
// them back into sync. A problem is that the full-screen options have
// not been set, so we have to cache that state and grab it here.
fullScreenOptions = [[vimController objectForVimStateKey:
@"fullScreenOptions"] intValue];
fullScreenEnabled = YES;
[self invFullScreen:self];
}
}
- (void)windowDidFailToEnterFullScreen:(NSWindow *)window
{
// NOTE: This message can be called without
// window:startCustomAnimationToEnterFullScreenWithDuration: ever having
// been called so any state to store before entering full-screen must be
// stored in windowWillEnterFullScreen: which always gets called.
ASLogNotice(@"Failed to ENTER full-screen, restoring window frame...");
fullScreenEnabled = NO;
[window setAlphaValue:1];
[window setStyleMask:([window styleMask] & ~NSFullScreenWindowMask)];
[[vimView tabBarControl] setStyleNamed:@"Metal"];
[self updateTablineSeparator];
[window setFrame:preFullScreenFrame display:YES];
}
- (NSArray *)customWindowsToExitFullScreenForWindow:(NSWindow *)window
{
return [NSArray arrayWithObject:decoratedWindow];
}
- (void)window:(NSWindow *)window
startCustomAnimationToExitFullScreenWithDuration:(NSTimeInterval)duration
{
if (!setupDone) {
// HACK! The window has closed but Cocoa still brings it back to life
// and shows a grey box the size of the window unless we explicitly
// hide it by setting its alpha to 0 here.
[window setAlphaValue:0];
return;
}
// Fade out window, add back title bar and restore window frame, then fade
// back in. (There is a small delay before window contents is drawn after
// the window frame is set but usually this is not noticeable on a
// relatively modern Mac.)
[NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {
[context setDuration:0.5*duration];
[[window animator] setAlphaValue:0];
} completionHandler:^{
[window setStyleMask:([window styleMask] & ~NSFullScreenWindowMask)];
[[vimView tabBarControl] setStyleNamed:@"Metal"];
[self updateTablineSeparator];
[window setFrame:preFullScreenFrame display:YES];
[NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {
[context setDuration:0.5*duration];
[[window animator] setAlphaValue:1];
} completionHandler:^{
// Do nothing
}];
}];
}
- (void)windowWillExitFullScreen:(NSNotification *)notification
{
// ASSUMPTION: fullScreenEnabled always reflects the state of Vim's 'fu'.
if (fullScreenEnabled) {
ASLogDebug(@"Full-screen out of sync, tell Vim to clear 'fu'");
// NOTE: If we get here it means that Cocoa has somehow exited
// full-screen without us getting to clear the 'fu' option first, so
// Vim and the GUI are out of sync. The following code (eventually)
// gets them back into sync.
fullScreenEnabled = NO;
[self invFullScreen:self];
}
}
- (void)windowDidFailToExitFullScreen:(NSWindow *)window
{
// TODO: Is this the correct way to deal with this message? Are we still
// in full-screen at this point?
ASLogNotice(@"Failed to EXIT full-screen, maximizing window...");
fullScreenEnabled = YES;
[window setAlphaValue:1];
[window setStyleMask:([window styleMask] | NSFullScreenWindowMask)];
[[vimView tabBarControl] setStyleNamed:@"Unified"];
[self updateTablineSeparator];
[self maximizeWindow:fullScreenOptions];
}
#endif // (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7)
@end // MMWindowController
@@ -1029,13 +1282,13 @@
shouldRestoreUserTopLeft = NO;
}
if (onScreen && [decoratedWindow screen]) {
NSScreen *screen = [decoratedWindow screen];
if (onScreen && screen) {
// Ensure that the window fits inside the visible part of the screen.
// If there are more than one screen the window will be moved to fit
// entirely in the screen that most of it occupies.
// NOTE: Not called in full-screen mode so use "visibleFrame' instead
// of "frame".
NSRect maxFrame = [[decoratedWindow screen] visibleFrame];
NSRect maxFrame = fullScreenEnabled ? [screen frame]
: [screen visibleFrame];
maxFrame = [self constrainFrame:maxFrame];
if (newFrame.size.width > maxFrame.size.width) {
@@ -1057,6 +1310,16 @@
newFrame.origin.x = NSMaxX(maxFrame) - newFrame.size.width;
}
if (fullScreenEnabled && screen) {
// Keep window centered when in native full-screen.
NSRect screenFrame = [screen frame];
newFrame.origin.y = screenFrame.origin.y +
round(0.5*(screenFrame.size.height - newFrame.size.height));
newFrame.origin.x = screenFrame.origin.x +
round(0.5*(screenFrame.size.width - newFrame.size.width));
}
ASLogDebug(@"Set window frame: %@", NSStringFromRect(newFrame));
[decoratedWindow setFrame:newFrame display:YES];
NSPoint oldTopLeft = { frame.origin.x, NSMaxY(frame) };
@@ -1083,7 +1346,7 @@
// NOTE: This may be called in both windowed and full-screen mode. The
// "visibleFrame" method does not overlap menu and dock so should not be
// used in full-screen.
NSRect screenRect = fullscreenEnabled ? [[win screen] frame]
NSRect screenRect = fullScreenEnabled ? [[win screen] frame]
: [[win screen] visibleFrame];
NSRect rect = [win contentRectForFrameRect:screenRect];
@@ -1147,6 +1410,22 @@
return reply;
}
- (void)updateTablineSeparator
{
BOOL tabBarVisible = ![[vimView tabBarControl] isHidden];
BOOL toolbarHidden = [decoratedWindow toolbar] == nil;
BOOL windowTextured = ([decoratedWindow styleMask] &
NSTexturedBackgroundWindowMask) != 0;
BOOL hideSeparator = NO;
if (fullScreenEnabled || tabBarVisible)
hideSeparator = YES;
else
hideSeparator = toolbarHidden && !windowTextured;
[self hideTablineSeparator:hideSeparator];
}
- (void)hideTablineSeparator:(BOOL)hide
{
// The full-screen window has no tabline separator so we operate on
@@ -1203,28 +1482,95 @@
- (void)updateToolbar
{
NSToolbar *toolbar = [decoratedWindow toolbar];
if (nil == toolbar || 0 == updateToolbarFlag) return;
// Positive flag shows toolbar, negative hides it.
BOOL on = updateToolbarFlag > 0 ? YES : NO;
[toolbar setVisible:on];
if (([decoratedWindow styleMask] & NSTexturedBackgroundWindowMask) == 0) {
if (!on) {
[self hideTablineSeparator:YES];
} else {
[self hideTablineSeparator:![[vimView tabBarControl] isHidden]];
}
} else {
// Textured windows don't have a line below there title bar, so we
// need the separator in this case as well. In fact, the only case
// where we don't need the separator is when the tab bar control
// is visible (because it brings its own separator).
[self hideTablineSeparator:![[vimView tabBarControl] isHidden]];
}
[decoratedWindow setToolbar:(on ? toolbar : nil)];
[self updateTablineSeparator];
updateToolbarFlag = 0;
}
- (BOOL)maximizeWindow:(int)options
{
int currRows, currColumns;
[[vimView textView] getMaxRows:&currRows columns:&currColumns];
// NOTE: Do not use [NSScreen visibleFrame] when determining the screen
// size since it compensates for menu and dock.
int maxRows, maxColumns;
NSSize size = [[NSScreen mainScreen] frame].size;
[vimView constrainRows:&maxRows columns:&maxColumns toSize:size];
ASLogDebug(@"Window dimensions max: %dx%d current: %dx%d",
maxRows, maxColumns, currRows, currColumns);
// Compute current fu size
int fuRows = currRows, fuColumns = currColumns;
if (options & FUOPT_MAXVERT)
fuRows = maxRows;
if (options & FUOPT_MAXHORZ)
fuColumns = maxColumns;
// If necessary, resize vim to target fu size
if (currRows != fuRows || currColumns != fuColumns) {
// The size sent here is queued and sent to vim when it's in
// event processing mode again. Make sure to only send the values we
// care about, as they override any changes that were made to 'lines'
// and 'columns' after 'fu' was set but before the event loop is run.
NSData *data = nil;
int msgid = 0;
if (currRows != fuRows && currColumns != fuColumns) {
int newSize[2] = { fuRows, fuColumns };
data = [NSData dataWithBytes:newSize length:2*sizeof(int)];
msgid = SetTextDimensionsMsgID;
} else if (currRows != fuRows) {
data = [NSData dataWithBytes:&fuRows length:sizeof(int)];
msgid = SetTextRowsMsgID;
} else if (currColumns != fuColumns) {
data = [NSData dataWithBytes:&fuColumns length:sizeof(int)];
msgid = SetTextColumnsMsgID;
}
NSParameterAssert(data != nil && msgid != 0);
ASLogDebug(@"%s: %dx%d", MessageStrings[msgid], fuRows, fuColumns);
MMVimController *vc = [self vimController];
[vc sendMessage:msgid data:data];
[[vimView textView] setMaxRows:fuRows columns:fuColumns];
// Indicate that window was resized
return YES;
}
// Indicate that window was not resized
return NO;
}
- (void)applicationDidChangeScreenParameters:(NSNotification *)notification
{
if (fullScreenWindow) {
[fullScreenWindow applicationDidChangeScreenParameters:notification];
} else if (fullScreenEnabled) {
ASLogDebug(@"Re-maximizing full-screen window...");
[self maximizeWindow:fullScreenOptions];
}
}
- (void)enterNativeFullScreen
{
if (fullScreenEnabled)
return;
ASLogInfo(@"Enter native full-screen");
fullScreenEnabled = YES;
// NOTE: fullScreenEnabled is used to detect if we enter full-screen
// programatically and so must be set before calling realToggleFullScreen:.
NSParameterAssert(fullScreenEnabled == YES);
[decoratedWindow realToggleFullScreen:self];
}
@end // MMWindowController (Private)
+6 -3
View File
@@ -22,6 +22,9 @@
#ifndef MAC_OS_X_VERSION_10_6
# define MAC_OS_X_VERSION_10_6 1060
#endif
#ifndef MAC_OS_X_VERSION_10_7
# define MAC_OS_X_VERSION_10_7 1070
#endif
//
@@ -156,8 +159,8 @@ enum {
AdjustLinespaceMsgID,
ActivateMsgID,
SetServerNameMsgID,
EnterFullscreenMsgID,
LeaveFullscreenMsgID,
EnterFullScreenMsgID,
LeaveFullScreenMsgID,
SetBuffersModifiedMsgID,
AddInputMsgID,
SetPreEditPositionMsgID,
@@ -169,7 +172,7 @@ enum {
SetDocumentFilenameMsgID,
OpenWithArgumentsMsgID,
CloseWindowMsgID,
SetFullscreenColorMsgID,
SetFullScreenColorMsgID,
ShowFindReplaceDialogMsgID,
FindReplaceMsgID,
ActivateKeyScriptMsgID,
+3 -3
View File
@@ -66,8 +66,8 @@ char *MessageStrings[] =
"AdjustLinespaceMsgID",
"ActivateMsgID",
"SetServerNameMsgID",
"EnterFullscreenMsgID",
"LeaveFullscreenMsgID",
"EnterFullScreenMsgID",
"LeaveFullScreenMsgID",
"SetBuffersModifiedMsgID",
"AddInputMsgID",
"SetPreEditPositionMsgID",
@@ -79,7 +79,7 @@ char *MessageStrings[] =
"SetDocumentFilenameMsgID",
"OpenWithArgumentsMsgID",
"CloseWindowMsgID",
"SetFullscreenColorMsgID",
"SetFullScreenColorMsgID",
"ShowFindReplaceDialogMsgID",
"FindReplaceMsgID",
"ActivateKeyScriptMsgID",
+11 -9
View File
@@ -25,7 +25,7 @@
1D493DBA0C52534300AB718C /* PSMTabBarControl.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 1D493DB90C52533B00AB718C /* PSMTabBarControl.framework */; };
1D60088B0E96A0B2003763F0 /* MMFindReplaceController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D60088A0E96A0B2003763F0 /* MMFindReplaceController.m */; };
1D80591F0E1185EA001699D1 /* Miscellaneous.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D80591D0E1185EA001699D1 /* Miscellaneous.m */; };
1D80FBD40CBBD3B700102A1C /* MMFullscreenWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D80FBD00CBBD3B700102A1C /* MMFullscreenWindow.m */; };
1D80FBD40CBBD3B700102A1C /* MMFullScreenWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D80FBD00CBBD3B700102A1C /* MMFullScreenWindow.m */; };
1D80FBD60CBBD3B700102A1C /* MMVimView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D80FBD20CBBD3B700102A1C /* MMVimView.m */; };
1D8B5A53104AF9FF002E59D5 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D8B5A52104AF9FF002E59D5 /* Carbon.framework */; };
1D8BEA74104992290069B072 /* FindAndReplace.nib in Resources */ = {isa = PBXBuildFile; fileRef = 1D8BEA73104992290069B072 /* FindAndReplace.nib */; };
@@ -159,8 +159,8 @@
1D60088A0E96A0B2003763F0 /* MMFindReplaceController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MMFindReplaceController.m; sourceTree = "<group>"; };
1D80591D0E1185EA001699D1 /* Miscellaneous.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Miscellaneous.m; sourceTree = "<group>"; };
1D8059220E118663001699D1 /* Miscellaneous.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Miscellaneous.h; sourceTree = "<group>"; };
1D80FBCF0CBBD3B700102A1C /* MMFullscreenWindow.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MMFullscreenWindow.h; sourceTree = "<group>"; };
1D80FBD00CBBD3B700102A1C /* MMFullscreenWindow.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = MMFullscreenWindow.m; sourceTree = "<group>"; };
1D80FBCF0CBBD3B700102A1C /* MMFullScreenWindow.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MMFullScreenWindow.h; sourceTree = "<group>"; };
1D80FBD00CBBD3B700102A1C /* MMFullScreenWindow.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = MMFullScreenWindow.m; sourceTree = "<group>"; };
1D80FBD10CBBD3B700102A1C /* MMVimView.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MMVimView.h; sourceTree = "<group>"; };
1D80FBD20CBBD3B700102A1C /* MMVimView.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = MMVimView.m; sourceTree = "<group>"; };
1D8B5A52104AF9FF002E59D5 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
@@ -254,8 +254,8 @@
1DE9B94E0D341AB8008FEDD4 /* MMWindow.m */,
1D9918460D299F9900A96335 /* MMAtsuiTextView.h */,
1D9918470D299F9900A96335 /* MMAtsuiTextView.m */,
1D80FBCF0CBBD3B700102A1C /* MMFullscreenWindow.h */,
1D80FBD00CBBD3B700102A1C /* MMFullscreenWindow.m */,
1D80FBCF0CBBD3B700102A1C /* MMFullScreenWindow.h */,
1D80FBD00CBBD3B700102A1C /* MMFullScreenWindow.m */,
1D80FBD10CBBD3B700102A1C /* MMVimView.h */,
1D80FBD20CBBD3B700102A1C /* MMVimView.m */,
1DD66ECB0C803D3600EBDAB3 /* MMApplication.h */,
@@ -538,7 +538,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "# Clear deployment target, else the python script always thinks we're building on Tiger\nunset MACOSX_DEPLOYMENT_TARGET\n\n# Generate the icons (redirect stderr to ignore warnings)\ncd $PROJECT_DIR/icons/\nmake OUTDIR=$TARGET_BUILD_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH 2> /dev/null\n";
shellScript = "# Clear deployment target, else the python script always thinks we're building on Tiger\nunset MACOSX_DEPLOYMENT_TARGET\n\n# Generate the icons (redirect stderr to ignore warnings)\ncd \"$PROJECT_DIR\"/icons/\nmake OUTDIR=\"$TARGET_BUILD_DIR\"/$UNLOCALIZED_RESOURCES_FOLDER_PATH 2> /dev/null\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
@@ -557,7 +557,7 @@
1D1474BC0C567A910038FA2B /* MMWindowController.m in Sources */,
1D09AB420C6A4D520045497E /* MMTypesetter.m in Sources */,
1DD66ECE0C803D3600EBDAB3 /* MMApplication.m in Sources */,
1D80FBD40CBBD3B700102A1C /* MMFullscreenWindow.m in Sources */,
1D80FBD40CBBD3B700102A1C /* MMFullScreenWindow.m in Sources */,
1D80FBD60CBBD3B700102A1C /* MMVimView.m in Sources */,
1D9918490D299F9900A96335 /* MMAtsuiTextView.m in Sources */,
1DE9B9500D341AB8008FEDD4 /* MMWindow.m in Sources */,
@@ -622,7 +622,7 @@
buildSettings = {
ARCHS = "$(NATIVE_ARCH_ACTUAL)";
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 59;
CURRENT_PROJECT_VERSION = 62;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)",
@@ -652,7 +652,7 @@
buildSettings = {
ARCHS = "$(NATIVE_ARCH_ACTUAL)";
COPY_PHASE_STRIP = YES;
CURRENT_PROJECT_VERSION = 59;
CURRENT_PROJECT_VERSION = 62;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)",
@@ -679,6 +679,7 @@
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(NATIVE_ARCH_ACTUAL)";
GCC_VERSION = 4.2;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
ONLY_ACTIVE_ARCH = YES;
@@ -691,6 +692,7 @@
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(NATIVE_ARCH_ACTUAL)";
GCC_VERSION = 4.2;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
ONLY_ACTIVE_ARCH = YES;
+10
View File
@@ -53,6 +53,7 @@ extern NSString *MMLastWindowClosedBehaviorKey;
extern NSString *MMUseInlineImKey;
#endif // INCLUDE_OLD_IM_CODE
extern NSString *MMSuppressTerminationAlertKey;
extern NSString *MMNativeFullScreenKey;
// Enum for MMUntitledWindowKey
@@ -81,6 +82,15 @@ enum {
enum {
// These values are chosen so that the min text view size is not too small
// with the default font (they only affect resizing with the mouse, you can
// still use e.g. ":set lines=2" to go below these values).
MMMinRows = 4,
MMMinColumns = 30
};
@interface NSIndexSet (MMExtras)
+ (id)indexSetWithVimList:(NSString *)list;
+2 -1
View File
@@ -45,6 +45,7 @@ NSString *MMLastWindowClosedBehaviorKey = @"MMLastWindowClosedBehavior";
NSString *MMUseInlineImKey = @"MMUseInlineIm";
#endif // INCLUDE_OLD_IM_CODE
NSString *MMSuppressTerminationAlertKey = @"MMSuppressTerminationAlert";
NSString *MMNativeFullScreenKey = @"MMNativeFullScreen";
@@ -219,7 +220,7 @@ NSString *MMSuppressTerminationAlertKey = @"MMSuppressTerminationAlert";
- (NSToolbarItem *)itemAtIndex:(NSUInteger)idx
{
NSArray *items = [self items];
if (idx < 0 || idx >= [items count])
if (idx >= [items count])
return nil;
return [items objectAtIndex:idx];
@@ -417,7 +417,11 @@
isa = PBXProject;
buildConfigurationList = C056398B08A954F8003078D8 /* Build configuration list for PBXProject "PSMTabBarControl" */;
compatibilityVersion = "Xcode 2.4";
developmentRegion = English;
hasScannedForEncodings = 1;
knownRegions = (
en,
);
mainGroup = 0259C574FE90428111CA0C5A /* PSMTabBarControl */;
projectDirPath = "";
projectRoot = "";
@@ -547,6 +551,7 @@
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h";
GCC_VERSION = 4.2;
INFOPLIST_FILE = "PSMTabBarControlFramework-Info.plist";
INSTALL_PATH = "@executable_path/../Frameworks";
ONLY_ACTIVE_ARCH = YES;
@@ -568,6 +573,7 @@
GCC_MODEL_TUNING = G5;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h";
GCC_VERSION = 4.2;
INFOPLIST_FILE = "PSMTabBarControlFramework-Info.plist";
INSTALL_PATH = "@executable_path/../Frameworks";
ONLY_ACTIVE_ARCH = YES;
@@ -418,6 +418,7 @@
labelPosition += closeButtonSize.width + kPSMTabBarCellPadding;
}
#if 0 // MacVim: disable this code. It is unused and calling 'content' on the represented object's identifier seems dangerous at best.
// icon
if([cell hasIcon]){
NSRect iconRect = [self iconRectForTabCell:cell];
@@ -430,7 +431,8 @@
// scoot label over
labelPosition += iconRect.size.width + kPSMTabBarCellPadding;
}
#endif
// object counter
if([cell count] > 0){
[[NSColor colorWithCalibratedWhite:0.3 alpha:0.45] set];
@@ -451,8 +453,7 @@
counterStringRect.origin.y = myRect.origin.y + ((myRect.size.height - counterStringRect.size.height) / 2.0) + 0.5;
[counterString drawInRect:counterStringRect];
}
// label rect
NSRect labelRect;
labelRect.origin.x = labelPosition;
@@ -402,7 +402,8 @@ void MyNSDrawWindowBackground(NSRect rect)
// scoot label over
labelPosition += closeButtonSize.width + kPSMTabBarCellPadding;
}
#if 0 // MacVim: disable this code. It is unused and calling 'content' on the represented object's identifier seems dangerous at best.
// icon
if([cell hasIcon]){
NSRect iconRect = [self iconRectForTabCell:cell];
@@ -415,7 +416,8 @@ void MyNSDrawWindowBackground(NSRect rect)
// scoot label over
labelPosition += iconRect.size.width + kPSMTabBarCellPadding;
}
#endif
// object counter
if([cell count] > 0){
[[NSColor colorWithCalibratedWhite:0.3 alpha:0.6] set];
@@ -438,7 +440,7 @@ void MyNSDrawWindowBackground(NSRect rect)
counterStringRect.origin.y = myRect.origin.y + ((myRect.size.height - counterStringRect.size.height) / 2.0) + 0.5;
[counterString drawInRect:counterStringRect];
}
// label rect
NSRect labelRect;
labelRect.origin.x = labelPosition;
@@ -10,6 +10,14 @@
@implementation PSMRolloverButton
- (void)dealloc
{
[_usualImage release];
[_rolloverImage release];
[super dealloc];
}
// the regular image
- (void)setUsualImage:(NSImage *)newImage
{
@@ -407,7 +407,7 @@
[[cell indicator] setHidden:YES];
if([item identifier] != nil){
if([[item identifier] respondsToSelector:@selector(content)]){
if([[[[cell representedObject] identifier] content] respondsToSelector:@selector(isProcessing)]){
if([[[[cell representedObject] identifier] performSelector:@selector(content)] respondsToSelector:@selector(isProcessing)]){
NSMutableDictionary *bindingOptions = [NSMutableDictionary dictionary];
[bindingOptions setObject:NSNegateBooleanTransformerName forKey:@"NSValueTransformerName"];
[[cell indicator] bind:@"animate" toObject:[item identifier] withKeyPath:@"selection.isProcessing" options:nil];
@@ -421,7 +421,7 @@
[cell setHasIcon:NO];
if([item identifier] != nil){
if([[item identifier] respondsToSelector:@selector(content)]){
if([[[[cell representedObject] identifier] content] respondsToSelector:@selector(icon)]){
if([[[[cell representedObject] identifier] performSelector:@selector(content)] respondsToSelector:@selector(icon)]){
NSMutableDictionary *bindingOptions = [NSMutableDictionary dictionary];
[bindingOptions setObject:NSIsNotNilTransformerName forKey:@"NSValueTransformerName"];
[cell bind:@"hasIcon" toObject:[item identifier] withKeyPath:@"selection.icon" options:bindingOptions];
@@ -434,7 +434,7 @@
[cell setCount:0];
if([item identifier] != nil){
if([[item identifier] respondsToSelector:@selector(content)]){
if([[[[cell representedObject] identifier] content] respondsToSelector:@selector(objectCount)]){
if([[[[cell representedObject] identifier] performSelector:@selector(content)] respondsToSelector:@selector(objectCount)]){
[cell bind:@"count" toObject:[item identifier] withKeyPath:@"selection.objectCount" options:nil];
[[item identifier] addObserver:self forKeyPath:@"selection.objectCount" options:0 context:nil];
}
@@ -398,7 +398,8 @@
// scoot label over
labelPosition += closeButtonSize.width + kPSMTabBarCellPadding;
}
#if 0 // MacVim: disable this code. It is unused and calling 'content' on the represented object's identifier seems dangerous at best.
// icon
if([cell hasIcon]){
NSRect iconRect = [self iconRectForTabCell:cell];
@@ -411,7 +412,8 @@
// scoot label over
labelPosition += iconRect.size.width + kPSMTabBarCellPadding;
}
#endif
// object counter
if([cell count] > 0){
[[NSColor colorWithCalibratedWhite:0.3 alpha:0.6] set];
@@ -433,7 +435,7 @@
counterStringRect.origin.y = myRect.origin.y + ((myRect.size.height - counterStringRect.size.height) / 2.0) + 0.5;
[counterString drawInRect:counterStringRect];
}
// label rect
NSRect labelRect;
labelRect.origin.x = labelPosition;
+3 -3
View File
@@ -1675,14 +1675,14 @@ gui_mch_toggle_tearoffs(int enable)
void
gui_mch_enter_fullscreen(int fuoptions_flags, guicolor_T bg)
{
[[MMBackend sharedInstance] enterFullscreen:fuoptions_flags background:bg];
[[MMBackend sharedInstance] enterFullScreen:fuoptions_flags background:bg];
}
void
gui_mch_leave_fullscreen()
{
[[MMBackend sharedInstance] leaveFullscreen];
[[MMBackend sharedInstance] leaveFullScreen];
}
@@ -1699,7 +1699,7 @@ gui_mch_fuopt_update()
bg = fuoptions_bgcolor;
}
[[MMBackend sharedInstance] setFullscreenBackgroundColor:bg];
[[MMBackend sharedInstance] setFullScreenBackgroundColor:bg];
}
+3 -3
View File
@@ -16,12 +16,12 @@ OUTDIR ?= .
# step requires an internet connection.
$(OUTDIR)/MacVim-generic.icns:
cp -pR MacVim-*.icns $(OUTDIR)/
cp -pR MacVim-*.icns "$(OUTDIR)"/
all: make_icons.py vim-noshadow-512.png loadfont.so
rm -f MacVim-*.icns
$(MAKE) -C makeicns
/usr/bin/python make_icons.py $(OUTDIR)
/usr/bin/python make_icons.py "$(OUTDIR)"
loadfont.so: loadfont.c
/usr/bin/python setup.py install --install-lib .
@@ -40,6 +40,6 @@ EnvyCodeR.zip:
clean:
$(MAKE) -C makeicns clean
rm -f $(OUTDIR)/MacVim-*.icns loadfont.so *.pyc \
rm -f "$(OUTDIR)"/MacVim-*.icns loadfont.so *.pyc \
EnvyCodeR.zip *.ttf *.reg *.txt
rm -rf *.egginfo build # Created by setup.py
+8 -1
View File
@@ -108,6 +108,13 @@ endif
# on NT, it's here:
PERLLIB=$(PERL)/lib
PERLLIBS=$(PERLLIB)/Core
XSUBPP=$(PERLLIB)/ExtUtils/xsubpp
XSUBPP_EXISTS=$(shell perl -e "print 1 unless -e '$(XSUBPP)'")
ifeq "$(XSUBPP_EXISTS)" ""
XSUBPP=perl $(XSUBPP)
else
XSUBPP=xsubpp
endif
endif
# uncomment 'LUA' if you want a Lua-enabled version
@@ -696,7 +703,7 @@ ifeq (16, $(RUBY))
endif
if_perl.c: if_perl.xs typemap
perl $(PERLLIB)/ExtUtils/xsubpp -prototypes -typemap \
$(XSUBPP) -prototypes -typemap \
$(PERLLIB)/ExtUtils/typemap if_perl.xs > $@
$(OUTDIR)/netbeans.o: netbeans.c $(INCL) $(NBDEBUG_INCL) $(NBDEBUG_SRC)
+6 -1
View File
@@ -785,6 +785,11 @@ PERL_EXE = $(PERL)\Bin$(PERL_ARCH)\perl
PERL_INC = /I $(PERL_INCDIR)
PERL_OBJ = $(OUTDIR)\if_perl.obj $(OUTDIR)\if_perlsfio.obj
XSUBPP = $(PERL)\lib\ExtUtils\xsubpp
!if exist($(XSUBPP))
XSUBPP = $(PERL_EXE) $(XSUBPP)
!else
XSUBPP = xsubpp
!endif
XSUBPP_TYPEMAP = $(PERL)\lib\ExtUtils\typemap
!endif
@@ -1041,7 +1046,7 @@ $(OUTDIR)/if_lua.obj: $(OUTDIR) if_lua.c $(INCL)
$(CC) $(CFLAGS) $(LUA_INC) if_lua.c
if_perl.c : if_perl.xs typemap
$(PERL_EXE) $(XSUBPP) -prototypes -typemap $(XSUBPP_TYPEMAP) \
$(XSUBPP) -prototypes -typemap $(XSUBPP_TYPEMAP) \
-typemap typemap if_perl.xs > if_perl.c
$(OUTDIR)/if_perl.obj: $(OUTDIR) if_perl.c $(INCL)
+2 -3
View File
@@ -549,7 +549,7 @@ static BOOL VimOpenFile(BSTR& FileName, long LineNr)
if (g_bNewTabs)
{
sprintf(VimCmd, ":tab drop ");
s = VimCmd + 11;
s = VimCmd + 10;
}
else
{
@@ -557,8 +557,7 @@ static BOOL VimOpenFile(BSTR& FileName, long LineNr)
s = VimCmd + 6;
}
sprintf(FileNameTmp, "%S", (char *)FileName);
for (p = FileNameTmp; *p != '\0' && s < FileNameTmp + MAX_OLE_STR - 4;
++p)
for (p = FileNameTmp; *p != '\0' && s < VimCmd + MAX_OLE_STR - 4; ++p)
if (*p == '\\')
*s++ = '/';
else
+1 -1
View File
@@ -123,7 +123,7 @@
#define DCS 0x90 /* Device Control String */
#define STERM 0x9c /* String Terminator */
#define POUND '£'
#define POUND '\xA3'
#define CTRL_F_STR "\056"
#define CTRL_H_STR "\026"
+4 -4
View File
@@ -5814,7 +5814,7 @@ __:
eof
eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
rm -f -- "${tmp_mkf}"
vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}"
vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
@@ -5992,7 +5992,7 @@ echo $ECHO_N "checking whether we can do without RTLD_GLOBAL for Python... $ECHO
cflags_save=$CFLAGS
CFLAGS="$CFLAGS $PYTHON_CFLAGS"
ldflags_save=$LDFLAGS
LDFLAGS="$LDFLAGS -ldl"
LDFLAGS="-ldl $LDFLAGS"
if test "$cross_compiling" = yes; then
{ { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
See \`config.log' for more details." >&5
@@ -6083,7 +6083,7 @@ echo $ECHO_N "checking whether we can do without RTLD_GLOBAL for Python3... $ECH
cflags_save=$CFLAGS
CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
ldflags_save=$LDFLAGS
LDFLAGS="$LDFLAGS -ldl"
LDFLAGS="-ldl $LDFLAGS"
if test "$cross_compiling" = yes; then
{ { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
See \`config.log' for more details." >&5
@@ -20625,7 +20625,7 @@ do
cat >>$CONFIG_STATUS <<_ACEOF
# First, check the format of the line:
cat >"\$tmp/defines.sed" <<\\CEOF
/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def
/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*/b def
/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def
b
:def
+18 -4
View File
@@ -416,6 +416,12 @@ close_buffer(win, buf, action)
#endif
buf_freeall(buf, (del_buf ? BFA_DEL : 0) + (wipe_buf ? BFA_WIPE : 0));
if (
#ifdef FEAT_WINDOWS
win_valid(win) &&
#endif
win->w_buffer == buf)
win->w_buffer = NULL; /* make sure we don't use the buffer now */
#ifdef FEAT_AUTOCMD
/* Autocommands may have deleted the buffer. */
@@ -564,6 +570,10 @@ buf_freeall(buf, flags)
#ifdef FEAT_DIFF
diff_buf_delete(buf); /* Can't use 'diff' for unloaded buffer. */
#endif
#ifdef FEAT_SYN_HL
if (curwin->w_buffer == buf)
reset_synblock(curwin); /* remove any ownsyntax */
#endif
#ifdef FEAT_FOLDING
/* No folds in an empty buffer. */
@@ -1350,6 +1360,10 @@ set_curbuf(buf, action)
# endif
#endif
{
#ifdef FEAT_SYN_HL
if (prevbuf == curwin->w_buffer)
reset_synblock(curwin);
#endif
#ifdef FEAT_WINDOWS
if (unload)
close_windows(prevbuf, FALSE);
@@ -1399,10 +1413,6 @@ enter_buffer(buf)
foldUpdateAll(curwin); /* update folds (later). */
#endif
#ifdef FEAT_SYN_HL
reset_synblock(curwin);
curwin->w_s = &(buf->b_s);
#endif
/* Get the buffer in the current window. */
curwin->w_buffer = buf;
curbuf = buf;
@@ -1413,6 +1423,10 @@ enter_buffer(buf)
diff_buf_add(curbuf);
#endif
#ifdef FEAT_SYN_HL
curwin->w_s = &(buf->b_s);
#endif
/* Cursor on first line by default. */
curwin->w_cursor.lnum = 1;
curwin->w_cursor.col = 0;
+3
View File
@@ -346,6 +346,9 @@
/* Define if dynamic python does not require RTLD_GLOBAL */
#undef PY_NO_RTLD_GLOBAL
/* Define if dynamic python3 does not require RTLD_GLOBAL */
#undef PY3_NO_RTLD_GLOBAL
/* Define if you want to include the Ruby interpreter. */
#undef FEAT_RUBY
+5 -3
View File
@@ -1100,7 +1100,7 @@ eof
dnl -- delete the lines from make about Entering/Leaving directory
eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
rm -f -- "${tmp_mkf}"
vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}"
vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
dnl remove -ltermcap, it can conflict with an earlier -lncurses
vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
@@ -1193,7 +1193,8 @@ if test "$python_ok" = yes && test "$python3_ok" = yes; then
cflags_save=$CFLAGS
CFLAGS="$CFLAGS $PYTHON_CFLAGS"
ldflags_save=$LDFLAGS
LDFLAGS="$LDFLAGS -ldl"
dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
LDFLAGS="-ldl $LDFLAGS"
AC_RUN_IFELSE([
#include <dlfcn.h>
/* If this program fails, then RTLD_GLOBAL is needed.
@@ -1237,7 +1238,8 @@ if test "$python_ok" = yes && test "$python3_ok" = yes; then
cflags_save=$CFLAGS
CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
ldflags_save=$LDFLAGS
LDFLAGS="$LDFLAGS -ldl"
dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
LDFLAGS="-ldl $LDFLAGS"
AC_RUN_IFELSE([
#include <dlfcn.h>
#include <wchar.h>
+81 -5
View File
@@ -135,6 +135,8 @@ static char_u *compl_orig_text = NULL; /* text as it was before
static int compl_cont_mode = 0;
static expand_T compl_xp;
static int compl_opt_refresh_always = FALSE;
static void ins_ctrl_x __ARGS((void));
static int has_compl_option __ARGS((int dict_opt));
static int ins_compl_accept_char __ARGS((int c));
@@ -153,9 +155,10 @@ static char_u *find_line_end __ARGS((char_u *ptr));
static void ins_compl_free __ARGS((void));
static void ins_compl_clear __ARGS((void));
static int ins_compl_bs __ARGS((void));
static int ins_compl_need_restart __ARGS((void));
static void ins_compl_new_leader __ARGS((void));
static void ins_compl_addleader __ARGS((int c));
static int ins_compl_len __ARGS((void));
static int ins_compl_len __ARGS((void));
static void ins_compl_restart __ARGS((void));
static void ins_compl_set_original_text __ARGS((char_u *str));
static void ins_compl_addfrommatch __ARGS((void));
@@ -163,6 +166,7 @@ static int ins_compl_prep __ARGS((int c));
static buf_T *ins_compl_next_buf __ARGS((buf_T *buf, int flag));
#if defined(FEAT_COMPL_FUNC) || defined(FEAT_EVAL)
static void ins_compl_add_list __ARGS((list_T *list));
static void ins_compl_add_dict __ARGS((dict_T *dict));
#endif
static int ins_compl_get_exp __ARGS((pos_T *ini));
static void ins_compl_delete __ARGS((void));
@@ -3351,7 +3355,7 @@ ins_compl_bs()
/* Deleted more than what was used to find matches or didn't finish
* finding all matches: need to look for matches all over again. */
if (curwin->w_cursor.col <= compl_col + compl_length
|| compl_was_interrupted)
|| ins_compl_need_restart())
ins_compl_restart();
vim_free(compl_leader);
@@ -3364,6 +3368,20 @@ ins_compl_bs()
return K_BS;
}
/*
* Return TRUE when we need to find matches again, ins_compl_restart() is to
* be called.
*/
static int
ins_compl_need_restart()
{
/* Return TRUE if we didn't complete finding matches or when the
* 'completefunc' returned "always" in the "refresh" dictionary item. */
return compl_was_interrupted
|| ((ctrl_x_mode == CTRL_X_FUNCTION || ctrl_x_mode == CTRL_X_OMNI)
&& compl_opt_refresh_always);
}
/*
* Called after changing "compl_leader".
* Show the popup menu with a different set of matches.
@@ -3453,7 +3471,7 @@ ins_compl_addleader(c)
ins_char(c);
/* If we didn't complete finding matches we must search again. */
if (compl_was_interrupted)
if (ins_compl_need_restart())
ins_compl_restart();
vim_free(compl_leader);
@@ -3886,12 +3904,14 @@ expand_by_function(type, base)
int type; /* CTRL_X_OMNI or CTRL_X_FUNCTION */
char_u *base;
{
list_T *matchlist;
list_T *matchlist = NULL;
dict_T *matchdict = NULL;
char_u *args[2];
char_u *funcname;
pos_T pos;
win_T *curwin_save;
buf_T *curbuf_save;
typval_T rettv;
funcname = (type == CTRL_X_FUNCTION) ? curbuf->b_p_cfu : curbuf->b_p_ofu;
if (*funcname == NUL)
@@ -3904,7 +3924,25 @@ expand_by_function(type, base)
pos = curwin->w_cursor;
curwin_save = curwin;
curbuf_save = curbuf;
matchlist = call_func_retlist(funcname, 2, args, FALSE);
/* Call a function, which returns a list or dict. */
if (call_vim_function(funcname, 2, args, FALSE, &rettv) == OK)
{
switch (rettv.v_type)
{
case VAR_LIST:
matchlist = rettv.vval.v_list;
break;
case VAR_DICT:
matchdict = rettv.vval.v_dict;
break;
default:
/* TODO: Give error message? */
clear_tv(&rettv);
break;
}
}
if (curwin_save != curwin || curbuf_save != curbuf)
{
EMSG(_(e_complwin));
@@ -3917,10 +3955,15 @@ expand_by_function(type, base)
EMSG(_(e_compldel));
goto theend;
}
if (matchlist != NULL)
ins_compl_add_list(matchlist);
else if (matchdict != NULL)
ins_compl_add_dict(matchdict);
theend:
if (matchdict != NULL)
dict_unref(matchdict);
if (matchlist != NULL)
list_unref(matchlist);
}
@@ -3948,6 +3991,33 @@ ins_compl_add_list(list)
}
}
/*
* Add completions from a dict.
*/
static void
ins_compl_add_dict(dict)
dict_T *dict;
{
dictitem_T *refresh;
dictitem_T *words;
/* Check for optional "refresh" item. */
compl_opt_refresh_always = FALSE;
refresh = dict_find(dict, (char_u *)"refresh", 7);
if (refresh != NULL && refresh->di_tv.v_type == VAR_STRING)
{
char_u *v = refresh->di_tv.vval.v_string;
if (v != NULL && STRCMP(v, (char_u *)"always") == 0)
compl_opt_refresh_always = TRUE;
}
/* Add completions from a "words" list. */
words = dict_find(dict, (char_u *)"words", 5);
if (words != NULL && words->di_tv.v_type == VAR_LIST)
ins_compl_add_list(words->di_tv.vval.v_list);
}
/*
* Add a match to the list of matches from a typeval_T.
* If the given string is already in the list of completions, then return
@@ -5103,6 +5173,12 @@ ins_complete(c)
return FAIL;
}
/*
* Reset extended parameters of completion, when start new
* completion.
*/
compl_opt_refresh_always = FALSE;
if (col < 0)
col = curs_col;
compl_col = col;
+25 -21
View File
@@ -380,9 +380,6 @@ static dictitem_T vimvars_var;
static void prepare_vimvar __ARGS((int idx, typval_T *save_tv));
static void restore_vimvar __ARGS((int idx, typval_T *save_tv));
#if defined(FEAT_USR_CMDS) && defined(FEAT_CMDL_COMPL)
static int call_vim_function __ARGS((char_u *func, int argc, char_u **argv, int safe, typval_T *rettv));
#endif
static int ex_let_vars __ARGS((char_u *arg, typval_T *tv, int copy, int semicolon, int var_count, char_u *nextchars));
static char_u *skip_var_list __ARGS((char_u *arg, int *var_count, int *semicolon));
static char_u *skip_var_one __ARGS((char_u *arg));
@@ -451,7 +448,6 @@ static void set_ref_in_ht __ARGS((hashtab_T *ht, int copyID));
static void set_ref_in_list __ARGS((list_T *l, int copyID));
static void set_ref_in_item __ARGS((typval_T *tv, int copyID));
static int rettv_dict_alloc __ARGS((typval_T *rettv));
static void dict_unref __ARGS((dict_T *d));
static void dict_free __ARGS((dict_T *d, int recurse));
static dictitem_T *dictitem_copy __ARGS((dictitem_T *org));
static void dictitem_remove __ARGS((dict_T *dict, dictitem_T *item));
@@ -1357,7 +1353,11 @@ eval_to_string(arg, nextcmd, convert)
{
ga_init2(&ga, (int)sizeof(char), 80);
if (tv.vval.v_list != NULL)
{
list_join(&ga, tv.vval.v_list, (char_u *)"\n", TRUE, 0);
if (tv.vval.v_list->lv_len > 0)
ga_append(&ga, NL);
}
ga_append(&ga, NUL);
retval = (char_u *)ga.ga_data;
}
@@ -1559,7 +1559,7 @@ eval_expr(arg, nextcmd)
* arguments are currently supported.
* Returns OK or FAIL.
*/
static int
int
call_vim_function(func, argc, argv, safe, rettv)
char_u *func;
int argc;
@@ -3430,6 +3430,9 @@ ex_call(eap)
{
curwin->w_cursor.lnum = lnum;
curwin->w_cursor.col = 0;
#ifdef FEAT_VIRTUALEDIT
curwin->w_cursor.coladd = 0;
#endif
}
arg = startarg;
if (get_func_tv(name, (int)STRLEN(name), &rettv, &arg,
@@ -6897,7 +6900,7 @@ rettv_dict_alloc(rettv)
* Unreference a Dictionary: decrement the reference count and free it when it
* becomes zero.
*/
static void
void
dict_unref(d)
dict_T *d;
{
@@ -11939,7 +11942,7 @@ f_has(argvars, rettv)
#ifdef FEAT_SEARCHPATH
"file_in_path",
#endif
#if defined(UNIX) && !defined(USE_SYSTEM)
#if (defined(UNIX) && !defined(USE_SYSTEM)) || defined(WIN3264)
"filterpipe",
#endif
#ifdef FEAT_FIND_ID
@@ -14338,7 +14341,7 @@ f_readfile(argvars, rettv)
tolist = 0;
for ( ; filtd < buflen || readlen <= 0; ++filtd)
{
if (buf[filtd] == '\n' || readlen <= 0)
if (readlen <= 0 || buf[filtd] == '\n')
{
/* In binary mode add an empty list item when the last
* non-empty line ends in a '\n'. */
@@ -20807,7 +20810,8 @@ ex_function(eap)
nesting = 0;
for (;;)
{
msg_scroll = TRUE;
if (KeyTyped)
msg_scroll = TRUE;
need_wait_return = FALSE;
sourcing_lnum_off = sourcing_lnum;
@@ -23226,6 +23230,7 @@ modify_fname(src, usedlen, fnamep, bufp, fnamelen)
int c;
int has_fullname = 0;
#ifdef WIN3264
char_u *fname_start = *fnamep;
int has_shortname = 0;
#endif
@@ -23400,24 +23405,25 @@ repeat:
}
#ifdef WIN3264
/* Check shortname after we have done 'heads' and before we do 'tails'
/*
* Handle ":8" after we have done 'heads' and before we do 'tails'.
*/
if (has_shortname)
{
pbuf = NULL;
/* Copy the string if it is shortened by :h */
if (*fnamelen < (int)STRLEN(*fnamep))
/* Copy the string if it is shortened by :h and when it wasn't copied
* yet, because we are going to change it in place. Avoids changing
* the buffer name for "%:8". */
if (*fnamelen < (int)STRLEN(*fnamep) || *fnamep == fname_start)
{
p = vim_strnsave(*fnamep, *fnamelen);
if (p == 0)
if (p == NULL)
return -1;
vim_free(*bufp);
*bufp = *fnamep = p;
}
/* Split into two implementations - makes it easier. First is where
* there isn't a full name already, second is where there is.
*/
* there isn't a full name already, second is where there is. */
if (!has_fullname && !vim_isAbsName(*fnamep))
{
if (shortpath_for_partial(fnamep, bufp, fnamelen) == FAIL)
@@ -23425,18 +23431,16 @@ repeat:
}
else
{
int l;
int l = *fnamelen;
/* Simple case, already have the full-name
/* Simple case, already have the full-name.
* Nearly always shorter, so try first time. */
l = *fnamelen;
if (get_short_pathname(fnamep, bufp, &l) == FAIL)
return -1;
if (l == 0)
{
/* Couldn't find the filename.. search the paths.
*/
/* Couldn't find the filename, search the paths. */
l = *fnamelen;
if (shortpath_for_invalid_fname(fnamep, bufp, &l) == FAIL)
return -1;
+1 -5
View File
@@ -1107,7 +1107,7 @@ do_filter(line1, line2, eap, cmd, do_in, do_out)
if (do_out)
shell_flags |= SHELL_DOOUT;
#if !defined(USE_SYSTEM) && defined(UNIX)
#if (!defined(USE_SYSTEM) && defined(UNIX)) || defined(WIN3264)
if (!do_in && do_out && !p_stmp)
{
/* Use a pipe to fetch stdout of the command, do not use a temp file. */
@@ -3619,10 +3619,6 @@ do_ecmd(fnum, ffname, sfname, eap, newlnum, flags, oldwin)
*/
check_arg_idx(curwin);
#ifdef FEAT_SYN_HL
reset_synblock(curwin); /* remove any ownsyntax */
#endif
#ifdef FEAT_AUTOCMD
if (!auto_buf)
#endif
+8 -1
View File
@@ -5315,7 +5315,9 @@ static struct
{
{EXPAND_AUGROUP, "augroup"},
{EXPAND_BUFFERS, "buffer"},
{EXPAND_COLORS, "color"},
{EXPAND_COMMANDS, "command"},
{EXPAND_COMPILER, "compiler"},
#if defined(FEAT_CSCOPE)
{EXPAND_CSCOPE, "cscope"},
#endif
@@ -5328,10 +5330,15 @@ static struct
{EXPAND_EVENTS, "event"},
{EXPAND_EXPRESSION, "expression"},
{EXPAND_FILES, "file"},
{EXPAND_FILES_IN_PATH, "file_in_path"},
{EXPAND_FILETYPE, "filetype"},
{EXPAND_FUNCTIONS, "function"},
{EXPAND_HELP, "help"},
{EXPAND_HIGHLIGHT, "highlight"},
#if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \
&& (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE))
{EXPAND_LOCALES, "locale"},
#endif
{EXPAND_MAPPINGS, "mapping"},
{EXPAND_MENUS, "menu"},
{EXPAND_OWNSYNTAX, "syntax"},
@@ -7088,7 +7095,7 @@ alist_expand(fnum_list, fnum_len)
old_arg_count = GARGCOUNT;
if (expand_wildcards(old_arg_count, old_arg_files,
&new_arg_file_count, &new_arg_files,
EW_FILE|EW_NOTFOUND|EW_ADDSLASH) == OK
EW_FILE|EW_NOTFOUND|EW_ADDSLASH|EW_NOERROR) == OK
&& new_arg_file_count > 0)
{
alist_set(&global_alist, new_arg_file_count, new_arg_files,
+21 -10
View File
@@ -67,7 +67,7 @@ static int hislen = 0; /* actual length of history tables */
static int hist_char2type __ARGS((int c));
static int in_history __ARGS((int, char_u *, int));
static int in_history __ARGS((int, char_u *, int, int));
# ifdef FEAT_EVAL
static int calc_hist_idx __ARGS((int histype, int num));
# endif
@@ -1977,8 +1977,12 @@ getcmdline_prompt(firstc, prompt, attr, xp_context, xp_arg)
# endif
s = getcmdline(firstc, 1L, 0);
restore_cmdline(&save_ccline);
/* Restore msg_col, the prompt from input() may have changed it. */
msg_col = msg_col_save;
/* Restore msg_col, the prompt from input() may have changed it.
* But only if called recursively and the commandline is therefore being
* restored to an old one; if not, the input() prompt stays on the screen,
* so we need its modified msg_col left intact. */
if (ccline.cmdbuff != NULL)
msg_col = msg_col_save;
return s;
}
@@ -3057,7 +3061,7 @@ cmdline_paste(regname, literally, remcr)
int len;
/* Locate start of last word in the cmd buffer. */
for (w = ccline.cmdbuff + ccline.cmdlen; w > ccline.cmdbuff; )
for (w = ccline.cmdbuff + ccline.cmdpos; w > ccline.cmdbuff; )
{
#ifdef FEAT_MBYTE
if (has_mbyte)
@@ -3075,7 +3079,7 @@ cmdline_paste(regname, literally, remcr)
--w;
}
}
len = (int)((ccline.cmdbuff + ccline.cmdlen) - w);
len = (int)((ccline.cmdbuff + ccline.cmdpos) - w);
if (p_ic ? STRNICMP(w, arg, len) == 0 : STRNCMP(w, arg, len) == 0)
p += len;
}
@@ -5039,7 +5043,7 @@ ExpandRTDir(pat, num_file, file, dirnames)
*num_file = 0;
*file = NULL;
pat_len = STRLEN(pat);
pat_len = (int)STRLEN(pat);
ga_init2(&ga, (int)sizeof(char *), 10);
for (i = 0; dirnames[i] != NULL; ++i)
@@ -5303,13 +5307,15 @@ init_history()
* If 'move_to_front' is TRUE, matching entry is moved to end of history.
*/
static int
in_history(type, str, move_to_front)
in_history(type, str, move_to_front, sep)
int type;
char_u *str;
int move_to_front; /* Move the entry to the front if it exists */
int sep;
{
int i;
int last_i = -1;
char_u *p;
if (hisidx[type] < 0)
return FALSE;
@@ -5318,7 +5324,12 @@ in_history(type, str, move_to_front)
{
if (history[type][i].hisstr == NULL)
return FALSE;
if (STRCMP(str, history[type][i].hisstr) == 0)
/* For search history, check that the separator character matches as
* well. */
p = history[type][i].hisstr;
if (STRCMP(str, p) == 0
&& (type != HIST_SEARCH || sep == p[STRLEN(p) + 1]))
{
if (!move_to_front)
return TRUE;
@@ -5412,7 +5423,7 @@ add_to_history(histype, new_entry, in_map, sep)
}
last_maptick = -1;
}
if (!in_history(histype, new_entry, TRUE))
if (!in_history(histype, new_entry, TRUE, sep))
{
if (++hisidx[histype] == hislen)
hisidx[histype] = 0;
@@ -5991,7 +6002,7 @@ read_viminfo_history(virp)
if (val != NULL && *val != NUL)
{
if (!in_history(type, val + (type == HIST_SEARCH),
viminfo_add_at_front))
viminfo_add_at_front, *val))
{
/* Need to re-allocate to append the separator byte. */
len = STRLEN(val);
+22 -3
View File
@@ -3342,8 +3342,22 @@ buf_write(buf, fname, sfname, start, end, eap, append, forceit,
}
else if (reset_changed && whole)
{
if (!(did_cmd = apply_autocmds_exarg(EVENT_BUFWRITECMD,
sfname, sfname, FALSE, curbuf, eap)))
int was_changed = curbufIsChanged();
did_cmd = apply_autocmds_exarg(EVENT_BUFWRITECMD,
sfname, sfname, FALSE, curbuf, eap);
if (did_cmd)
{
if (was_changed && !curbufIsChanged())
{
/* Written everything correctly and BufWriteCmd has reset
* 'modified': Correct the undo information so that an
* undo now sets 'modified'. */
u_unchanged(curbuf);
u_update_save_nr(curbuf);
}
}
else
{
#ifdef FEAT_QUICKFIX
if (overwriting && bt_nofile(curbuf))
@@ -9082,7 +9096,10 @@ trigger_cursorhold()
{
int state;
if (!did_cursorhold && has_cursorhold() && !Recording
if (!did_cursorhold
&& has_cursorhold()
&& !Recording
&& typebuf.tb_len == 0
#ifdef FEAT_INS_EXPAND
&& !ins_compl_active()
#endif
@@ -9973,6 +9990,8 @@ match_file_pat(pattern, prog, fname, sfname, tail, allow_dirs)
if ((c == ';' || c == '>') && match == FALSE)
{
*pattern = NUL; /* Terminate the string */
/* TODO: match with 'filetype' of buffer that "fname" comes
* from. */
match = mch_check_filetype(fname, type_start);
*pattern = c; /* Restore the terminator */
type_start = pattern + 1;
+6 -3
View File
@@ -1469,11 +1469,14 @@ deleteFoldEntry(gap, idx, recursive)
}
else
{
/* move nested folds one level up, to overwrite the fold that is
/* Move nested folds one level up, to overwrite the fold that is
* deleted. */
moved = fp->fd_nested.ga_len;
if (ga_grow(gap, (int)(moved - 1)) == OK)
{
/* Get "fp" again, the array may have been reallocated. */
fp = (fold_T *)gap->ga_data + idx;
/* adjust fd_top and fd_flags for the moved folds */
nfp = (fold_T *)fp->fd_nested.ga_data;
for (i = 0; i < moved; ++i)
@@ -1486,9 +1489,9 @@ deleteFoldEntry(gap, idx, recursive)
}
/* move the existing folds down to make room */
if (idx < gap->ga_len)
if (idx + 1 < gap->ga_len)
mch_memmove(fp + moved, fp + 1,
sizeof(fold_T) * (gap->ga_len - idx));
sizeof(fold_T) * (gap->ga_len - (idx + 1)));
/* move the contained folds one level up */
mch_memmove(fp, nfp, (size_t)(sizeof(fold_T) * moved));
vim_free(nfp);
+32 -5
View File
@@ -3262,9 +3262,9 @@ do_map(maptype, arg, mode, abbrev)
validate_maphash();
/*
* find end of keys and skip CTRL-Vs (and backslashes) in it
* Find end of keys and skip CTRL-Vs (and backslashes) in it.
* Accept backslash like CTRL-V when 'cpoptions' does not contain 'B'.
* with :unmap white space is included in the keys, no argument possible
* with :unmap white space is included in the keys, no argument possible.
*/
p = keys;
do_backslash = (vim_strchr(p_cpo, CPO_BSLASH) == NULL);
@@ -3964,7 +3964,17 @@ showmap(mp, local)
if (*mp->m_str == NUL)
msg_puts_attr((char_u *)"<Nop>", hl_attr(HLF_8));
else
msg_outtrans_special(mp->m_str, FALSE);
{
/* Remove escaping of CSI, because "m_str" is in a format to be used
* as typeahead. */
char_u *s = vim_strsave(mp->m_str);
if (s != NULL)
{
vim_unescape_csi(s);
msg_outtrans_special(s, FALSE);
vim_free(s);
}
}
#ifdef FEAT_EVAL
if (p_verbose > 0)
last_set_msg(mp->m_script_ID);
@@ -4506,12 +4516,23 @@ eval_map_expr(str, c)
{
char_u *res;
char_u *p;
char_u *expr;
char_u *save_cmd;
pos_T save_cursor;
/* Remove escaping of CSI, because "str" is in a format to be used as
* typeahead. */
expr = vim_strsave(str);
if (expr == NULL)
return NULL;
vim_unescape_csi(expr);
save_cmd = save_cmdline_alloc();
if (save_cmd == NULL)
{
vim_free(expr);
return NULL;
}
/* Forbid changing text or using ":normal" to avoid most of the bad side
* effects. Also restore the cursor position. */
@@ -4521,7 +4542,7 @@ eval_map_expr(str, c)
#endif
set_vim_var_char(c); /* set v:char to the typed character */
save_cursor = curwin->w_cursor;
p = eval_to_string(str, NULL, FALSE);
p = eval_to_string(expr, NULL, FALSE);
--textlock;
#ifdef FEAT_EX_EXTRA
--ex_normal_lock;
@@ -4529,8 +4550,11 @@ eval_map_expr(str, c)
curwin->w_cursor = save_cursor;
restore_cmdline_alloc(save_cmd);
vim_free(expr);
if (p == NULL)
return NULL;
/* Escape CSI in the result to be able to use the string as typeahead. */
res = vim_strsave_escape_csi(p);
vim_free(p);
@@ -5174,14 +5198,17 @@ static struct initmap
# endif
#endif
#if defined(MACOS) && !defined(FEAT_GUI_MACVIM)
#if defined(MACOS)
# if !defined(FEAT_GUI_MACVIM)
/* Use the Standard MacOS binding. */
/* paste, copy and cut */
/* (These are menu bindings in MacVim, so don't bind them here.) */
{(char_u *)"<D-v> \"*P", NORMAL},
{(char_u *)"<D-v> \"-d\"*P", VIS_SEL},
{(char_u *)"<D-v> <C-R>*", INSERT+CMDLINE},
{(char_u *)"<D-c> \"*y", VIS_SEL},
{(char_u *)"<D-x> \"*d", VIS_SEL},
# endif
{(char_u *)"<Backspace> \"-d", VIS_SEL},
#endif
};
+243 -119
View File
@@ -37,6 +37,24 @@ static void gui_set_fg_color __ARGS((char_u *name));
static void gui_set_bg_color __ARGS((char_u *name));
static win_T *xy2win __ARGS((int x, int y));
#if defined(UNIX) && !defined(__BEOS__) && !defined(MACOS_X) \
&& !defined(__APPLE__)
# define MAY_FORK
static void gui_do_fork __ARGS((void));
static int gui_read_child_pipe __ARGS((int fd));
/* Return values for gui_read_child_pipe */
enum {
GUI_CHILD_IO_ERROR,
GUI_CHILD_OK,
GUI_CHILD_FAILED
};
#endif /* MAY_FORK */
static void gui_attempt_start __ARGS((void));
static int can_update_cursor = TRUE; /* can display the cursor */
/*
@@ -59,51 +77,47 @@ static int can_update_cursor = TRUE; /* can display the cursor */
gui_start()
{
char_u *old_term;
#if defined(UNIX) && !defined(__BEOS__) && !defined(MACOS_X) \
&& !defined(__APPLE__)
/* By the time we get here Mac OS X will already have forked (it does so
* right after scanning the command line) so don't do anything here. This
* means that "f" in 'guioptions' cannot be supported.
*/
# define MAY_FORK
int dofork = TRUE;
#endif
static int recursive = 0;
old_term = vim_strsave(T_NAME);
/*
* Set_termname() will call gui_init() to start the GUI.
* Set the "starting" flag, to indicate that the GUI will start.
*
* We don't want to open the GUI shell until after we've read .gvimrc,
* otherwise we don't know what font we will use, and hence we don't know
* what size the shell should be. So if there are errors in the .gvimrc
* file, they will have to go to the terminal: Set full_screen to FALSE.
* full_screen will be set to TRUE again by a successful termcapinit().
*/
settmode(TMODE_COOK); /* stop RAW mode */
if (full_screen)
cursor_on(); /* needed for ":gui" in .vimrc */
gui.starting = TRUE;
full_screen = FALSE;
#ifdef FEAT_GUI_GTK
gui.event_time = GDK_CURRENT_TIME;
#endif
#ifdef MAY_FORK
if (!gui.dofork || vim_strchr(p_go, GO_FORG) || recursive)
dofork = FALSE;
#endif
++recursive;
termcapinit((char_u *)"builtin_gui");
gui.starting = recursive - 1;
#ifdef MAY_FORK
/*
* Quit the current process and continue in the child.
* Makes "gvim file" disconnect from the shell it was started in.
* Don't do this when Vim was started with "-f" or the 'f' flag is present
* in 'guioptions'.
*/
if (gui.dofork && !vim_strchr(p_go, GO_FORG) && recursive <= 1)
{
gui_do_fork();
}
else
#endif
{
gui_attempt_start();
}
if (!gui.in_use) /* failed to start GUI */
{
termcapinit(old_term); /* back to old term settings */
/* Back to old term settings
*
* FIXME: If we got here because a child process failed and flagged to
* the parent to resume, and X11 is enabled with FEAT_TITLE, this will
* hit an X11 I/O error and do a longjmp(), leaving recursive
* permanently set to 1. This is probably not as big a problem as it
* sounds, because gui_mch_init() in both gui_x11.c and gui_gtk_x11.c
* return "OK" unconditionally, so it would be very difficult to
* actually hit this case.
*/
termcapinit(old_term);
settmode(TMODE_RAW); /* restart RAW mode */
#ifdef FEAT_TITLE
set_title_defaults(); /* set 'title' and 'icon' again */
@@ -112,6 +126,41 @@ gui_start()
vim_free(old_term);
#ifdef FEAT_AUTOCMD
/* If the GUI started successfully, trigger the GUIEnter event, otherwise
* the GUIFailed event. */
gui_mch_update();
apply_autocmds(gui.in_use ? EVENT_GUIENTER : EVENT_GUIFAILED,
NULL, NULL, FALSE, curbuf);
#endif
--recursive;
}
/*
* Set_termname() will call gui_init() to start the GUI.
* Set the "starting" flag, to indicate that the GUI will start.
*
* We don't want to open the GUI shell until after we've read .gvimrc,
* otherwise we don't know what font we will use, and hence we don't know
* what size the shell should be. So if there are errors in the .gvimrc
* file, they will have to go to the terminal: Set full_screen to FALSE.
* full_screen will be set to TRUE again by a successful termcapinit().
*/
static void
gui_attempt_start()
{
static int recursive = 0;
++recursive;
gui.starting = TRUE;
#ifdef FEAT_GUI_GTK
gui.event_time = GDK_CURRENT_TIME;
#endif
termcapinit((char_u *)"builtin_gui");
gui.starting = recursive - 1;
#if defined(FEAT_GUI_GTK) || defined(FEAT_GUI_X11)
if (gui.in_use)
{
@@ -127,96 +176,171 @@ gui_start()
display_errors();
}
#endif
#if defined(MAY_FORK) && !defined(__QNXNTO__)
/*
* Quit the current process and continue in the child.
* Makes "gvim file" disconnect from the shell it was started in.
* Don't do this when Vim was started with "-f" or the 'f' flag is present
* in 'guioptions'.
*/
if (gui.in_use && dofork)
{
int pipefd[2]; /* pipe between parent and child */
int pipe_error;
char dummy;
pid_t pid = -1;
/* Setup a pipe between the child and the parent, so that the parent
* knows when the child has done the setsid() call and is allowed to
* exit. */
pipe_error = (pipe(pipefd) < 0);
pid = fork();
if (pid > 0) /* Parent */
{
/* Give the child some time to do the setsid(), otherwise the
* exit() may kill the child too (when starting gvim from inside a
* gvim). */
if (pipe_error)
ui_delay(300L, TRUE);
else
{
/* The read returns when the child closes the pipe (or when
* the child dies for some reason). */
close(pipefd[1]);
ignored = (int)read(pipefd[0], &dummy, (size_t)1);
close(pipefd[0]);
}
/* When swapping screens we may need to go to the next line, e.g.,
* after a hit-enter prompt and using ":gui". */
if (newline_on_exit)
mch_errmsg("\r\n");
/*
* The parent must skip the normal exit() processing, the child
* will do it. For example, GTK messes up signals when exiting.
*/
_exit(0);
}
# if defined(HAVE_SETSID) || defined(HAVE_SETPGID)
/*
* Change our process group. On some systems/shells a CTRL-C in the
* shell where Vim was started would otherwise kill gvim!
*/
if (pid == 0) /* child */
# if defined(HAVE_SETSID)
(void)setsid();
# else
(void)setpgid(0, 0);
# endif
# endif
if (!pipe_error)
{
close(pipefd[0]);
close(pipefd[1]);
}
# if defined(FEAT_GUI_GNOME) && defined(FEAT_SESSION)
/* Tell the session manager our new PID */
gui_mch_forked();
# endif
}
#else
# if defined(__QNXNTO__)
if (gui.in_use && dofork)
procmgr_daemon(0, PROCMGR_DAEMON_KEEPUMASK | PROCMGR_DAEMON_NOCHDIR |
PROCMGR_DAEMON_NOCLOSE | PROCMGR_DAEMON_NODEVNULL);
# endif
#endif
#ifdef FEAT_AUTOCMD
/* If the GUI started successfully, trigger the GUIEnter event, otherwise
* the GUIFailed event. */
gui_mch_update();
apply_autocmds(gui.in_use ? EVENT_GUIENTER : EVENT_GUIFAILED,
NULL, NULL, FALSE, curbuf);
#endif
--recursive;
}
#ifdef MAY_FORK
/* for waitpid() */
# if defined(HAVE_SYS_WAIT_H) || defined(HAVE_UNION_WAIT)
# include <sys/wait.h>
# endif
/*
* Create a new process, by forking. In the child, start the GUI, and in
* the parent, exit.
*
* If something goes wrong, this will return with gui.in_use still set
* to FALSE, in which case the caller should continue execution without
* the GUI.
*
* If the child fails to start the GUI, then the child will exit and the
* parent will return. If the child succeeds, then the parent will exit
* and the child will return.
*/
static void
gui_do_fork()
{
#ifdef __QNXNTO__
procmgr_daemon(0, PROCMGR_DAEMON_KEEPUMASK | PROCMGR_DAEMON_NOCHDIR |
PROCMGR_DAEMON_NOCLOSE | PROCMGR_DAEMON_NODEVNULL);
gui_attempt_start();
return;
#else
int pipefd[2]; /* pipe between parent and child */
int pipe_error;
int status;
int exit_status;
pid_t pid = -1;
FILE *parent_file;
/* Setup a pipe between the child and the parent, so that the parent
* knows when the child has done the setsid() call and is allowed to
* exit. */
pipe_error = (pipe(pipefd) < 0);
pid = fork();
if (pid < 0) /* Fork error */
{
EMSG(_("E851: Failed to create a new process for the GUI"));
return;
}
else if (pid > 0) /* Parent */
{
/* Give the child some time to do the setsid(), otherwise the
* exit() may kill the child too (when starting gvim from inside a
* gvim). */
if (!pipe_error)
{
/* The read returns when the child closes the pipe (or when
* the child dies for some reason). */
close(pipefd[1]);
status = gui_read_child_pipe(pipefd[0]);
if (status == GUI_CHILD_FAILED)
{
/* The child failed to start the GUI, so the caller must
* continue. There may be more error information written
* to stderr by the child. */
# ifdef __NeXT__
wait4(pid, &exit_status, 0, (struct rusage *)0);
# else
waitpid(pid, &exit_status, 0);
# endif
EMSG(_("E852: The child process failed to start the GUI"));
return;
}
else if (status == GUI_CHILD_IO_ERROR)
{
pipe_error = TRUE;
}
/* else GUI_CHILD_OK: parent exit */
}
if (pipe_error)
ui_delay(300L, TRUE);
/* When swapping screens we may need to go to the next line, e.g.,
* after a hit-enter prompt and using ":gui". */
if (newline_on_exit)
mch_errmsg("\r\n");
/*
* The parent must skip the normal exit() processing, the child
* will do it. For example, GTK messes up signals when exiting.
*/
_exit(0);
}
/* Child */
# if defined(HAVE_SETSID) || defined(HAVE_SETPGID)
/*
* Change our process group. On some systems/shells a CTRL-C in the
* shell where Vim was started would otherwise kill gvim!
*/
# if defined(HAVE_SETSID)
(void)setsid();
# else
(void)setpgid(0, 0);
# endif
# endif
if (!pipe_error)
close(pipefd[0]);
# if defined(FEAT_GUI_GNOME) && defined(FEAT_SESSION)
/* Tell the session manager our new PID */
gui_mch_forked();
# endif
if (!pipe_error)
parent_file = fdopen(pipefd[1], "w");
else
parent_file = NULL;
/* Try to start the GUI */
gui_attempt_start();
/* Notify the parent */
if (parent_file != NULL)
{
fputs(gui.in_use ? "ok" : "fail", parent_file);
fclose(parent_file);
}
/* If we failed to start the GUI, exit now. */
if (!gui.in_use)
exit(1);
#endif
}
/*
* Read from a pipe assumed to be connected to the child process (this
* function is called from the parent).
* Return GUI_CHILD_OK if the child successfully started the GUI,
* GUY_CHILD_FAILED if the child failed, or GUI_CHILD_IO_ERROR if there was
* some other error.
*
* The file descriptor will be closed before the function returns.
*/
static int
gui_read_child_pipe(int fd)
{
size_t bytes_read;
FILE *file;
char buffer[10];
file = fdopen(fd, "r");
if (!file)
return GUI_CHILD_IO_ERROR;
bytes_read = fread(buffer, sizeof(char), sizeof(buffer)-1, file);
buffer[bytes_read] = '\0';
fclose(file);
if (strcmp(buffer, "ok") == 0)
return GUI_CHILD_OK;
return GUI_CHILD_FAILED;
}
#endif /* MAY_FORK */
/*
* Call this when vim starts up, whether or not the GUI is started
*/
@@ -1428,7 +1552,7 @@ gui_set_shellsize(mustset, fit_to_display, direction)
if (!gui.shell_created)
return;
#ifdef MSWIN
#if defined(MSWIN) || defined(FEAT_GUI_GTK)
/* If not setting to a user specified size and maximized, calculate the
* number of characters that fit in the maximized window. */
if (!mustset && gui_mch_maximized())
+16 -6
View File
@@ -3899,6 +3899,21 @@ gui_mch_unmaximize()
gtk_window_unmaximize(GTK_WINDOW(gui.mainwin));
}
/*
* Called when the font changed while the window is maximized. Compute the
* new Rows and Columns. This is like resizing the window.
*/
void
gui_mch_newfont()
{
int w, h;
gtk_window_get_size(GTK_WINDOW(gui.mainwin), &w, &h);
w -= get_menu_tool_width();
h -= get_menu_tool_height();
gui_resize_shell(w, h);
}
/*
* Set the windows size.
*/
@@ -4409,14 +4424,9 @@ gui_mch_init_font(char_u *font_name, int fontset UNUSED)
if (gui_mch_maximized())
{
int w, h;
/* Update lines and columns in accordance with the new font, keep the
* window maximized. */
gtk_window_get_size(GTK_WINDOW(gui.mainwin), &w, &h);
w -= get_menu_tool_width();
h -= get_menu_tool_height();
gui_resize_shell(w, h);
gui_mch_newfont();
}
else
{
+775 -775
View File
File diff suppressed because it is too large Load Diff
+27 -2
View File
@@ -1270,6 +1270,25 @@ gui_mch_prepare(int *argc, char **argv)
pGetMonitorInfo = (TGetMonitorInfo)GetProcAddress(user32_lib,
"GetMonitorInfoA");
}
#ifdef FEAT_MBYTE
/* If the OS is Windows NT, use wide functions;
* this enables common dialogs input unicode from IME. */
if (os_version.dwPlatformId == VER_PLATFORM_WIN32_NT)
{
pDispatchMessage = DispatchMessageW;
pGetMessage = GetMessageW;
pIsDialogMessage = IsDialogMessageW;
pPeekMessage = PeekMessageW;
}
else
{
pDispatchMessage = DispatchMessageA;
pGetMessage = GetMessageA;
pIsDialogMessage = IsDialogMessageA;
pPeekMessage = PeekMessageA;
}
#endif
}
/*
@@ -1379,7 +1398,8 @@ gui_mch_init(void)
s_hwnd = CreateWindowEx(
WS_EX_MDICHILD,
szVimWndClass, "Vim MSWindows GUI",
WS_OVERLAPPEDWINDOW | WS_CHILD | WS_CLIPSIBLINGS | 0xC000,
WS_OVERLAPPEDWINDOW | WS_CHILD
| WS_CLIPSIBLINGS | WS_CLIPCHILDREN | 0xC000,
gui_win_x == -1 ? CW_USEDEFAULT : gui_win_x,
gui_win_y == -1 ? CW_USEDEFAULT : gui_win_y,
100, /* Any value will do */
@@ -1410,7 +1430,8 @@ gui_mch_init(void)
* titlebar, it will be reparented below. */
s_hwnd = CreateWindow(
szVimWndClass, "Vim MSWindows GUI",
win_socket_id == 0 ? WS_OVERLAPPEDWINDOW : WS_POPUP,
(win_socket_id == 0 ? WS_OVERLAPPEDWINDOW : WS_POPUP)
| WS_CLIPSIBLINGS | WS_CLIPCHILDREN,
gui_win_x == -1 ? CW_USEDEFAULT : gui_win_x,
gui_win_y == -1 ? CW_USEDEFAULT : gui_win_y,
100, /* Any value will do */
@@ -1574,6 +1595,10 @@ gui_mch_init(void)
#endif
#ifdef FEAT_EVAL
# if _MSC_VER < 1400
/* HandleToLong() only exists in compilers that can do 64 bit builds */
# define HandleToLong(h) ((long)(h))
# endif
/* set the v:windowid variable */
set_vim_var_nr(VV_WINDOWID, HandleToLong(s_hwnd));
#endif
+18 -18
View File
@@ -390,7 +390,7 @@ _OnBlinkTimer(
KillTimer(NULL, idEvent);
/* Eat spurious WM_TIMER messages */
while (PeekMessage(&msg, hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
while (pPeekMessage(&msg, hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
;
if (blink_state == BLINK_ON)
@@ -418,7 +418,7 @@ gui_mswin_rm_blink_timer(void)
{
KillTimer(NULL, blink_timer);
/* Eat spurious WM_TIMER messages */
while (PeekMessage(&msg, s_hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
while (pPeekMessage(&msg, s_hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
;
blink_timer = 0;
}
@@ -476,7 +476,7 @@ _OnTimer(
s_timed_out = TRUE;
/* Eat spurious WM_TIMER messages */
while (PeekMessage(&msg, hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
while (pPeekMessage(&msg, hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
;
if (idEvent == s_wait_timer)
s_wait_timer = 0;
@@ -1411,12 +1411,12 @@ gui_mch_get_color(char_u *name)
static guicolor_tTable table[] =
{
{"Black", RGB(0x00, 0x00, 0x00)},
{"DarkGray", RGB(0x80, 0x80, 0x80)},
{"DarkGrey", RGB(0x80, 0x80, 0x80)},
{"DarkGray", RGB(0xA9, 0xA9, 0xA9)},
{"DarkGrey", RGB(0xA9, 0xA9, 0xA9)},
{"Gray", RGB(0xC0, 0xC0, 0xC0)},
{"Grey", RGB(0xC0, 0xC0, 0xC0)},
{"LightGray", RGB(0xE0, 0xE0, 0xE0)},
{"LightGrey", RGB(0xE0, 0xE0, 0xE0)},
{"LightGray", RGB(0xD3, 0xD3, 0xD3)},
{"LightGrey", RGB(0xD3, 0xD3, 0xD3)},
{"Gray10", RGB(0x1A, 0x1A, 0x1A)},
{"Grey10", RGB(0x1A, 0x1A, 0x1A)},
{"Gray20", RGB(0x33, 0x33, 0x33)},
@@ -1441,19 +1441,19 @@ gui_mch_get_color(char_u *name)
{"LightRed", RGB(0xFF, 0xA0, 0xA0)},
{"DarkBlue", RGB(0x00, 0x00, 0x80)},
{"Blue", RGB(0x00, 0x00, 0xFF)},
{"LightBlue", RGB(0xA0, 0xA0, 0xFF)},
{"LightBlue", RGB(0xAD, 0xD8, 0xE6)},
{"DarkGreen", RGB(0x00, 0x80, 0x00)},
{"Green", RGB(0x00, 0xFF, 0x00)},
{"LightGreen", RGB(0xA0, 0xFF, 0xA0)},
{"LightGreen", RGB(0x90, 0xEE, 0x90)},
{"DarkCyan", RGB(0x00, 0x80, 0x80)},
{"Cyan", RGB(0x00, 0xFF, 0xFF)},
{"LightCyan", RGB(0xA0, 0xFF, 0xFF)},
{"LightCyan", RGB(0xE0, 0xFF, 0xFF)},
{"DarkMagenta", RGB(0x80, 0x00, 0x80)},
{"Magenta", RGB(0xFF, 0x00, 0xFF)},
{"LightMagenta", RGB(0xFF, 0xA0, 0xFF)},
{"Brown", RGB(0x80, 0x40, 0x40)},
{"Yellow", RGB(0xFF, 0xFF, 0x00)},
{"LightYellow", RGB(0xFF, 0xFF, 0xA0)},
{"LightYellow", RGB(0xFF, 0xFF, 0xE0)},
{"DarkYellow", RGB(0xBB, 0xBB, 0x00)},
{"SeaGreen", RGB(0x2E, 0x8B, 0x57)},
{"Orange", RGB(0xFF, 0xA5, 0x00)},
@@ -1707,7 +1707,7 @@ process_message(void)
static char_u k10[] = {K_SPECIAL, 'k', ';', 0};
#endif
GetMessage(&msg, NULL, 0, 0);
pGetMessage(&msg, NULL, 0, 0);
#ifdef FEAT_OLE
/* Look after OLE Automation commands */
@@ -1718,7 +1718,7 @@ process_message(void)
{
/* Message can't be ours, forward it. Fixes problem with Ultramon
* 3.0.4 */
DispatchMessage(&msg);
pDispatchMessage(&msg);
}
else
{
@@ -1749,14 +1749,14 @@ process_message(void)
if (msg.message == WM_USER)
{
MyTranslateMessage(&msg);
DispatchMessage(&msg);
pDispatchMessage(&msg);
return;
}
#endif
#ifdef MSWIN_FIND_REPLACE
/* Don't process messages used by the dialog */
if (s_findrep_hwnd != NULL && IsDialogMessage(s_findrep_hwnd, &msg))
if (s_findrep_hwnd != NULL && pIsDialogMessage(s_findrep_hwnd, &msg))
{
HandleMouseHide(msg.message, msg.lParam);
return;
@@ -1928,7 +1928,7 @@ process_message(void)
if (vk != VK_F10 || check_map(k10, State, FALSE, TRUE, FALSE,
NULL, NULL) == NULL)
#endif
DispatchMessage(&msg);
pDispatchMessage(&msg);
}
/*
@@ -1943,7 +1943,7 @@ gui_mch_update(void)
MSG msg;
if (!s_busy_processing)
while (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)
while (pPeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE)
&& !vim_is_input_buf_full())
process_message();
}
@@ -2019,7 +2019,7 @@ gui_mch_wait_for_chars(int wtime)
KillTimer(NULL, s_wait_timer);
/* Eat spurious WM_TIMER messages */
while (PeekMessage(&msg, s_hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
while (pPeekMessage(&msg, s_hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
;
s_wait_timer = 0;
}

Some files were not shown because too many files have changed in this diff Show More