Compare commits

..

89 Commits

Author SHA1 Message Date
Bjorn Winckler d1182d2223 Snapshot 56 2010-12-21 14:43:24 +01:00
Bjorn Winckler 1be91f7476 Avoid use of CLEAR flag when not using GUI 2010-12-21 11:11:22 +01:00
Bjorn Winckler caabb3f058 Avoid unnecessary clearing of the status line
When resizing a (Vim-) window don't use the CLEAR flag as it causes the
status line to be redrawn (which causes problems for plugins like
Command-T).

The reason CLEAR was used in the first place was because resizing a
window would cause display corruption due to wide letters like "w"
spilling over into the neigboring display cell.  To circumvent this
problem we now always clear neigboring blank cells whenever a cell is
cleared (just like other GUIs deal with faked bold glyphs spilling over
into neighboring display cells).
2010-12-20 21:57:36 +01:00
Bjorn Winckler 50b3a7f8e7 Fix proxy icon response to modified buffers
The proxy icon is only disabled when the current buffer is modified
(previously this happened when any buffer was modified).  This also has
the consequence that the dot in the red "close button" only appears when
the current buffer is modified.
2010-12-19 12:19:30 +01:00
Bjorn Winckler 34d035c0ac Merge branch 'vim'
Conflicts:
	runtime/syntax/vim.vim
2010-12-19 12:18:48 +01:00
Bram Moolenaar e88db6d282 updated for version 7.3.087
Problem:    EINTR is not always defined.
Solution:   Include errno.h in vim.h.
2010-12-17 20:24:01 +01:00
Bram Moolenaar 7d51f1a543 updated for version 7.3.086
Problem:    When using a mapping with an expression and there was no count,
	    v:count has the value of the previous command. (ZyX)
Solution:   Also set v:count and v:count1 before getting the character that
	    could be a command or a count.
2010-12-17 18:53:01 +01:00
Bram Moolenaar cd6656d82b updated for version 7.3.085
Problem:    Inconsistency with preproc symbols.  void * computation.
Solution:   Include vimio.h from vim.h.  Add type cast.
2010-12-17 18:06:06 +01:00
Bram Moolenaar 3017c44c4b updated for version 7.3.084
Problem:    When splitting the window, the new one scrolls with the cursor at
	    the top.
Solution:   Compute w_fraction before setting the new height.
2010-12-17 17:35:10 +01:00
Bram Moolenaar 25ac995bea updated for version 7.3.083
Problem:    When a read() or write() is interrupted by a signal it fails.
Solution:   Add read_eintr() and write_eintr().
2010-12-17 16:27:16 +01:00
Bram Moolenaar 7b65439491 updated for version 7.3.082
Problem:    Leaking file descriptor when hostname doesn't exist.
Solution:   Remove old debugging lines.
2010-12-17 12:19:21 +01:00
Bram Moolenaar f2c486c416 Update runtime files. 2010-12-10 20:35:50 +01:00
Bjorn Winckler c42b133098 Check for conversion error in Core Text renderer
Original patch by Kazuki Sakamoto.
2010-12-10 19:37:19 +01:00
Bjorn Winckler 29697da99f Merge branch 'vim' into merge
Conflicts:
	src/auto/configure
	src/eval.c
	src/netbeans.c
2010-12-10 19:13:58 +01:00
Bram Moolenaar aa0a6d7be4 updated for version 7.3.081
Problem:    Non-printable characters in 'statusline' cause trouble. (ZyX)
Solution:   Use transstr(). (partly by Caio Ariede)
2010-12-08 19:56:58 +01:00
Bram Moolenaar 5a48d473ef updated for version 7.3.080
Problem:    Spell doesn't work on VMS.
Solution:   Use different file names. (Zoltan Bartos, Zoltan Arpadffy)
2010-12-08 17:09:32 +01:00
Bram Moolenaar d6a9ced3b1 updated for version 7.3.079
Problem:    Duplicate lines in makefile.
Solution:   Remove the lines. (Hong Xu)
2010-12-08 14:55:02 +01:00
Bram Moolenaar a1faf70262 updated for version 7.3.078
Problem:    Warning for unused variable.
Solution:   Adjuste #ifdefs.
2010-12-08 14:23:15 +01:00
Bram Moolenaar 115821eae9 updated for version 7.3.077
Problem:    When updating crypt of swapfile fails there is no error message.
	    (Carlo Teubner)
Solution:   Add the error message.
2010-12-08 13:17:03 +01:00
Bram Moolenaar 664e7696dd updated for version 7.3.076
Problem:    Clang warnings for dead code.
Solution:   Remove it. (Carlo Teubner)
2010-12-08 13:11:21 +01:00
Bram Moolenaar 4d81d0d159 updated for version 7.3.075
Problem:    Missing part of 'wildignorecase'
Solution:   Also adjust expand()
2010-12-02 21:44:40 +01:00
Bram Moolenaar 38b368ba4d updated for version 7.3.074
Problem:    Can't use the "+ register like "* for yank and put.
Solution:   Add "unnamedplus" to the 'clipboard' option. (Ivan Krasilnikov)
2010-12-02 21:43:16 +01:00
Bram Moolenaar 3e515b81da updated for version 7.3.073
Problem:    Double free memory when netbeans command follows DETACH.
Solution:   Only free the node when owned. (Xavier de Gaye)
2010-12-02 17:09:54 +01:00
Bram Moolenaar 5ac44c0391 updated for version 7.3.072
Problem:    Can't complete file names while ignoring case.
Solution:   Add 'wildignorecase'.
2010-12-02 16:01:29 +01:00
Bram Moolenaar a17cdd917e updated for version 7.3.071
Problem:    Editing a file in a window that's in diff mode resets 'diff'
	    but not cursor binding.
Solution:   Reset cursor binding in two more places.
2010-12-02 15:33:21 +01:00
Bram Moolenaar 4ece06e069 updated for version 7.3.070
Problem:    Can set environment variables in the sandbox, could be abused.
Solution:   Disallow it.
2010-12-02 14:48:14 +01:00
Bram Moolenaar 7c84bd9153 updated for version 7.3.069
Problem:    GTK: pressing Enter in inputdialog() doesn't work like clicking OK
	    as documented.
Solution:   call gtk_entry_set_activates_default(). (Britton Kerin)
2010-11-24 18:48:12 +01:00
Bram Moolenaar 8601f0b5aa updated for version 7.3.068
Problem:    Using freed memory when doing ":saveas" and an autocommand sets
	    'autochdir'. (Kevin Klement)
Solution:   Get the value of fname again after executing autocommands.
2010-11-24 17:59:32 +01:00
Bram Moolenaar 35e32414c7 updated for version 7.3.067
Problem:    Ruby: Init_prelude is not always available.
Solution:   Remove use of Init_prelude. (Yasuhiro Matsumoto)
2010-11-24 17:03:38 +01:00
Bram Moolenaar e703226fe0 updated for version 7.3.066
Problem:    Crash when changing to another window while in a :vimgrep command.
	    (Christian Brabandt)
Solution:   When wiping out the dummy before, remove it from aucmd_win.
2010-11-24 16:32:05 +01:00
Bram Moolenaar 401556f3b1 updated for version 7.3.065
Problem:    Can't get current line number in a source file.
Solution:   Add the <slnum> item, similar to <sfile>.
2010-11-24 15:50:59 +01:00
Bram Moolenaar 2b09922e3c updated for version 7.3.064
Problem:    Win32: ":dis +" shows nothing, but "+p does insert text.
Solution:   Display the * register, since that's what will be inserted.
	    (Christian Brabandt)
2010-11-24 14:28:58 +01:00
Bram Moolenaar 2286d370ca updated for version 7.3.063
Problem:    Win32: Running a filter command makes Vim lose focus.
Solution:   Use SW_SHOWMINNOACTIVE instead of SW_SHOWMINIMIZED. (Hong Xu)
2010-11-24 12:35:21 +01:00
Bram Moolenaar 96d70531dd Updated runtime files. 2010-11-16 20:34:40 +01:00
Bram Moolenaar 17bcd02554 updated for version 7.3.062
Problem:    Python doesn't work properly when installed in another directory
	    than expected.
Solution:   Figure out home directory in configure and use Py_SetPythonHome()
	    at runtime. (Roland Puntaier)
2010-11-16 19:26:02 +01:00
Bram Moolenaar 4f6c7e6888 updated for version 7.3.061
Problem:    Remote ":drop" does not respect 'autochdir'. (Peter Odding)
Solution:   Don't restore the directory when 'autochdir' is set. (Benjamin
	    Fritz)
2010-11-16 16:25:51 +01:00
Bram Moolenaar 73b4a4e09e updated for version 7.3.060
Problem:    Netbeans: crash when socket is disconnected unexpectedly.
Solution:   Don't cleanup when a read fails, put a message in the queue and
	    disconnect later. (Xavier de Gaye)
2010-11-16 15:49:02 +01:00
Bram Moolenaar 1e08012084 updated for version 7.3.059
Problem:    Netbeans: Problem with recursively handling messages for Athena
	    and Motif.
Solution:   Call netbeans_parse_messages() in the main loop, like it's done
	    for GTK. (Xavier de Gaye)
2010-11-16 15:04:57 +01:00
Bram Moolenaar 29dfc2cfeb updated for version 7.3.058
Problem:    Error "code converter not found" when loading Ruby script.
Solution:   Load Gem module. (Yasuhiro Matsumoto)
2010-11-16 14:46:19 +01:00
Bram Moolenaar 1d286783fc updated for version 7.3.057
Problem:    Segfault with command line abbreviation. (Randy Morris)
Solution:   Don't retrigger the abbreviation when abandoning the command line.
	    Continue editing the command line after the error.
2010-11-16 14:06:08 +01:00
Kazuki Sakamoto dc7ffe83f7 Fix build problem on Leopard 2010-11-16 13:22:14 +01:00
Bram Moolenaar 419aa8ea7e updated for version 7.3.056
Problem:    "getline" argument in do_cmdline() shadows global.
Solution:   Rename the argument.
Files:	    src/ex_docmd.c
2010-11-16 11:32:01 +01:00
Bram Moolenaar a3b7664813 updated for version 7.3.055
Problem:    Recursively nested lists and dictionaries cause a near-endless
	    loop when comparing them with a copy. (ZyX)
Solution:   Limit recursiveness in a way that non-recursive structures can
	    still be nested very deep.
Files:	    src/eval.c, src/testdir/test55.in, src/testdir/test55.ok
2010-11-10 20:41:57 +01:00
Bram Moolenaar a9b86193df updated for version 7.3.054
Problem:    Can define a user command for :Print, but it doesn't work. (Aaron
	    Thoma)
Solution:   Let user command :Print overrule the builtin command (Christian
	    Brabandt)  Disallow :X and :Next as a user defined command.
2010-11-10 19:00:01 +01:00
Bram Moolenaar 6505c5126b updated for version 7.3.053
Problem:    complete() function doesn't reset complete direction.  Can't use
	    an empty string in the list of matches.
Solution:   Set compl_direction to FORWARD.  Add "empty" key to allow empty
	    words. (Kikuchan)
2010-11-10 17:11:33 +01:00
Bram Moolenaar 951183ee1c updated for version 7.3.052
Problem:    When 'completefunc' opens a new window all kinds of errors follow.
	    (Xavier Deguillard)
Solution:   When 'completefunc' goes to another window or buffer and when it
	    deletes text abort completion.  Add a test for 'completefunc'.
2010-11-10 16:54:20 +01:00
Bram Moolenaar 917f0addc2 updated for version 7.3.051
Problem:    Crash when /home/mool/bin:/usr/local/sbin:/usr/local/bin:/home/mool/java/jdk/bin:/bin:/sbin:/usr/bin:/usr/games:/usr/sbin:/usr/X11R6/bin:/usr/local/linux-jdk1.3.1/bin:/usr/local/lib/python2.2/Tools/idle is empty.
Solution:   Check for vim_getenv() returning NULL. (Yasuhiro Matsumoto)
2010-11-10 15:37:05 +01:00
Bjorn Winckler 32e3d8896d Do not process IM state change immediately
IM state change needs to update the cursor which may cause Vim state
changes and so the processing of IM messages needs to be delayed.
2010-11-06 14:09:22 +01:00
Kazuki Sakamoto d2e82df267 Fix to update cursor at the IM state changed
It fixes changing cursor with ":hi CursorIM" even though the cursor
blinking is turned off (:set gcr=a:blinkon0) when the IM state is
changed.
2010-11-06 21:26:40 +09:00
Kazuki Sakamoto 8587729a7a Listen to InputSourceChanged notification
This way Vim is immediately made aware when the input source changes
(previously it polled this on keyboard input) which is useful e.g. if
":hi CursorIM .." is set.
2010-11-05 20:46:29 +01:00
Bram Moolenaar 7282627798 updated for version 7.3.050
Problem:    The link script is clumsy.
Solution:   Use the --as-needed linker option if available. (Kirill A.
	    Shutemov)
2010-11-03 22:32:24 +01:00
Bram Moolenaar 180512e308 updated for version 7.3.049
Problem:    PLT has rebranded their Scheme to Racket.
Solution:   Add support for Racket 5.x. (Sergey Khorev)
2010-11-03 21:59:30 +01:00
Bram Moolenaar 8a2d7636c8 updated for version 7.3.048
Problem:    ":earlier 1f" doesn't work after loading undo file.
Solution:   Set b_u_save_nr_cur when loading an undo file. (Christian
	    Brabandt)
	    Fix only showing time in ":undolist"
2010-11-03 19:32:42 +01:00
Bjorn Winckler 5c71a17d6c Merge branch 'vim'
Conflicts:
	src/auto/configure
2010-11-01 13:39:23 +01:00
Bram Moolenaar 76712c4f9c updated for version 7.3.047
Problem:    Missing makefile updates for test 75.
Solution:   Update the makefiles.
2010-10-27 18:36:36 +02:00
Bram Moolenaar 65cb201df3 Updated runtile files. 2010-10-27 18:34:44 +02:00
Bram Moolenaar cfce532319 updated for version 7.3.046
Problem:    Can't build Ruby on MS-Windows.
Solution:   Add #ifdef, don't use WIN3264 before including vim.h.
2010-10-27 17:40:59 +02:00
Bram Moolenaar 35a2c2a0c3 updated for version 7.3.045
Problem:    Compiler warning for uninitialized variable.
Solution:   Initialize the variable always.
2010-10-27 17:39:05 +02:00
Bram Moolenaar 41a630757e updated for version 7.3.044
Problem:    The preview window opened by the popup menu is larger than
	    specified with 'previewheight'. (Benjamin Haskell)
Solution:   Use 'previewheight' if it's set and smaller.
2010-10-27 17:11:15 +02:00
Bram Moolenaar aa49bfd374 updated for version 7.3.043
Problem:    Can't load Ruby dynamically on Unix.
Solution:   Adjust the configure script. (James Vega)
2010-10-27 16:49:47 +02:00
Bram Moolenaar 745b4e08ad updated for version 7.3.042
Problem:    No spell highlighting when re-using an empty buffer.
Solution:   Clear the spell checking info only when clearing the options for a
	    buffer. (James Vega)
2010-10-27 16:18:00 +02:00
Bram Moolenaar 4641b5152a updated for version 7.3.041
Problem:    Compiler warning for accessing mediumVersion. (Tony Mechelynck)
Solution:   Use the pointer instead of the array itself. (Dominique Pelle)
2010-10-27 16:01:27 +02:00
Bram Moolenaar 2f0e0b3e71 updated for version 7.3.040
Problem:    Comparing strings while ignoring case goes beyond end of the
	    string when there are illegal bytes. (Dominique Pelle)
Solution:   Explicitly check for illegal bytes.
2010-10-27 13:37:44 +02:00
Bram Moolenaar 33685d8d01 updated for version 7.3.039
Problem:    Crash when using skk.vim plugin.
Solution:   Get length of expression evaluation result only after checking for
	    NULL.  (Noriaki Yagi, Dominique Pelle)
2010-10-27 12:58:23 +02:00
Bram Moolenaar c68d7a56e1 updated for version 7.3.038
Problem:    v:windowid isn't set on MS-Windows.
Solution:   Set it to the window handle. (Chris Sutcliffe)
2010-10-27 12:33:17 +02:00
Bram Moolenaar 2f749d43e9 updated for version 7.3.037
Problem:    Compiler warnings for loss of data. (Mike Williams)
Solution:   Add type casts.
2010-10-27 12:18:00 +02:00
Bram Moolenaar ba7586c13b updated for version 7.3.036
Problem:    Win32 GUI: When building without menus, the font for dialogs and
	    tab page headers also changes.
Solution:   Define USE_SYSMENU_FONT always. (Harig G.)
2010-10-27 12:15:33 +02:00
Bram Moolenaar 074c397ed7 updated for version 7.3.035
Problem:    Stray semicolon after if statement. (Hari G)
Solution:   Remove the semicolon.
2010-10-24 14:33:43 +02:00
Bram Moolenaar 8e94a6f547 updated for version 7.3.034
Problem:    Win32: may be loading .dll from the wrong directory.
Solution:   Go to the Vim executable directory when opening a library.
2010-10-23 14:02:54 +02:00
Bram Moolenaar 74cbc24648 updated for version 7.3.033
Problem:    Can't build without FEAT_LOCALMAP.
Solution:   Add an #ifdef. (John Marriott)
2010-10-22 22:13:52 +02:00
Bram Moolenaar 8b9203b419 updated for version 7.3.032
Problem:    maparg() doesn't return the flags, such as <buffer>, <script>,
	    <silent>.  These are needed to save and restore a mapping.
Solution:   Improve maparg(). (also by Christian Brabandt)
2010-10-20 21:23:33 +02:00
Bram Moolenaar 112534aad5 updated for version 7.3.031
Problem:    Can't pass the X window ID to another application.
Solution:   Add v:windowid. (Christian J. Robinson, Lech Lorens)
2010-10-20 19:17:48 +02:00
Bram Moolenaar 679e2d9461 Updated runtime files and translations. 2010-10-20 18:45:33 +02:00
Bram Moolenaar 79603e8b55 updated for version 7.3.030
Problem:    Cannot store Dict and List in viminfo file.
Solution:   Add support for this. (Christian Brabandt)
2010-10-20 17:44:42 +02:00
Bjorn Winckler 243ebf0db8 Use correct screen when constraining views
The view constraining code could get called before the window had been
placed sometimes causing the wrong screen to be used when more than one
monitor was connected.
2010-10-19 11:24:47 +02:00
Bjorn Winckler c9972234b6 Fix cascading with multiple monitors
The window cascading code had an "off by one" bug which could cause the
wrong screen to used when using more than one monitor.
2010-10-19 11:22:26 +02:00
Bram Moolenaar 5055b0389e updated for version 7.3.029
Problem:    ":sort n" sorts lines without a number as number zero. (Beeyawned)
Solution:   Make lines without a number sort before lines with a number.  Also
	    fix sorting negative numbers.
2010-10-15 20:20:05 +02:00
Bjorn Winckler 73626de24f Update help on binding to Cmd-key 2010-10-15 15:34:54 +02:00
Bram Moolenaar 733962c814 updated for version 7.3.028
Problem:    Signs don't show up. (Charles Campbell)
Solution:   Don't use negative numbers.  Also assign a number to signs that
	    have a name of all digits to avoid using a sign number twice.
2010-10-14 21:29:37 +02:00
Bjorn Winckler 98b5cd3e62 Use correct screen for full screen
The autocommand "au GUIEnter * set fu" would cause the full screen
window to always appear on the primary monitor when multiple monitors
were connected.  This commit fixes this problem.
2010-10-14 20:08:45 +02:00
Bjorn Winckler 291a5c40b4 Merge branch 'vim'
Conflicts:
	src/os_unix.c
2010-10-14 17:41:28 +02:00
Bram Moolenaar 4758cc5fb2 updated for version 7.3.027
Problem:    Opening a file on a network share is very slow.
Solution:   When fixing file name case append "\*" to directory, server and
	    network share names. (David Anderson, John Beckett)
2010-10-13 20:37:41 +02:00
Bram Moolenaar a95ebf0fcd updated for version 7.3.026
Problem:    CTRL-] in a help file doesn't always work. (Tony Mechelynck)
Solution:   Don't escape special characters. (Carlo Teubner)
2010-10-13 18:06:47 +02:00
Bram Moolenaar 801135edc8 updated for version 7.3.025
Problem:    ":mksession" does not square brackets escape file name properly.
Solution:   Improve escapging of file names. (partly by Peter Odding)
2010-10-13 17:50:07 +02:00
Bram Moolenaar 0a7cafb2c8 updated for version 7.3.024
Problem:    Named signs do not use a negative number as intended.
Solution:   Fix the numbering of named signs. (Xavier de Gaye)
2010-10-13 16:44:23 +02:00
Bram Moolenaar a112c49589 updated for version 7.3.023
Problem:    External program may hang when it tries to write to the tty.
Solution:   Don't close the slave tty until after the child exits. (Nikola
	    Knezevic)
2010-10-13 16:22:09 +02:00
Bram Moolenaar b5f9dd7b3f updated for version 7.3.022
Problem:    When opening a new window the 'spellcapcheck' option is cleared.
Solution:   Copy the correct option value. (Christian Brabandt)
2010-10-13 14:05:35 +02:00
Bram Moolenaar eb3ed243d9 updated for version 7.3.021
Problem:    Conflict for defining Boolean in Mac header files.
Solution:   Define NO_X11_INCLUDES. (Rainer Muller)
2010-10-10 17:08:43 +02:00
Bram Moolenaar 0a8e611590 updated for version 7.3.020
Problem:    Cursor position wrong when joining multiple lines and
	    'formatoptions' contains "a". (Moshe Kamensky)
Solution:   Adjust cursor position for skipped indent. (Carlo Teubner)
2010-10-09 17:23:31 +02:00
168 changed files with 3465 additions and 1402 deletions
+405 -52
View File
@@ -1,6 +1,6 @@
" Vim autoload file for the tohtml plugin.
" Maintainer: Ben Fritz <fritzophrenic@gmail.com>
" Last Change: 2010 Aug 12
" Last Change: 2010 Oct 07
"
" Additional contributors:
"
@@ -13,10 +13,284 @@
let s:cpo_sav = &cpo
set cpo-=C
func! tohtml#Convert2HTML(line1, line2)
" Automatically find charsets from all encodings supported natively by Vim. With
" the 8bit- and 2byte- prefixes, Vim can actually support more encodings than
" this. Let the user specify these however since they won't be supported on
" every system. TODO: how? g:html_charsets and g:html_encodings?
"
" Note, not all of Vim's supported encodings have a charset to use.
"
" Names in this list are from:
" http://www.iana.org/assignments/character-sets
" g:tohtml#encoding_to_charset: {{{
let g:tohtml#encoding_to_charset = {
\ 'latin1' : 'ISO-8859-1',
\ 'iso-8859-2' : 'ISO-8859-2',
\ 'iso-8859-3' : 'ISO-8859-3',
\ 'iso-8859-4' : 'ISO-8859-4',
\ 'iso-8859-5' : 'ISO-8859-5',
\ 'iso-8859-6' : 'ISO-8859-6',
\ 'iso-8859-7' : 'ISO-8859-7',
\ 'iso-8859-8' : 'ISO-8859-8',
\ 'iso-8859-9' : 'ISO-8859-9',
\ 'iso-8859-10' : '',
\ 'iso-8859-13' : 'ISO-8859-13',
\ 'iso-8859-14' : '',
\ 'iso-8859-15' : 'ISO-8859-15',
\ 'koi8-r' : 'KOI8-R',
\ 'koi8-u' : 'KOI8-U',
\ 'macroman' : 'macintosh',
\ 'cp437' : '',
\ 'cp775' : '',
\ 'cp850' : '',
\ 'cp852' : '',
\ 'cp855' : '',
\ 'cp857' : '',
\ 'cp860' : '',
\ 'cp861' : '',
\ 'cp862' : '',
\ 'cp863' : '',
\ 'cp865' : '',
\ 'cp866' : 'IBM866',
\ 'cp869' : '',
\ 'cp874' : '',
\ 'cp1250' : 'windows-1250',
\ 'cp1251' : 'windows-1251',
\ 'cp1253' : 'windows-1253',
\ 'cp1254' : 'windows-1254',
\ 'cp1255' : 'windows-1255',
\ 'cp1256' : 'windows-1256',
\ 'cp1257' : 'windows-1257',
\ 'cp1258' : 'windows-1258',
\ 'euc-jp' : 'EUC-JP',
\ 'sjis' : 'Shift_JIS',
\ 'cp932' : 'Shift_JIS',
\ 'cp949' : '',
\ 'euc-kr' : 'EUC-KR',
\ 'cp936' : 'GBK',
\ 'euc-cn' : 'GB2312',
\ 'big5' : 'Big5',
\ 'cp950' : 'Big5',
\ 'utf-8' : 'UTF-8',
\ 'ucs-2' : 'UTF-8',
\ 'ucs-2le' : 'UTF-8',
\ 'utf-16' : 'UTF-8',
\ 'utf-16le' : 'UTF-8',
\ 'ucs-4' : 'UTF-8',
\ 'ucs-4le' : 'UTF-8',
\ }
lockvar g:tohtml#encoding_to_charset
" Notes:
" 1. All UCS/UTF are converted to UTF-8 because it is much better supported
" 2. Any blank spaces are there because Vim supports it but at least one major
" web browser does not according to http://wiki.whatwg.org/wiki/Web_Encodings.
" }}}
" Only automatically find encodings supported natively by Vim, let the user
" specify the encoding if it's not natively supported. This function is only
" used when the user specifies the charset, they better know what they are
" doing!
"
" Names in this list are from:
" http://www.iana.org/assignments/character-sets
" g:tohtml#charset_to_encoding: {{{
let g:tohtml#charset_to_encoding = {
\ 'iso_8859-1:1987' : 'latin1',
\ 'iso-ir-100' : 'latin1',
\ 'iso_8859-1' : 'latin1',
\ 'iso-8859-1' : 'latin1',
\ 'latin1' : 'latin1',
\ 'l1' : 'latin1',
\ 'ibm819' : 'latin1',
\ 'cp819' : 'latin1',
\ 'csisolatin1' : 'latin1',
\ 'iso_8859-2:1987' : 'iso-8859-2',
\ 'iso-ir-101' : 'iso-8859-2',
\ 'iso_8859-2' : 'iso-8859-2',
\ 'iso-8859-2' : 'iso-8859-2',
\ 'latin2' : 'iso-8859-2',
\ 'l2' : 'iso-8859-2',
\ 'csisolatin2' : 'iso-8859-2',
\ 'iso_8859-3:1988' : 'iso-8859-3',
\ 'iso-ir-109' : 'iso-8859-3',
\ 'iso_8859-3' : 'iso-8859-3',
\ 'iso-8859-3' : 'iso-8859-3',
\ 'latin3' : 'iso-8859-3',
\ 'l3' : 'iso-8859-3',
\ 'csisolatin3' : 'iso-8859-3',
\ 'iso_8859-4:1988' : 'iso-8859-4',
\ 'iso-ir-110' : 'iso-8859-4',
\ 'iso_8859-4' : 'iso-8859-4',
\ 'iso-8859-4' : 'iso-8859-4',
\ 'latin4' : 'iso-8859-4',
\ 'l4' : 'iso-8859-4',
\ 'csisolatin4' : 'iso-8859-4',
\ 'iso_8859-5:1988' : 'iso-8859-5',
\ 'iso-ir-144' : 'iso-8859-5',
\ 'iso_8859-5' : 'iso-8859-5',
\ 'iso-8859-5' : 'iso-8859-5',
\ 'cyrillic' : 'iso-8859-5',
\ 'csisolatincyrillic' : 'iso-8859-5',
\ 'iso_8859-6:1987' : 'iso-8859-6',
\ 'iso-ir-127' : 'iso-8859-6',
\ 'iso_8859-6' : 'iso-8859-6',
\ 'iso-8859-6' : 'iso-8859-6',
\ 'ecma-114' : 'iso-8859-6',
\ 'asmo-708' : 'iso-8859-6',
\ 'arabic' : 'iso-8859-6',
\ 'csisolatinarabic' : 'iso-8859-6',
\ 'iso_8859-7:1987' : 'iso-8859-7',
\ 'iso-ir-126' : 'iso-8859-7',
\ 'iso_8859-7' : 'iso-8859-7',
\ 'iso-8859-7' : 'iso-8859-7',
\ 'elot_928' : 'iso-8859-7',
\ 'ecma-118' : 'iso-8859-7',
\ 'greek' : 'iso-8859-7',
\ 'greek8' : 'iso-8859-7',
\ 'csisolatingreek' : 'iso-8859-7',
\ 'iso_8859-8:1988' : 'iso-8859-8',
\ 'iso-ir-138' : 'iso-8859-8',
\ 'iso_8859-8' : 'iso-8859-8',
\ 'iso-8859-8' : 'iso-8859-8',
\ 'hebrew' : 'iso-8859-8',
\ 'csisolatinhebrew' : 'iso-8859-8',
\ 'iso_8859-9:1989' : 'iso-8859-9',
\ 'iso-ir-148' : 'iso-8859-9',
\ 'iso_8859-9' : 'iso-8859-9',
\ 'iso-8859-9' : 'iso-8859-9',
\ 'latin5' : 'iso-8859-9',
\ 'l5' : 'iso-8859-9',
\ 'csisolatin5' : 'iso-8859-9',
\ 'iso-8859-10' : 'iso-8859-10',
\ 'iso-ir-157' : 'iso-8859-10',
\ 'l6' : 'iso-8859-10',
\ 'iso_8859-10:1992' : 'iso-8859-10',
\ 'csisolatin6' : 'iso-8859-10',
\ 'latin6' : 'iso-8859-10',
\ 'iso-8859-13' : 'iso-8859-13',
\ 'iso-8859-14' : 'iso-8859-14',
\ 'iso-ir-199' : 'iso-8859-14',
\ 'iso_8859-14:1998' : 'iso-8859-14',
\ 'iso_8859-14' : 'iso-8859-14',
\ 'latin8' : 'iso-8859-14',
\ 'iso-celtic' : 'iso-8859-14',
\ 'l8' : 'iso-8859-14',
\ 'iso-8859-15' : 'iso-8859-15',
\ 'iso_8859-15' : 'iso-8859-15',
\ 'latin-9' : 'iso-8859-15',
\ 'koi8-r' : 'koi8-r',
\ 'cskoi8r' : 'koi8-r',
\ 'koi8-u' : 'koi8-u',
\ 'macintosh' : 'macroman',
\ 'mac' : 'macroman',
\ 'csmacintosh' : 'macroman',
\ 'ibm437' : 'cp437',
\ 'cp437' : 'cp437',
\ '437' : 'cp437',
\ 'cspc8codepage437' : 'cp437',
\ 'ibm775' : 'cp775',
\ 'cp775' : 'cp775',
\ 'cspc775baltic' : 'cp775',
\ 'ibm850' : 'cp850',
\ 'cp850' : 'cp850',
\ '850' : 'cp850',
\ 'cspc850multilingual' : 'cp850',
\ 'ibm852' : 'cp852',
\ 'cp852' : 'cp852',
\ '852' : 'cp852',
\ 'cspcp852' : 'cp852',
\ 'ibm855' : 'cp855',
\ 'cp855' : 'cp855',
\ '855' : 'cp855',
\ 'csibm855' : 'cp855',
\ 'ibm857' : 'cp857',
\ 'cp857' : 'cp857',
\ '857' : 'cp857',
\ 'csibm857' : 'cp857',
\ 'ibm860' : 'cp860',
\ 'cp860' : 'cp860',
\ '860' : 'cp860',
\ 'csibm860' : 'cp860',
\ 'ibm861' : 'cp861',
\ 'cp861' : 'cp861',
\ '861' : 'cp861',
\ 'cp-is' : 'cp861',
\ 'csibm861' : 'cp861',
\ 'ibm862' : 'cp862',
\ 'cp862' : 'cp862',
\ '862' : 'cp862',
\ 'cspc862latinhebrew' : 'cp862',
\ 'ibm863' : 'cp863',
\ 'cp863' : 'cp863',
\ '863' : 'cp863',
\ 'csibm863' : 'cp863',
\ 'ibm865' : 'cp865',
\ 'cp865' : 'cp865',
\ '865' : 'cp865',
\ 'csibm865' : 'cp865',
\ 'ibm866' : 'cp866',
\ 'cp866' : 'cp866',
\ '866' : 'cp866',
\ 'csibm866' : 'cp866',
\ 'ibm869' : 'cp869',
\ 'cp869' : 'cp869',
\ '869' : 'cp869',
\ 'cp-gr' : 'cp869',
\ 'csibm869' : 'cp869',
\ 'windows-1250' : 'cp1250',
\ 'windows-1251' : 'cp1251',
\ 'windows-1253' : 'cp1253',
\ 'windows-1254' : 'cp1254',
\ 'windows-1255' : 'cp1255',
\ 'windows-1256' : 'cp1256',
\ 'windows-1257' : 'cp1257',
\ 'windows-1258' : 'cp1258',
\ 'extended_unix_code_packed_format_for_japanese' : 'euc-jp',
\ 'cseucpkdfmtjapanese' : 'euc-jp',
\ 'euc-jp' : 'euc-jp',
\ 'shift_jis' : 'sjis',
\ 'ms_kanji' : 'sjis',
\ 'sjis' : 'sjis',
\ 'csshiftjis' : 'sjis',
\ 'ibm-thai' : 'cp874',
\ 'csibmthai' : 'cp874',
\ 'ks_c_5601-1987' : 'cp949',
\ 'iso-ir-149' : 'cp949',
\ 'ks_c_5601-1989' : 'cp949',
\ 'ksc_5601' : 'cp949',
\ 'korean' : 'cp949',
\ 'csksc56011987' : 'cp949',
\ 'euc-kr' : 'euc-kr',
\ 'cseuckr' : 'euc-kr',
\ 'gbk' : 'cp936',
\ 'cp936' : 'cp936',
\ 'ms936' : 'cp936',
\ 'windows-936' : 'cp936',
\ 'gb_2312-80' : 'euc-cn',
\ 'iso-ir-58' : 'euc-cn',
\ 'chinese' : 'euc-cn',
\ 'csiso58gb231280' : 'euc-cn',
\ 'big5' : 'big5',
\ 'csbig5' : 'big5',
\ 'utf-8' : 'utf-8',
\ 'iso-10646-ucs-2' : 'ucs-2',
\ 'csunicode' : 'ucs-2',
\ 'utf-16' : 'utf-16',
\ 'utf-16be' : 'utf-16',
\ 'utf-16le' : 'utf-16le',
\ 'utf-32' : 'ucs-4',
\ 'utf-32be' : 'ucs-4',
\ 'utf-32le' : 'ucs-4le',
\ 'iso-10646-ucs-4' : 'ucs-4',
\ 'csucs4' : 'ucs-4'
\ }
lockvar g:tohtml#charset_to_encoding
"}}}
func! tohtml#Convert2HTML(line1, line2) "{{{
let s:settings = tohtml#GetUserSettings()
if !&diff || s:settings.diff_one_file
if !&diff || s:settings.diff_one_file "{{{
if a:line2 >= a:line1
let g:html_start_line = a:line1
let g:html_end_line = a:line2
@@ -24,31 +298,50 @@ func! tohtml#Convert2HTML(line1, line2)
let g:html_start_line = a:line2
let g:html_end_line = a:line1
endif
runtime syntax/2html.vim
else
runtime syntax/2html.vim "}}}
else "{{{
let win_list = []
let buf_list = []
windo | if &diff | call add(win_list, winbufnr(0)) | endif
let s:settings.whole_filler = 1
let g:html_diff_win_num = 0
for window in win_list
" switch to the next buffer to convert
exe ":" . bufwinnr(window) . "wincmd w"
" figure out whether current charset and encoding will work, if not
" default to UTF-8
if !exists('g:html_use_encoding') &&
\ (&l:fileencoding!='' && &l:fileencoding!=s:settings.vim_encoding ||
\ &l:fileencoding=='' && &encoding!=s:settings.vim_encoding)
echohl WarningMsg
echomsg "TOhtml: mismatched file encodings in Diff buffers, using UTF-8"
echohl None
let s:settings.vim_encoding = 'utf-8'
let s:settings.encoding = 'UTF-8'
endif
" set up for diff-mode conversion
let g:html_start_line = 1
let g:html_end_line = line('$')
let g:html_diff_win_num += 1
" convert this file
runtime syntax/2html.vim
" remember the HTML buffer for later combination
call add(buf_list, bufnr('%'))
endfor
unlet g:html_diff_win_num
call tohtml#Diff2HTML(win_list, buf_list)
endif
endif "}}}
unlet g:html_start_line
unlet g:html_end_line
unlet s:settings
endfunc
endfunc "}}}
func! tohtml#Diff2HTML(win_list, buf_list)
func! tohtml#Diff2HTML(win_list, buf_list) "{{{
let xml_line = ""
let tag_close = '>'
@@ -87,7 +380,7 @@ func! tohtml#Diff2HTML(win_list, buf_list)
call add(html, '<head>')
" include encoding as close to the top as possible, but only if not already
" contained in XML information (to avoid haggling over content type)
" contained in XML information
if s:settings.encoding != "" && !s:settings.use_xhtml
call add(html, "<meta http-equiv=\"content-type\" content=\"text/html; charset=" . s:settings.encoding . '"' . tag_close)
endif
@@ -133,7 +426,8 @@ func! tohtml#Diff2HTML(win_list, buf_list)
let s:body_end_line = getline('.')
endif
" Grab the style information. Some of this will be duplicated...
" Grab the style information. Some of this will be duplicated so only insert
" it if it's not already there. {{{
1
let style_start = search('^<style type="text/css">')
1
@@ -151,8 +445,10 @@ func! tohtml#Diff2HTML(win_list, buf_list)
let insert_index += 1
endif
endfor
endif
endif " }}}
" everything new will get added before the diff styles so diff highlight
" properly overrides normal highlight
if diff_style_start != 0
let insert_index = diff_style_start
endif
@@ -203,6 +499,20 @@ func! tohtml#Diff2HTML(win_list, buf_list)
" just in case some user autocmd creates content in the new buffer, make sure
" it is empty before proceeding
%d
" set the fileencoding to match the charset we'll be using
let &l:fileencoding=s:settings.vim_encoding
" According to http://www.w3.org/TR/html4/charset.html#doc-char-set, the byte
" order mark is highly recommend on the web when using multibyte encodings. But,
" it is not a good idea to include it on UTF-8 files. Otherwise, let Vim
" determine when it is actually inserted.
if s:settings.vim_encoding == 'utf-8'
setlocal nobomb
else
setlocal bomb
endif
call append(0, html)
if len(style) > 0
@@ -210,7 +520,7 @@ func! tohtml#Diff2HTML(win_list, buf_list)
let style_start = search('^</head>')-1
" Insert javascript to toggle matching folds open and closed in all windows,
" if dynamic folding is active.
" if dynamic folding is active. {{{
if s:settings.dynamic_folds
call append(style_start, [
\ "<script type='text/javascript'>",
@@ -234,13 +544,13 @@ func! tohtml#Diff2HTML(win_list, buf_list)
\ s:settings.use_xhtml ? '//]]>' : " -->",
\ "</script>"
\ ])
endif
endif "}}}
" Insert styles from all the generated html documents and additional styles
" for the table-based layout of the side-by-side diff. The diff should take
" up the full browser window (but not more), and be static in size,
" horizontally scrollable when the lines are too long. Otherwise, the diff
" is pretty useless for really long lines.
" is pretty useless for really long lines. {{{
if s:settings.use_css
call append(style_start,
\ ['<style type="text/css">']+
@@ -252,28 +562,28 @@ func! tohtml#Diff2HTML(win_list, buf_list)
\ 'td div { overflow: auto; }',
\ s:settings.use_xhtml ? '' : '-->',
\ '</style>'
\ ])
endif
\])
endif "}}}
endif
let &paste = s:old_paste
let &magic = s:old_magic
endfunc
endfunc "}}}
" Gets a single user option and sets it in the passed-in Dict, or gives it the
" default value if the option doesn't actually exist.
func! tohtml#GetOption(settings, option, default)
func! tohtml#GetOption(settings, option, default) "{{{
if exists('g:html_'.a:option)
let a:settings[a:option] = g:html_{a:option}
else
let a:settings[a:option] = a:default
endif
endfunc
endfunc "}}}
" returns a Dict containing the values of all user options for 2html, including
" default values for those not given an explicit value by the user. Discards the
" html_ prefix of the option for nicer looking code.
func! tohtml#GetUserSettings()
func! tohtml#GetUserSettings() "{{{
if exists('s:settings')
" just restore the known options if we've already retrieved them
return s:settings
@@ -289,7 +599,7 @@ func! tohtml#GetUserSettings()
let g:html_use_xhtml = g:use_xhtml
endif
" get current option settings with appropriate defaults
" get current option settings with appropriate defaults {{{
call tohtml#GetOption(user_settings, 'no_progress', !has("statusline") )
call tohtml#GetOption(user_settings, 'diff_one_file', 0 )
call tohtml#GetOption(user_settings, 'number_lines', &number )
@@ -302,8 +612,9 @@ func! tohtml#GetUserSettings()
call tohtml#GetOption(user_settings, 'no_pre', 0 )
call tohtml#GetOption(user_settings, 'whole_filler', 0 )
call tohtml#GetOption(user_settings, 'use_xhtml', 0 )
" }}}
" override those settings that need it
" override those settings that need it {{{
" hover opening implies dynamic folding
if user_settings.hover_unfold
@@ -330,49 +641,91 @@ func! tohtml#GetUserSettings()
" aren't allowed inside a <pre> block
if !user_settings.use_css
let user_settings.no_pre = 1
endif
endif "}}}
" Figure out proper MIME charset from the 'encoding' option.
if exists("g:html_use_encoding")
if exists("g:html_use_encoding") "{{{
" user specified the desired MIME charset, figure out proper
" 'fileencoding' from it or warn the user if we cannot
let user_settings.encoding = g:html_use_encoding
let user_settings.vim_encoding = tohtml#EncodingFromCharset(g:html_use_encoding)
if user_settings.vim_encoding == ''
echohl WarningMsg
echomsg "TOhtml: file encoding for"
\ g:html_use_encoding
\ "unknown, please set 'fileencoding'"
echohl None
endif
else
let vim_encoding = &encoding
if vim_encoding =~ '^8bit\|^2byte'
let vim_encoding = substitute(vim_encoding, '^8bit-\|^2byte-', '', '')
" Figure out proper MIME charset from 'fileencoding' if possible
if &l:fileencoding != ''
let user_settings.vim_encoding = &l:fileencoding
call tohtml#CharsetFromEncoding(user_settings)
endif
if vim_encoding == 'latin1'
let user_settings.encoding = 'iso-8859-1'
elseif vim_encoding =~ "^cp12"
let user_settings.encoding = substitute(vim_encoding, 'cp', 'windows-', '')
elseif vim_encoding == 'sjis' || vim_encoding == 'cp932'
let user_settings.encoding = 'Shift_JIS'
elseif vim_encoding == 'big5' || vim_encoding == 'cp950'
let user_settings.encoding = "Big5"
elseif vim_encoding == 'euc-cn'
let user_settings.encoding = 'GB_2312-80'
elseif vim_encoding == 'euc-tw'
let user_settings.encoding = ""
elseif vim_encoding =~ '^euc\|^iso\|^koi'
let user_settings.encoding = substitute(vim_encoding, '.*', '\U\0', '')
elseif vim_encoding == 'cp949'
let user_settings.encoding = 'KS_C_5601-1987'
elseif vim_encoding == 'cp936'
let user_settings.encoding = 'GBK'
elseif vim_encoding =~ '^ucs\|^utf'
" else from 'encoding' if possible
if &l:fileencoding == '' || user_settings.encoding == ''
let user_settings.vim_encoding = &encoding
call tohtml#CharsetFromEncoding(user_settings)
endif
" else default to UTF-8 and warn user
if user_settings.encoding == ''
let user_settings.vim_encoding = 'utf-8'
let user_settings.encoding = 'UTF-8'
else
let user_settings.encoding = ""
echohl WarningMsg
echomsg "TOhtml: couldn't determine MIME charset, using UTF-8"
echohl None
endif
endif
endif "}}}
" TODO: font
return user_settings
endif
endfunc
endfunc "}}}
" get the proper HTML charset name from a Vim encoding option.
function! tohtml#CharsetFromEncoding(settings) "{{{
let l:vim_encoding = a:settings.vim_encoding
if exists('g:html_charset_override') && has_key(g:html_charset_override, l:vim_encoding)
let a:settings.encoding = g:html_charset_override[l:vim_encoding]
else
if l:vim_encoding =~ '^8bit\|^2byte'
" 8bit- and 2byte- prefixes are to indicate encodings available on the
" system that Vim will convert with iconv(), look up just the encoding name,
" not Vim's prefix.
let l:vim_encoding = substitute(l:vim_encoding, '^8bit-\|^2byte-', '', '')
endif
if has_key(g:tohtml#encoding_to_charset, l:vim_encoding)
let a:settings.encoding = g:tohtml#encoding_to_charset[l:vim_encoding]
else
let a:settings.encoding = ""
endif
endif
if a:settings.encoding != ""
let l:vim_encoding = tohtml#EncodingFromCharset(a:settings.encoding)
if l:vim_encoding != ""
" if the Vim encoding to HTML encoding conversion is set up (by default or
" by the user) to convert to a different encoding, we need to also change
" the Vim encoding of the new buffer
let a:settings.vim_encoding = l:vim_encoding
endif
endif
endfun "}}}
" Get the proper Vim encoding option setting from an HTML charset name.
function! tohtml#EncodingFromCharset(encoding) "{{{
if exists('g:html_encoding_override') && has_key(g:html_encoding_override, a:encoding)
return g:html_encoding_override[a:encoding]
elseif has_key(g:tohtml#charset_to_encoding, tolower(a:encoding))
return g:tohtml#charset_to_encoding[tolower(a:encoding)]
else
return ""
endif
endfun "}}}
let &cpo = s:cpo_sav
unlet s:cpo_sav
" Make sure any patches will probably use consistent indent
" vim: ts=8 sw=2 sts=2 noet
" vim: ts=8 sw=2 sts=2 noet fdm=marker
+3 -3
View File
@@ -1,7 +1,7 @@
" Vim compiler file
" Compiler: GNU C Compiler
" Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2010-05-30
" Latest Revision: 2010-10-14
if exists("current_compiler")
finish
@@ -18,10 +18,10 @@ CompilerSet errorformat=
\\"%f\"%*\\D%l:\ %m,
\%-G%f:%l:\ %trror:\ (Each\ undeclared\ identifier\ is\ reported\ only\ once,
\%-G%f:%l:\ %trror:\ for\ each\ function\ it\ appears\ in.),
\%f:%l:%c:\ %terror:\ %m,
\%f:%l:%c:\ %trror:\ %m,
\%f:%l:%c:\ %tarning:\ %m,
\%f:%l:%c:\ %m,
\%f:%l:\ %terror:\ %m,
\%f:%l:\ %trror:\ %m,
\%f:%l:\ %tarning:\ %m,
\%f:%l:\ %m,
\\"%f\"\\,\ line\ %l%*\\D%c%*[^\ ]\ %m,
+2 -2
View File
@@ -1,4 +1,4 @@
*arabic.txt* For Vim version 7.3. Last change: 2005 Mar 29
*arabic.txt* For Vim version 7.3. Last change: 2010 Nov 13
VIM REFERENCE MANUAL by Nadim Shaikli
@@ -146,7 +146,7 @@ o Enable Arabic settings [short-cut]
:set arabic
<
The two above noted possible invocations are the preferred manner
in which users are instructed to proceed. Baring an enabled 'termbidi'
in which users are instructed to proceed. Barring an enabled 'termbidi'
setting, both command options:
1. set the appropriate keymap
+17 -13
View File
@@ -1,4 +1,4 @@
*cmdline.txt* For Vim version 7.3. Last change: 2010 Sep 18
*cmdline.txt* For Vim version 7.3. Last change: 2010 Nov 28
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -372,10 +372,10 @@ word before the cursor. This is available for:
- Mappings: Only after a ":map" or similar command.
- Variable and function names: Only after a ":if", ":call" or similar command.
When Vim was compiled with the |+cmdline_compl| feature disabled, only file
names, directories and help items can be completed. The number of help item
matches is limited (currently to 300) to avoid a long delay when there are
very many matches.
When Vim was compiled without the |+cmdline_compl| feature only file names,
directories and help items can be completed. The number of help item matches
is limited (currently to 300) to avoid a long delay when there are very many
matches.
These are the commands that can be used:
@@ -782,30 +782,34 @@ it, no matter how many backslashes.
*:<cword>* *:<cWORD>* *:<cfile>* *<cfile>*
*:<sfile>* *<sfile>* *:<afile>* *<afile>*
*:<abuf>* *<abuf>* *:<amatch>* *<amatch>*
*E495* *E496* *E497* *E498* *E499* *E500*
*E495* *E496* *E497* *E499* *E500*
Note: these are typed literally, they are not special keys!
<cword> is replaced with the word under the cursor (like |star|)
<cWORD> is replaced with the WORD under the cursor (see |WORD|)
<cfile> is replaced with the path name under the cursor (like what
|gf| uses)
<afile> when executing autocommands, is replaced with the file name
for a file read or write
<abuf> when executing autocommands, is replaced with the currently
<afile> When executing autocommands, is replaced with the file name
for a file read or write.
<abuf> When executing autocommands, is replaced with the currently
effective buffer number (for ":r file" and ":so file" it is
the current buffer, the file being read/sourced is not in a
buffer).
<amatch> when executing autocommands, is replaced with the match for
<amatch> When executing autocommands, is replaced with the match for
which this autocommand was executed. It differs from
<afile> only when the file name isn't used to match with
(for FileType, Syntax and SpellFileMissing events).
<sfile> when executing a ":source" command, is replaced with the
file name of the sourced file;
when executing a function, is replaced with
<sfile> When executing a ":source" command, is replaced with the
file name of the sourced file. *E498*
When executing a function, is replaced with
"function {function-name}"; function call nesting is
indicated like this:
"function {function-name1}..{function-name2}". Note that
filename-modifiers are useless when <sfile> is used inside
a function.
<slnum> When executing a ":source" command, is replaced with the
line number. *E842*
When executing a function it's the line number relative to
the start of the function.
*filename-modifiers*
*:_%:* *::8* *::p* *::.* *::~* *::h* *::t* *::r* *::e* *::s* *::gs*
+4 -4
View File
@@ -1,4 +1,4 @@
*diff.txt* For Vim version 7.3. Last change: 2010 Sep 30
*diff.txt* For Vim version 7.3. Last change: 2010 Dec 08
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -373,9 +373,9 @@ get an error message. Possible causes:
If it's not clear what the problem is set the 'verbose' option to one or more
to see more messages.
The self-installing Vim includes a diff program. If you don't have it you
might want to download a diff.exe. For example from
http://jlb.twu.net/code/unixkit.php.
The self-installing Vim for MS-Windows includes a diff program. If you don't
have it you might want to download a diff.exe. For example from
http://gnuwin32.sourceforge.net/packages/diffutils.htm.
USING PATCHES *diff-patchexpr*
+2 -2
View File
@@ -1,4 +1,4 @@
*editing.txt* For Vim version 7.3. Last change: 2010 Sep 18
*editing.txt* For Vim version 7.3. Last change: 2010 Dec 08
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1340,7 +1340,7 @@ Vim is able to write files encrypted, and read them back. The encrypted text
cannot be read without the right key.
{only available when compiled with the |+cryptv| feature} *E833*
The text in the swap file and the undo file is also encrypted.
The text in the swap file and the undo file is also encrypted. *E843*
Note: The text in memory is not encrypted. A system administrator may be able
to see your text while you are editing it. When filtering text with
+66 -26
View File
@@ -1,4 +1,4 @@
*eval.txt* For Vim version 7.3. Last change: 2010 Sep 29
*eval.txt* For Vim version 7.3. Last change: 2010 Dec 01
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1657,6 +1657,15 @@ v:version Version number of Vim: Major version number times 100 plus
*v:warningmsg* *warningmsg-variable*
v:warningmsg Last given warning message. It's allowed to set this variable.
*v:windowid* *windowid-variable*
v:windowid When any X11 based GUI is running or when running in a
terminal and Vim connects to the X server (|-X|) this will be
set to the window ID.
When an MS-Windows GUI is running this will be set to the
window handle.
Otherwise the value is zero.
Note: for windows inside Vim use |winnr()|.
==============================================================================
4. Builtin Functions *functions*
@@ -1822,7 +1831,7 @@ localtime() Number current time
log( {expr}) Float natural logarithm (base e) of {expr}
log10( {expr}) Float logarithm of Float {expr} to base 10
map( {expr}, {string}) List/Dict change each item in {expr} to {expr}
maparg( {name}[, {mode} [, {abbr}]])
maparg( {name}[, {mode} [, {abbr} [, {dict}]]])
String rhs of mapping {name} in mode {mode}
mapcheck( {name}[, {mode} [, {abbr}]])
String check for mappings matching {name}
@@ -1934,6 +1943,7 @@ synID( {lnum}, {col}, {trans}) Number syntax ID at {lnum} and {col}
synIDattr( {synID}, {what} [, {mode}])
String attribute {what} of syntax ID {synID}
synIDtrans( {synID}) Number translated syntax ID of {synID}
synconcealed( {lnum}, {col}) List info about concealing
synstack( {lnum}, {col}) List stack of syntax IDs at {lnum} and {col}
system( {expr} [, {input}]) String output of shell command/filter {expr}
tabpagebuflist( [{arg}]) List list of buffer numbers in tab page
@@ -2710,7 +2720,7 @@ exp({expr}) *exp()*
expand({expr} [, {flag}]) *expand()*
Expand wildcards and the following special keywords in {expr}.
The result is a String.
The result is a String. 'wildignorecase' applies.
When there are several matches, they are separated by <NL>
characters. [Note: in version 5.0 a space was used, which
@@ -2731,6 +2741,7 @@ expand({expr} [, {flag}]) *expand()*
<abuf> autocmd buffer number (as a String!)
<amatch> autocmd matched name
<sfile> sourced script file name
<slnum> sourced script file line number
<cword> word under the cursor
<cWORD> WORD under the cursor
<client> the {clientid} of the last received
@@ -3424,6 +3435,7 @@ glob({expr} [, {flag}]) *glob()*
the 'suffixes' and 'wildignore' options apply: Names matching
one of the patterns in 'wildignore' will be skipped and
'suffixes' affect the ordering of matches.
'wildignorecase' always applies.
If the expansion fails, the result is an empty string.
A name for a non-existing file is not included.
@@ -3966,23 +3978,51 @@ map({expr}, {string}) *map()*
further items in {expr} are processed.
maparg({name}[, {mode} [, {abbr}]]) *maparg()*
Return the rhs of mapping {name} in mode {mode}. When there
is no mapping for {name}, an empty String is returned.
maparg({name}[, {mode} [, {abbr} [, {dict}]]]) *maparg()*
When {dict} is omitted or zero: Return the rhs of mapping
{name} in mode {mode}. The returned String has special
characters translated like in the output of the ":map" command
listing.
When there is no mapping for {name}, an empty String is
returned.
The {name} can have special key names, like in the ":map"
command.
{mode} can be one of these strings:
"n" Normal
"v" Visual
"v" Visual (including Select)
"o" Operator-pending
"i" Insert
"c" Cmd-line
"s" Select
"x" Visual
"l" langmap |language-mapping|
"" Normal, Visual and Operator-pending
When {mode} is omitted, the modes for "" are used.
When {abbr} is there and it is non-zero use abbreviations
instead of mappings.
The {name} can have special key names, like in the ":map"
command. The returned String has special characters
translated like in the output of the ":map" command listing.
When {dict} is there and it is non-zero return a dictionary
containing all the information of the mapping with the
following items:
"lhs" The {lhs} of the mapping.
"rhs" The {rhs} of the mapping as typed.
"silent" 1 for a |:map-silent| mapping, else 0.
"noremap" 1 if the {rhs} of the mapping is not remappable.
"expr" 1 for an expression mapping (|:map-<expr>|).
"buffer" 1 for a buffer local mapping (|:map-local|).
"mode" Modes for which the mapping is defined. In
addition to the modes mentioned above, these
characters will be used:
" " Normal, Visual and Operator-pending
"!" Insert and Commandline mode
(|mapmode-ic|)
"sid" The script local ID, used for <sid> mappings
(|<SID>|).
The mappings local to the current buffer are checked first,
then the global mappings.
This function can be used to map a key even when it's already
@@ -5416,8 +5456,8 @@ stridx({haystack}, {needle} [, {start}]) *stridx()*
{haystack} of the first occurrence of the String {needle}.
If {start} is specified, the search starts at index {start}.
This can be used to find a second match: >
:let comma1 = stridx(line, ",")
:let comma2 = stridx(line, ",", comma1 + 1)
:let colon1 = stridx(line, ":")
:let colon2 = stridx(line, ":", colon1 + 1)
< The search is done case-sensitive.
For pattern searches use |match()|.
-1 is returned if the {needle} does not occur in {haystack}.
@@ -5558,20 +5598,6 @@ synID({lnum}, {col}, {trans}) *synID()*
:echo synIDattr(synID(line("."), col("."), 1), "name")
<
synconcealed({lnum}, {col}) *synconcealed()*
The result is a List. The first item in the list is 0 if the
character at the position {lnum} and {col} is not part of a
concealable region, 1 if it is. The second item in the list is
a string. If the first item is 1, the second item contains the
text which will be displayed in place of the concealed text,
depending on the current setting of 'conceallevel'. The third
and final item in the list is a unique number representing the
specific syntax region matched. This allows detection of the
beginning of a new concealable region if there are two
consecutive regions with the same replacement character.
For an example use see $VIMRUNTIME/syntax/2html.vim .
synIDattr({synID}, {what} [, {mode}]) *synIDattr()*
The result is a String, which is the {what} attribute of
syntax ID {synID}. This can be used to obtain information
@@ -5612,6 +5638,20 @@ synIDtrans({synID}) *synIDtrans()*
highlight the character. Highlight links given with
":highlight link" are followed.
synconcealed({lnum}, {col}) *synconcealed()*
The result is a List. The first item in the list is 0 if the
character at the position {lnum} and {col} is not part of a
concealable region, 1 if it is. The second item in the list is
a string. If the first item is 1, the second item contains the
text which will be displayed in place of the concealed text,
depending on the current setting of 'conceallevel'. The third
and final item in the list is a unique number representing the
specific syntax region matched. This allows detection of the
beginning of a new concealable region if there are two
consecutive regions with the same replacement character.
For an example use see $VIMRUNTIME/syntax/2html.vim .
synstack({lnum}, {col}) *synstack()*
Return a |List|, which is the stack of syntax items at the
position {lnum} and {col} in the current window. Each item in
+21 -21
View File
@@ -1,4 +1,4 @@
*gui.txt* For Vim version 7.3. Last change: 2010 May 14
*gui.txt* For Vim version 7.3. Last change: 2010 Nov 03
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -156,26 +156,26 @@ configure which ones appear with the 'guioptions' option.
The interface looks like this (with ":set guioptions=mlrb"):
+------------------------------+
| File Edit Help | <- Menu bar (m)
+-+--------------------------+-+
|^| |^|
|#| Text area. |#|
| | | |
|v|__________________________|v|
Normal status line -> |-+ File.c 5,2 +-|
between Vim windows |^|""""""""""""""""""""""""""|^|
| | | |
| | Another file buffer. | |
| | | |
|#| |#|
Left scrollbar (l) -> |#| |#| <- Right
|#| |#| scrollbar (r)
| | | |
|v| |v|
+-+--------------------------+-+
| |< #### >| | <- Bottom
+-+--------------------------+-+ scrollbar (b)
+------------------------------+ `
| File Edit Help | <- Menu bar (m) `
+-+--------------------------+-+ `
|^| |^| `
|#| Text area. |#| `
| | | | `
|v|__________________________|v| `
Normal status line -> |-+ File.c 5,2 +-| `
between Vim windows |^|""""""""""""""""""""""""""|^| `
| | | | `
| | Another file buffer. | | `
| | | | `
|#| |#| `
Left scrollbar (l) -> |#| |#| <- Right `
|#| |#| scrollbar (r) `
| | | | `
|v| |v| `
+-+--------------------------+-+ `
| |< #### >| | <- Bottom `
+-+--------------------------+-+ scrollbar (b) `
Any of the scrollbar or menu components may be turned off by not putting the
appropriate letter in the 'guioptions' string. The bottom scrollbar is
+19 -1
View File
@@ -172,6 +172,8 @@ time you start MacVim, you could create an alias such as >
alias gvim='/Applications/MacVim.app/Contents/MacOS/Vim -g'
and add that to "~/.profile".
Note: Do NOT call the MacVim binary inside the app bundle to start MacVim.
*mvim*
A more flexible way to start MacVim is to use the shell script "mvim" which
comes bundled with MacVim. Put this script in a folder in your path and then
@@ -549,7 +551,8 @@ Note that url has to be a file:// url pointing to an existing local file.
Most keyboard shortcuts in MacVim are bound to menu items and can be
discovered by looking through the menus (see |macvim-menus| on how to create
your own menu shortcuts). The remaining shortcuts are listed here:
your own menu shortcuts, see |cmd-key| on how to map your own commands to
Cmd-key shortcuts). The remaining shortcuts are listed here:
*Cmd-.* *<D-.>*
Cmd-. Interrupt Vim. Unlike Ctrl-C which is sent as normal
@@ -608,6 +611,21 @@ equivalents which are not set up with :map).
See |macvim-shift-movement| if you want Shift to select text when used in
conjunction with the above Cmd/Alt movement shortcuts.
*cmd-key* *cmd-shortcuts*
Creating key mappings that involve the Cmd key (<D-..> in Vim notation) can
sometimes be slightly involved. Here are all the things you need to consider:
- Make sure the shortcut is not used by a menu item by looking through the
menus. If it is then you need to unbind it before you can map to it. This
is described under the help for the |:macmenu| command.
- Bindings to <D-..> are case sensitive: <D-d> is not the same as <D-D>. If
you want to map something to Cmd+Shift+d, then you need to use <D-D>, not
<D-S-d> or <D-S-D>.
- Some command key shortcuts are reserved by Mac OS X and cannot be mapped to
(e.g. <D-Tab>). However, some of these shortcuts can be freed up in the
System Preferences under Keyboard (e.g. Cmd+Space).
- A few command key mappings are set up by MacVim, see |cmd-movement|.
==============================================================================
11. Trackpad gestures *macvim-gestures*
+2 -2
View File
@@ -1,4 +1,4 @@
*if_pyth.txt* For Vim version 7.3. Last change: 2010 Aug 13
*if_pyth.txt* For Vim version 7.3. Last change: 2010 Oct 20
VIM REFERENCE MANUAL by Paul Moore
@@ -355,7 +355,7 @@ When Python 2 and Python 3 are both supported they must be loaded dynamically.
When doing this on Linux/Unix systems and importing global symbols, this leads
to a crash when the second Python version is used. So either global symbols
are loaded but only one Python version is activated, or no global symbols are
loaded. The latter makes Python's "import" fail on libaries that expect the
loaded. The latter makes Python's "import" fail on libraries that expect the
symbols to be provided by Vim.
*E836* *E837*
Vim's configuration script makes a guess for all libraries based on one
+9 -6
View File
@@ -1,4 +1,4 @@
*if_ruby.txt* For Vim version 7.3. Last change: 2010 Jul 20
*if_ruby.txt* For Vim version 7.3. Last change: 2010 Oct 27
VIM REFERENCE MANUAL by Shugo Maeda
@@ -40,6 +40,9 @@ downloading Ruby there.
wasn't compiled in. To avoid errors, see
|script-here|.
Command to try it out: >
:ruby print "Hello" # this is a comment
Example Vim script: >
function! RedGem()
@@ -187,12 +190,12 @@ $curbuf The current buffer object.
==============================================================================
6. Dynamic loading *ruby-dynamic*
On MS-Windows the Ruby library can be loaded dynamically. The |:version|
output then includes |+ruby/dyn|.
On MS-Windows and Unix the Ruby library can be loaded dynamically. The
|:version| output then includes |+ruby/dyn|.
This means that Vim will search for the Ruby DLL file only when needed. When
you don't use the Ruby interface you don't need it, thus you can use Vim
without this DLL file.
This means that Vim will search for the Ruby DLL file or shared library only
when needed. When you don't use the Ruby interface you don't need it, thus
you can use Vim even though this library file is not on your system.
You need to install the right version of Ruby for this to work. You can find
the package to download from:
+2 -1
View File
@@ -1,4 +1,4 @@
*indent.txt* For Vim version 7.3. Last change: 2010 Jul 30
*indent.txt* For Vim version 7.3. Last change: 2010 Nov 27
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -258,6 +258,7 @@ assume a 'shiftwidth' of 4.
<
bN If N != 0 Vim will align a final "break" with the case label,
so that case..break looks like a sort of block. (default: 0).
When using 1, consider adding "0=break" to 'cinkeys'.
cino= cino=b1 >
switch (x) switch(x)
+12 -5
View File
@@ -1,4 +1,4 @@
*insert.txt* For Vim version 7.3. Last change: 2010 Sep 29
*insert.txt* For Vim version 7.3. Last change: 2010 Nov 10
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -382,6 +382,10 @@ mappings it's often better to use <Esc> (first put an "x" in the text, <Esc>
will then always put the cursor on it). Or use CTRL-\ CTRL-O, but then
beware of the cursor possibly being beyond the end of the line.
The CTRL-O command takes you to Normal mode. If you then use a command enter
Insert mode again it doesn't nest. Thus when typing "a<C-O>a" and then <Esc>
takes you back to Normal mode, you do not need to type <Esc> twice.
The shifted cursor keys are not available on all terminals.
Another side effect is that a count specified before the "i" or "a" command is
@@ -1033,6 +1037,8 @@ items:
items that only differ in case are added
dup when non-zero this match will be added even when an
item with the same word is already present.
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
@@ -1043,7 +1049,8 @@ be relatively short. The "info" item can be longer, it will be displayed in
the preview window when "preview" appears in 'completeopt'. The "info" item
will also remain displayed after the popup menu has been removed. This is
useful for function arguments. Use a single space for "info" to remove
existing text in the preview window.
existing text in the preview window. The size of the preview window is three
lines, but 'previewheight' is used when it has a value of 1 or 2.
The "kind" item uses a single letter to indicate the kind of completion. This
may be used to show the completion differently (different color or icon).
@@ -1059,9 +1066,9 @@ match to the total list. These matches should then not appear in the returned
list! Call |complete_check()| now and then to allow the user to press a key
while still searching for matches. Stop searching when it returns non-zero.
The function is allowed to move the cursor, it is restored afterwards. This
option cannot be set from a |modeline| or in the |sandbox|, for security
reasons.
*E839* *E840*
The function is allowed to move the cursor, it is restored afterwards.
The function is not allowed to move to another window or delete text.
An example that completes the names of the months: >
fun! CompleteMonths(findstart, base)
+4 -5
View File
@@ -1,4 +1,4 @@
*intro.txt* For Vim version 7.3. Last change: 2010 Sep 29
*intro.txt* For Vim version 7.3. Last change: 2010 Dec 08
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -616,7 +616,6 @@ Replace <Esc> -- -- <Insert> -- --
Command-line *3 -- -- :start -- --
Ex :vi -- -- -- -- --
- NA
-- not possible
*1 Go from Normal mode to Insert mode by giving the command "i", "I", "a",
@@ -703,7 +702,7 @@ Lines longer than the window width will wrap, unless the 'wrap' option is off
(see below). The 'linebreak' option can be set to wrap at a blank character.
If the window has room after the last line of the buffer, Vim will show '~' in
the first column of the last lines in the window, like this: >
the first column of the last lines in the window, like this:
+-----------------------+
|some line |
@@ -715,7 +714,7 @@ the first column of the last lines in the window, like this: >
Thus the '~' lines indicate that the end of the buffer was reached.
If the last line in a window doesn't fit, Vim will indicate this with a '@' in
the first column of the last lines in the window, like this: >
the first column of the last lines in the window, like this:
+-----------------------+
|first line |
@@ -730,7 +729,7 @@ window.
When the "lastline" flag is present in the 'display' option, you will not see
'@' characters at the left side of window. If the last line doesn't fit
completely, only the part that fits is shown, and the last three characters of
the last line are replaced with "@@@", like this: >
the last line are replaced with "@@@", like this:
+-----------------------+
|first line |
+14 -10
View File
@@ -1,4 +1,4 @@
*map.txt* For Vim version 7.3. Last change: 2010 Sep 29
*map.txt* For Vim version 7.3. Last change: 2010 Nov 10
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1093,16 +1093,20 @@ is executed, it is transformed into a normal Ex command and then executed.
For starters: See section |40.2| in the user manual.
*E183* *user-cmd-ambiguous*
*E183* *E841* *user-cmd-ambiguous*
All user defined commands must start with an uppercase letter, to avoid
confusion with builtin commands. (There are a few builtin commands, notably
:Next, :Print and :X, which do start with an uppercase letter. The builtin
will always take precedence in these cases). The other characters of the user
command can be uppercase letters, lowercase letters or digits. When using
digits, note that other commands that take a numeric argument may become
ambiguous. For example, the command ":Cc2" could be the user command ":Cc2"
without an argument, or the command ":Cc" with argument "2". It is advised to
put a space between the command name and the argument to avoid these problems.
confusion with builtin commands. Exceptions are these builtin commands:
:Next
:X
They cannot be used for a user defined command. ":Print" is also an existing
command, but it is deprecated and can be overruled.
The other characters of the user command can be uppercase letters, lowercase
letters or digits. When using digits, note that other commands that take a
numeric argument may become ambiguous. For example, the command ":Cc2" could
be the user command ":Cc2" without an argument, or the command ":Cc" with
argument "2". It is advised to put a space between the command name and the
argument to avoid these problems.
When using a user-defined command, the command can be abbreviated. However, if
an abbreviation is not unique, an error will be issued. Furthermore, a
+57 -28
View File
@@ -1,4 +1,4 @@
*options.txt* For Vim version 7.3. Last change: 2010 Sep 21
*options.txt* For Vim version 7.3. Last change: 2010 Dec 08
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1439,6 +1439,15 @@ A jump table for the options with a short description can be found at |Q_op|.
explicitly accessed using the "* notation. Also see
|gui-clipboard|.
unnamedplus A variant of "unnamed" flag which uses the clipboard
register '+' (|quoteplus|) instead of register '*' for
all operations except yank. Yank shall copy the text
into register '+' and also into '*' when "unnamed" is
included.
Only available with the |+X11| feature.
Availability can be checked with: >
if has('unnamedplus')
<
autoselect Works like the 'a' flag in 'guioptions': If present,
then whenever Visual mode is started, or the Visual
area extended, Vim tries to become the owner of the
@@ -1501,6 +1510,25 @@ A jump table for the options with a short description can be found at |Q_op|.
feature}
Number of screen lines to use for the command-line window. |cmdwin|
*'colorcolumn'* *'cc'*
'colorcolumn' 'cc' string (default "")
local to window
{not in Vi}
{not available when compiled without the |+syntax|
feature}
'colorcolumn' is a comma separated list of screen columns that are
highlighted with ColorColumn |hl-ColorColumn|. Useful to align
text. Will make screen redrawing slower.
The screen column can be an absolute number, or a number preceded with
'+' or '-', which is added to or subtracted from 'textwidth'. >
:set cc=+1 " highlight column after 'textwidth'
:set cc=+1,+2,+3 " highlight three columns after 'textwidth'
:hi ColorColumn ctermbg=lightgrey guibg=lightgrey
<
When 'textwidth' is zero then the items with '-' and '+' are not used.
A maximum of 256 columns are highlighted.
*'columns'* *'co'* *E594*
'columns' 'co' number (default 80 or terminal width)
global
@@ -1685,7 +1713,8 @@ A jump table for the options with a short description can be found at |Q_op|.
with CTRL-X CTRL-U. |i_CTRL-X_CTRL-U|
See |complete-functions| for an explanation of how the function is
invoked and what it should return.
This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons.
*'completeopt'* *'cot'*
'completeopt' 'cot' string (default: "menu,preview")
@@ -2829,6 +2858,7 @@ A jump table for the options with a short description can be found at |Q_op|.
"dos" is not present or no <CR><NL> is found in the file.
Except: if "unix" was chosen, but there is a <CR> before
the first <NL>, and there appear to be more <CR>s than <NL>s in
the first few lines, "mac" is used.
4. If 'fileformat' is still not set, the first name from
'fileformats' is used.
When reading a file into an existing buffer, the same is done, but
@@ -2836,6 +2866,9 @@ A jump table for the options with a short description can be found at |Q_op|.
file only, the option is not changed.
When 'binary' is set, the value of 'fileformats' is not used.
Note that when Vim starts up with an empty buffer this option is not
use. Set 'fileformat' in your .vimrc instead.
For systems with a Dos-like <EOL> (<CR><NL>), when reading files that
are ":source"ed and for vimrc files, automatic <EOL> detection may be
done:
@@ -3075,6 +3108,10 @@ A jump table for the options with a short description can be found at |Q_op|.
Specifies for which type of commands folds will be opened, if the
command moves the cursor into a closed fold. It is a comma separated
list of items.
NOTE: When the command is part of a mapping this option is not used.
Add the |zv| command to the mapping to get the same effect.
(rationale: the mapping may want to control opening folds itself)
item commands ~
all any
block "(", "{", "[[", "[{", etc.
@@ -3089,8 +3126,6 @@ A jump table for the options with a short description can be found at |Q_op|.
Also for |[s| and |]s|.
tag jumping to a tag: ":ta", CTRL-T, etc.
undo undo or redo: "u" and CTRL-R
When the command is part of a mapping this option is not used. Add
the |zv| command to the mapping to get the same effect.
When a movement command is used for an operator (e.g., "dl" or "y%")
this option is not used. This means the operator will include the
whole closed fold.
@@ -3191,7 +3226,8 @@ A jump table for the options with a short description can be found at |Q_op|.
the internal format mechanism.
The expression may be evaluated in the |sandbox|, see
|sandbox-option|.
|sandbox-option|. That stops the option from working, since changing
the buffer text is not allowed.
*'fsync'* *'fs'* *'nofsync'* *'nofs'*
'fsync' 'fs' boolean (default on)
@@ -4715,25 +4751,6 @@ A jump table for the options with a short description can be found at |Q_op|.
< This option cannot be set from a |modeline| or in the |sandbox|, for
security reasons.
*'colorcolumn'* *'cc'*
'colorcolumn' 'cc' string (default "")
local to window
{not in Vi}
{not available when compiled without the |+syntax|
feature}
'colorcolumn' is a comma separated list of screen columns that are
highlighted with ColorColumn |hl-ColorColumn|. Useful to align
text. Will make screen redrawing slower.
The screen column can be an absolute number, or a number preceded with
'+' or '-', which is added to or subtracted from 'textwidth'. >
:set cc=+1 " highlight column after 'textwidth'
:set cc=+1,+2,+3 " highlight three columns after 'textwidth'
:hi ColorColumn ctermbg=lightgrey guibg=lightgrey
<
When 'textwidth' is zero then the items with '-' and '+' are not used.
A maximum of 256 columns are highlighted.
*'matchpairs'* *'mps'*
'matchpairs' 'mps' string (default "(:),{:},[:]")
local to buffer
@@ -6342,8 +6359,9 @@ A jump table for the options with a short description can be found at |Q_op|.
Do smart autoindenting when starting a new line. Works for C-like
programs, but can also be used for other languages. 'cindent' does
something like this, works better in most cases, but is more strict,
see |C-indenting|. When 'cindent' is on, setting 'si' has no effect.
'indentexpr' is a more advanced alternative.
see |C-indenting|. When 'cindent' is on or 'indentexpr' is set,
setting 'si' has no effect. 'indentexpr' is a more advanced
alternative.
Normally 'autoindent' should also be on when using 'smartindent'.
An indent is automatically inserted:
- After a line ending in '{'.
@@ -7656,8 +7674,8 @@ A jump table for the options with a short description can be found at |Q_op|.
! When included, save and restore global variables that start
with an uppercase letter, and don't contain a lowercase
letter. Thus "KEEPTHIS and "K_L_M" are stored, but "KeepThis"
and "_K_L_M" are not. Only String and Number types are
stored.
and "_K_L_M" are not. Nested List and Dict items may not be
read back correctly, you end up with an empty item.
" Maximum number of lines saved for each register. Old name of
the '<' item, with the disadvantage that you need to put a
backslash before the ", otherwise it will be recognized as the
@@ -7873,6 +7891,17 @@ A jump table for the options with a short description can be found at |Q_op|.
a pattern from the list. This avoids problems when a future version
uses another default.
*'wildignorecase'* *'wic'* *'nowildignorecase'* *'nowic'*
'wildignorecase' 'wic' boolean (default off)
global
{not in Vi}
When set case is ignored when completing file names and directories.
Has no effect on systems where file name case is generally ignored.
Does not apply when the shell is used to expand wildcards, which
happens when there are special characters.
*'wildmenu'* *'wmnu'* *'nowildmenu'* *'nowmnu'*
'wildmenu' 'wmnu' boolean (default off)
global
+7 -7
View File
@@ -1,4 +1,4 @@
*pi_tar.txt* For Vim version 7.3. Last change: 2010 Aug 09
*pi_tar.txt* For Vim version 7.3. Last change: 2010 Nov 03
+====================+
| Tar File Interface |
@@ -60,11 +60,11 @@ Copyright 2005-2010: The GPL (gnu public license) applies to *tar-copyright*
<.vimrc> file.
Default
Variable Value Explanation
*g:tar_browseoptions* "Ptf" used to get a list of contents
*g:tar_readoptions* "OPxf" used to extract a file from a tarball
*g:tar_cmd* "tar" the name of the tar program
*g:tar_nomax* 0 if true, file window will not be maximized
*g:tar_secure* undef if exists:
*g:tar_browseoptions* "Ptf" used to get a list of contents
*g:tar_readoptions* "OPxf" used to extract a file from a tarball
*g:tar_cmd* "tar" the name of the tar program
*g:tar_nomax* 0 if true, file window will not be maximized
*g:tar_secure* undef if exists:
"--"s will be used to prevent unwanted
option expansion in tar commands.
Please be sure that your tar command
@@ -76,7 +76,7 @@ Copyright 2005-2010: The GPL (gnu public license) applies to *tar-copyright*
"-"
Not all tar's support the "--" which is why
it isn't default.
*g:tar_writeoptions* "uf" used to update/replace a file
*g:tar_writeoptions* "uf" used to update/replace a file
==============================================================================
+9 -1
View File
@@ -1,4 +1,4 @@
*quickfix.txt* For Vim version 7.3. Last change: 2010 Jul 20
*quickfix.txt* For Vim version 7.3. Last change: 2010 Oct 20
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -546,6 +546,14 @@ descriptors when searching many files. However, when the |:hide| command
modifier is used the buffers are kept loaded. This makes following searches
in the same files a lot faster.
Note that |:copen| (or |:lopen| for |:lgrep|) may be used to open a buffer
containing the search results in linked form. The |:silent| command may be
used to suppress the default full screen grep output. The |:grep!| form of
the |:grep| command doesn't jump to the first match automatically. These
commands can be combined to create a NewGrep command: >
command! -nargs=+ NewGrep execute 'silent grep! <args>' | copen 42
5.1 using Vim's internal grep
+2 -1
View File
@@ -1,4 +1,4 @@
*quickref.txt* For Vim version 7.3. Last change: 2010 Sep 14
*quickref.txt* For Vim version 7.3. Last change: 2010 Dec 02
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -938,6 +938,7 @@ Short explanation of each option: *option-list*
'wildchar' 'wc' command-line character for wildcard expansion
'wildcharm' 'wcm' like 'wildchar' but also works when mapped
'wildignore' 'wig' files matching these patterns are not completed
'wildignorecase' 'wic' ignore case when completing file names
'wildmenu' 'wmnu' use menu for command line completion
'wildmode' 'wim' mode for 'wildchar' command-line expansion
'wildoptions' 'wop' specifies how command line completion is done
+12 -11
View File
@@ -1,4 +1,4 @@
*quotes.txt* For Vim version 7.3. Last change: 2006 Apr 24
*quotes.txt* For Vim version 7.3. Last change: 2010 Nov 03
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -260,15 +260,16 @@ Eccettuato, Italy)
In summary:
__ ___ _ _ _ ___ _____
\ \ / (_)_ __ ___ (_)___ | | | |/ _ \_ _|
\ \ / /| | '_ ` _ \ | / __| | |_| | | | || |
\ V / | | | | | | | | \__ \ | _ | |_| || |
\_/ |_|_| |_| |_| |_|___/ |_| |_|\___/ |_|
____ _____ _ _ _____ _____ _ _
/ ___|_ _| | | | ___| ___| | |
\___ \ | | | | | | |_ | |_ | | |
___) || | | |_| | _| | _| |_|_|
|____/ |_| \___/|_| |_| (_|_) (Tony Nugent, Australia)
__ ___ _ _ _ ___ _____ `
\ \ / (_)_ __ ___ (_)___ | | | |/ _ \_ _| `
\ \ / /| | '_ ` _ \ | / __| | |_| | | | || | `
\ V / | | | | | | | | \__ \ | _ | |_| || | `
\_/ |_|_| |_| |_| |_|___/ |_| |_|\___/ |_| `
____ _____ _ _ _____ _____ _ _ `
/ ___|_ _| | | | ___| ___| | | `
\___ \ | | | | | | |_ | |_ | | | `
___) || | | |_| | _| | _| |_|_| `
|____/ |_| \___/|_| |_| (_|_) (Tony Nugent, Australia) `
vim:tw=78:ts=8:ft=help:norl:
+3 -2
View File
@@ -1,4 +1,4 @@
*sign.txt* For Vim version 7.3. Last change: 2010 May 07
*sign.txt* For Vim version 7.3. Last change: 2010 Oct 14
VIM REFERENCE MANUAL by Gordon Prieur
@@ -70,7 +70,8 @@ DEFINING A SIGN. *:sign-define* *E255* *E160* *E612*
:sign define {name} {argument}...
Define a new sign or set attributes for an existing sign.
The {name} can either be a number (all digits) or a name
starting with a non-digit.
starting with a non-digit. Leading digits are ignored, thus
"0012", "012" and "12" are considered the same name.
About 120 different signs can be defined.
Accepted arguments:
+4 -1
View File
@@ -1,4 +1,4 @@
*spell.txt* For Vim version 7.3. Last change: 2010 Apr 11
*spell.txt* For Vim version 7.3. Last change: 2010 Dec 08
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -335,6 +335,9 @@ A spell file might not be available in the current 'encoding'. See
|spell-mkspell| about how to create a spell file. Converting a spell file
with "iconv" will NOT work!
Note: on VMS ".{enc}.spl" is changed to "_{enc}.spl" to avoid trouble with
filenames.
*spell-sug-file* *E781*
If there is a file with exactly the same name as the ".spl" file but ending in
".sug", that file will be used for giving better suggestions. It isn't loaded
+59 -30
View File
@@ -1,4 +1,4 @@
*syntax.txt* For Vim version 7.3. Last change: 2010 Sep 23
*syntax.txt* For Vim version 7.3. Last change: 2010 Dec 08
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -390,10 +390,10 @@ Or use the ":TOhtml" user command. It is defined in a standard plugin.
:10,40TOhtml
Warning: This is slow! The script must process every character of every line.
Because it is so slow, by default a progress bar is displayed in the
statusline for each step that usually takes a long time. If you don't like
seeing this progress bar, you can disable it and get a very minor speed
Warning: This can be slow! The script must process every character of every
line. Because it can take a long time, by default a progress bar is displayed
in the statusline for each major step in the conversion process. If you don't
like seeing this progress bar, you can disable it and get a very minor speed
improvement with: >
let g:html_no_progress = 1
@@ -475,40 +475,69 @@ risk of making some things look a bit different, use: >
This will use <br> at the end of each line and use "&nbsp;" for repeated
spaces.
The current value of 'encoding' is used to specify the charset of the HTML
file. This only works for those values of 'encoding' that have an equivalent
HTML charset name. To overrule this set g:html_use_encoding to the name of
the charset to be used: >
:let g:html_use_encoding = "foobar"
To omit the line that specifies the charset, set g:html_use_encoding to an
empty string: >
:let g:html_use_encoding = ""
To go back to the automatic mechanism, delete the g:html_use_encoding
variable: >
:unlet g:html_use_encoding
<
For diff mode a sequence of more than 3 filler lines is displayed as three
lines with the middle line mentioning the total number of inserted lines. If
you prefer to see all the inserted lines use: >
For diff mode on a single file (with g:html_diff_one_file) a sequence of more
than 3 filler lines is displayed as three lines with the middle line
mentioning the total number of inserted lines. If you prefer to see all the
inserted lines as with the side-by-side diff, use: >
:let g:html_whole_filler = 1
And to go back to displaying up to three lines again: >
:unlet g:html_whole_filler
<
TOhtml uses the current value of 'fileencoding' if set, or 'encoding' if not,
to determine the charset and 'fileencoding' of the HTML file. In general, this
works for the encodings mentioned specifically by name in |encoding-names|, but
TOhtml will only automatically use those encodings which are widely supported.
However, you can override this to support specific encodings that may not be
automatically detected by default.
To overrule all automatic charset detection, set g:html_use_encoding to the
name of the charset to be used. TOhtml will try to determine the appropriate
'fileencoding' setting from the charset, but you may need to set it manually
if TOhtml cannot determine the encoding. It is recommended to set this
variable to something widely supported, like UTF-8, for anything you will be
hosting on a webserver: >
:let g:html_use_encoding = "UTF-8"
You can also use this option to omit the line that specifies the charset
entirely, by setting g:html_use_encoding to an empty string: >
:let g:html_use_encoding = ""
To go back to the automatic mechanism, delete the g:html_use_encoding
variable: >
:unlet g:html_use_encoding
If you specify a charset with g:html_use_encoding for which TOhtml cannot
automatically detect the corresponding 'fileencoding' setting, you can use
g:html_encoding_override to allow TOhtml to detect the correct encoding.
This is a dictionary of charset-encoding pairs that will replace existing
pairs automatically detected by TOhtml, or supplement with new pairs. For
example, to allow TOhtml to detect the HTML charset "windows-1252" properly as
the encoding "8bit-cp1252", use: >
:let g:html_encoding_override = {'windows-1252': '8bit-cp1252'}
<
The g:html_charset_override is similar, it allows TOhtml to detect the HTML
charset for any 'fileencoding' or 'encoding' which is not detected
automatically. You can also use it to override specific existing
encoding-charset pairs. For example, TOhtml will by default use UTF-8 for all
Unicode/UCS encodings. To use UTF-16 and UTF-32 instead, use: >
:let g:html_charset_override = {'ucs-4': 'UTF-32', 'utf-16': 'UTF-16'}
Note that documents encoded in either UTF-32 or UTF-16 have known
compatibility problems with at least one major browser.
*convert-to-XML* *convert-to-XHTML*
An alternative is to have the script generate XHTML (XML compliant HTML). To
do this set the "html_use_xhtml" variable: >
If you do not like plain HTML, an alternative is to have the script generate
XHTML (XML compliant HTML). To do this set the "html_use_xhtml" variable: >
:let g:html_use_xhtml = 1
Any of these options can be enabled or disabled by setting them explicitly to
the desired value, or restored to their default by removing the variable using
|:unlet|.
Any of the on/off options listed above can be enabled or disabled by setting
them explicitly to the desired value, or restored to their default by removing
the variable using |:unlet|.
Remarks:
- This only works in a version with GUI support. If the GUI is not actually
running (possible for X11) it still works, but not very well (the colors
may be wrong).
- Some truly ancient browsers may not show the background colors.
- From most browsers you can also print the file (in color)!
- This version of TOhtml may work with older versions of Vim, but some
features such as conceal support will not function, and the colors may be
incorrect for an old Vim without GUI support compiled in.
Here is an example how to run the script over all .c and .h files from a
Unix shell: >
@@ -872,8 +901,8 @@ line to your startup file: >
DOCBOOK *docbk.vim* *ft-docbk-syntax* *docbook*
DOCBOOK XML *docbkxml.vim* *ft-docbkxml-syntax*
DOCBOOK SGML *docbksgml.vim* *ft-docbksgml-syntax*
DOCBOOK XML *docbkxml.vim* *ft-docbkxml-syntax*
DOCBOOK SGML *docbksgml.vim* *ft-docbksgml-syntax*
There are two types of DocBook files: SGML and XML. To specify what type you
are using the "b:docbk_type" variable should be set. Vim does this for you
+13
View File
@@ -671,6 +671,8 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME*
'noweirdinvert' options.txt /*'noweirdinvert'*
'nowfh' options.txt /*'nowfh'*
'nowfw' options.txt /*'nowfw'*
'nowic' options.txt /*'nowic'*
'nowildignorecase' options.txt /*'nowildignorecase'*
'nowildmenu' options.txt /*'nowildmenu'*
'nowinfixheight' options.txt /*'nowinfixheight'*
'nowinfixwidth' options.txt /*'nowinfixwidth'*
@@ -1078,10 +1080,12 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME*
'wh' options.txt /*'wh'*
'whichwrap' options.txt /*'whichwrap'*
'wi' options.txt /*'wi'*
'wic' options.txt /*'wic'*
'wig' options.txt /*'wig'*
'wildchar' options.txt /*'wildchar'*
'wildcharm' options.txt /*'wildcharm'*
'wildignore' options.txt /*'wildignore'*
'wildignorecase' options.txt /*'wildignorecase'*
'wildmenu' options.txt /*'wildmenu'*
'wildmode' options.txt /*'wildmode'*
'wildoptions' options.txt /*'wildoptions'*
@@ -4263,7 +4267,12 @@ E835 options.txt /*E835*
E836 if_pyth.txt /*E836*
E837 if_pyth.txt /*E837*
E838 netbeans.txt /*E838*
E839 insert.txt /*E839*
E84 windows.txt /*E84*
E840 insert.txt /*E840*
E841 map.txt /*E841*
E842 cmdline.txt /*E842*
E843 editing.txt /*E843*
E85 options.txt /*E85*
E86 windows.txt /*E86*
E87 windows.txt /*E87*
@@ -4987,7 +4996,9 @@ clearmatches() eval.txt /*clearmatches()*
client-server remote.txt /*client-server*
clientserver remote.txt /*clientserver*
clipboard gui.txt /*clipboard*
cmd-key gui_mac.txt /*cmd-key*
cmd-movement gui_mac.txt /*cmd-movement*
cmd-shortcuts gui_mac.txt /*cmd-shortcuts*
cmdarg-variable eval.txt /*cmdarg-variable*
cmdbang-variable eval.txt /*cmdbang-variable*
cmdline-arguments vi_diff.txt /*cmdline-arguments*
@@ -8175,6 +8186,7 @@ v:val eval.txt /*v:val*
v:var eval.txt /*v:var*
v:version eval.txt /*v:version*
v:warningmsg eval.txt /*v:warningmsg*
v:windowid eval.txt /*v:windowid*
v_! change.txt /*v_!*
v_$ visual.txt /*v_$*
v_: cmdline.txt /*v_:*
@@ -8450,6 +8462,7 @@ window-size term.txt /*window-size*
window-size-functions usr_41.txt /*window-size-functions*
window-tag windows.txt /*window-tag*
window-variable eval.txt /*window-variable*
windowid-variable eval.txt /*windowid-variable*
windows windows.txt /*windows*
windows-3.1 os_win32.txt /*windows-3.1*
windows-intro windows.txt /*windows-intro*
+143 -72
View File
@@ -1,4 +1,4 @@
*todo.txt* For Vim version 7.3. Last change: 2010 Sep 29
*todo.txt* For Vim version 7.3. Last change: 2010 Dec 08
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -30,81 +30,86 @@ be worked on, but only if you sponsor Vim development. See |sponsor|.
*known-bugs*
-------------------- Known bugs and current work -----------------------
Cursor position wrong when 'formatoptions' contains "a". (Moshe Kamensky, 2010
Sep 7, Gary Johnson, 2010 Sep 14)
Formatoptions cause cursor to jump. (ZyX, 2010 Aug 22)
Caused by revision 2294, "Make joining a range of lines much faster. (Milan
Vancura)" ?
Patch by Carlo Teubner, 2010 Sep 25. Test Sep 26.
'cursorline' is displayed too short when there are concealed characters and
'list' is set, 'listchars' at default value. (Dennis Preiser, 2010 Aug 15)
Hang on slave PTY on Mac. Patch from Nikola Knezevic, 2010 Aug 29.
Patch to fix sign type negative and memory not freed. (Xavier de Gaye, 2010
Aug 20)
Conceal: using Tab for cchar causes problems. Should reject it. (ZyX, 2010
Aug 25)
Problems with building after 7.3.050, -as-needed does not work for gcc 4.4.1?
(Charles Campbell, 2010 Nov 7) Or is the problem that we should use -ltinfo,
because nothing is used from ncurses?
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)
Patch for :mksession not escaping file name properly. (Peter Odding, 2010 Sep
19)
Patch for CTRL-] in help file doing wrong escaping. (Carlo Teubner, 2010 Sep
25)
Patch to support List and Dict in .viminfo. (Christian Brabandt, 2010 Sep 24)
Sep 26 with a test.
Patch for :grep docs. (Britton Kerin, 2010 Aug 31)
Patch for dynamic loading Ruby on Unix. (Jon, 2010 Aug 23)
Included, but also need a change to configure.
Replacement R syntax file. (Jakson A. Aquino, 2010 Sep 29)
Windows keys not set properly on Windows 7? (cncyber, 2010 Aug 26)
maparg() doesn't return the flags, such as <buffer>, <script>, <silent>.
These are needed to save and restore a mapping.
Also: the rhs string is not always correct. (Hari Krishna Dara, 2009 Sept 29)
Patch by Christian Brabandt, 2010 Sep 17.
This line hangs Vim, because of syntax HL:
call append(line, "INFO ....12....18....24....30....36....42....48....54....60....66....72....78%$")
Building the MingW version without clipboard but with multi-byte doesn't
build. (Bill Lam, 2010 Sep 18)
work. (Bill Lam, 2010 Sep 18)
When reading from stdin, don't enable signals before finishing reading?
Otherwise the program producing the text may get killed by SIGWINCH.
(Benjamin R. Haskell) Xavier: It's because reading from stdin returns -1.
Patch from Xavier de Gaye, 2010 Dec 7. More generic solution?
Bug: E685 error for func_unref(). (ZyX, 2010 Aug 5)
Patch to fix warning for accessing mediumVersion. (Dominique Pelle, 2010 Aug
18)
Using ":break" or something else that stops executing commands inside a
":finally" does not rethrow a previously uncaught exception. (ZyX, 2010 Oct
15)
Patch for 2html to support 'fileencoding'. (Benjamin Fritz, 2010 Sep 10)
Patch to use 'previewheight' for popup menu. (Benjamin Haskell, 2010 Sep 29)
CTRL-] on help tag |/[\n]| doesn't jump to the right place. (Tony Mechelynck,
2010 Aug 8)
Three patches for undo persistence. (Christian Brabandt, 2010 Sep 4)
Vim using lots of memory when joining lines. (John Little, 2010 Dec 3)
string() can't parse back "inf" and "nan". Fix documentation or fix code?
(ZyX, 2010 Aug 23)
":command Print echo 'print'" works, but ":Print" doesn't. Builtin Print
should be overruled. (Aaron Thoma)
Patch by Christian Brabandt, 2010 Sep 5.
maparg() does not show the <script> flag. When temporarily changing a
mapping, how to restore the script ID?
Comparing recursive structure loops forever. (ZyX, 2010 Aug 22, info from John
Beckett Aug 23)
Patch to fix \%V item in regexp. (Christian Brabandt, 2010 Nov 8)
Update Nov 19. James Vega: still not right. Christian: it's difficult.
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 'cursorcolumn' is set locally to a window, ":new" opens a window with the
same highlighting but 'cursorcolumn' is empty. (Tyru, 2010 Nov 15)
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".
GTK: drawing a double-width combining character over single-width characters
doesn't look right. (Dominique Pelle, 2010 Aug 8)
GTK: tear-off menu does not work. (Kurt Sonnenmoser, 2010 Oct 25)
Version of netbeans.c for use with MacVim. (Kazuki Sakamoto, 2010 Nov 18)
7.3.014 changed how backslash at end of line works, but still get a NUL when
there is one backslash. (Ray Frush, 2010 Nov 18) What does the original ex
do?
":find" completion does not escape space in directory name. (Isz, 2010 Nov 2)
Searching mixed with Visual mode doesn't redraw properly. (James Vega, 2010 Nov
22)
Win32: When using Chinese tear-off menu doesn't work. (Weasley, 2010 Oct 31)
Patch by Alex Jakushev, 2010 Nov 2.
Using ":call" inside "if 0" does not see that a function returns a Dict and
gives error for "." as string concatenation. (Yasuhiro Matsumoto, 2010 Oct 20)
Patch: Oct 20.
Patch to move check for emsg_not_now() up to avoid statusline not being
updated. (James Vega, 2010 Nov 4)
Copy/paste between Vim and Google chrome doesn't work well for multi-byte
characters. (Ben Haskell, 2010 Sep 17)
When putting text in the cut buffer (when exiting) and conversion doesn't work
@@ -115,25 +120,55 @@ clear why it doesn't work.
Editing a file with a ^M with 'ff' set to "mac", opening a help file, then the
^M is displayed as ^J sometimes. Getting 'ff' value from wrong window/buffer?
Since patch 7.2.46 Yankring plugin has become very slow, eventually make Vim
crash? (Raiwil, 2010 Nov 17)
Patch to disallow fork() when __APPLE__ is defined. (Hisashi T Fujinaka, 2010
Nov 25)
GTK: Patch to fix menu popping down. (Hong Xu, 2010 Dec 4, Dec 5)
Patch to add 'systemencoding', convert between 'encoding' and this for file
names, shell commands and the like. (Kikuchan, 2010 Oct 14)
Assume the system converts between the actual encoding of the filesystem to
the system encoding (usually utf-8).
Problem producing tags file when hebrew.frx is present. It has a BOM.
Results in E670. (Tony Mechelynck, 2010 May 2)
Patch to support sorting on floating point number. (Alex Jakushev, 2010 Oct
30)
Ruby: ":ruby print $buffer.number" returns zero.
setpos() does not restore cursor position after :normal. (Tyru, 2010 Aug 11)
7 The 'directory' option supports changing path separators to "%" to make
file names unique, also support this for 'backupdir'. (Mikolaj Machowski)
Patch by Christian Brabandt, 2010 Oct 21.
getpos()/setpos() don't include curswant. getpos() could return a fifth
element. setpos() could accept an optional fifth element.
Patch by Christian Brabandt, 2010 Sep 6. Check that new argument is optional
and that it's documented.
With "tw=55 fo+=a" typing space before ) doesn't work well. (Scott Mcdermott,
2010 Oct 24)
Patch to add random number generator. (Hong Xu, 2010 Nov 8, update Nov 10)
Alternative from Christian Brabandt. (2010 Sep 19)
Messages in message.txt are highlighted as examples.
Win32: Patch to fix slow access over network (David Anderson). Cleaned up by
John Beckett, 2010 Aug 25.
When using cp850 the NBSP (0xff) is not drawn correctly. (Brett Stahlman, 2010
Oct 22) 'isprint' is set to "@,161-255".
Test 73 fails on MS-Windows when compiled with DJGPP and run twice. How to
delete the Xfind directory? Add an rmdir() function, just like we have
mkdir().
":echo "\x85" =~# '[\u0085]'" returns 1 instead of 0. (ZyX, 2010 Oct 3)
'cindent' not correct when 'list' is set. (Zdravi Korusef, 2010 Apr 15)
Windows installer: licence text should not use indent, causes bad word wrap.
@@ -151,19 +186,35 @@ Echo starts in the wrong column:
while 1 | let s = input('A') | echo 'R' | endw
(Boyko Bantchev, 2010 Aug 9)
Patch for GVimExt to show an icon. (Dominik Riebeling, 2010 Nov 7)
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)
":drop" does not respect 'autochdir'. (Peter Odding, 2010 Jul 24)
Patch for VisVim, pass file name to VimOpenFile. (Jiri Sedlak, 2010 Nov 12)
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)
Writing nested List and Dict in viminfo gives error message and can't be read
back. (Yukihiro Nakadaira, 2010 Nov 13)
Dos uninstal may delete vim.bat from the wrong directory (e.g., when someone
makes his own wrapper). Add a magic string with the version number to the
.bat file and check for it in the uninstaller. E.g.
# uninstall key: vim7.3*
Problem with cursor in the wrong column. (SungHyun Nam, 2010 Mar 11)
Additional info by Dominique Pelle. (also on 2010 Apr 10)
CreateFile and CreateFileW are used without sharing, filewritable() fails when
the file was already open (e.g. script is being sourced). Add FILE_SHARE_READ|
FILE_SHARE_WRITE in mch_access()? (Phillippe Vaucher, 2010 Nov 2)
Is ~/bin (literally) in $PATH supposed to work? (Paul, 2010 March 29)
Looks like only bash can do it. (Yakov Lerner)
@@ -196,12 +247,17 @@ Shell not recognized properly if it ends in "csh -f". (James Vega, 2009 Nov 3)
Find tail? Might have a / in argument. Find space? Might have space in
path.
":sort n" treats empty line as higher than zero. (Beeyawned, 2010 Oct 13)
":function f(x) keepjumps" creates a function where every command is executed
like it has ":keepjumps" before it.
Coverity: ask someone to create new user: Dominique.
Check if there are new reported defects: http://scan.coverity.com/rung2.html
Patch to support :undo absolute jump to file save number. (Christian Brabandt,
2010 Nov 5)
When setting 'undofile' while the file is already loaded, but unchanged, try
to read the undo file. Requires computing a checksum of the text. (Andy
Wokula)
@@ -220,6 +276,8 @@ 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?
Patch for static code analysis errors in riscOS. (Dominique Pelle, 2010 Dec 3)
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().
@@ -227,6 +285,8 @@ Most time is spent in in_id_list().
Slow combination of folding and PHP syntax highlighting. Script to reproduce
it. Caused by "syntax sync fromstart" in combination with patch 7.2.274.
(Christian Brabandt, 2010 May 27)
Generally, folding with 'foldmethod' set to "syntax" is slow. Do profiling to
find out why.
When completion inserts the first match, it may trigger the line to be folded.
Disable updating folds while completion is active? (Peter Odding, 2010 Jun 9)
@@ -251,6 +311,9 @@ Invalid read error in Farsi mode. (Dominique Pelle, 2009 Aug 2)
For running gvim on an USB stick: avoid the OLE registration. Use a command
line argument -noregister.
When using an expression in 'statusline' leading white space sometimes goes
missing (but not always). (ZyX, 2010 Nov 1)
When a mapping exists both for insert mode and lang-insert mode, the last one
doesn't work. (Tyru, 2010 May 6) Or is this intended?
@@ -364,6 +427,10 @@ perhaps. And undo CTRL-W. CTRL-G l would redo.
Diff mode out of sync. (Gary Johnson, 2010 Aug 4)
Support a 'systemencoding' option (for Unix). It specifies the encoding of
file names. (Kikuchan, 2010 Oct 5). Useful on a latin1 or double-byte Asian
system when 'encoding' is "utf-8".
Win32: A --remote command that has a directory name starting with a ( doesn't
work, the backslash is removed, assuming that it escapes the (. (Valery
Kondakoff, 2009 May 13)
@@ -385,6 +452,9 @@ very high. (Yegappan Lakshmanan, 2010 Jul 22, Michael Peeters, 2010 Jul 22)
Directory wrong in session file, caused by ":lcd" in BufEnter autocommand.
(Felix Kater, 2009 Mar 3)
Session file generates error upon loading, cause bu --remote-silent-tab.
(7tommm (ytommm) 2010 Nov 24)
Using ~ works OK on 'a' with composing char, but not on 0x0418 with composing
char 0x0301. (Tony Mechelynck, 2009 Mar 4)
@@ -418,6 +488,11 @@ correct. Don't use it in the swap file.
Completion for ":buf" doesn't work properly on Win32 when 'shellslash' is off.
(Henrik Ohman, 2009, Jan 29)
shellescape() depends on 'shellshash' for quoting. That doesn't work when
'shellslash' is set but using cmd.exe. (Ben Fritz)
Use a different option or let it depend on whether 'shell' looks like a
unix-like shell?
Allow patches to add something to version.c, like with an official patch, so
that :version output shows which patches have been applied.
@@ -467,11 +542,6 @@ Having "Syntax" in 'eventignore' for :bufdo may cause problems, e.g. for
option only for when jumping to another buffer, not when the command argument
is executed.
Crash with dragn-n-drop of file combined with netrw (Marius Gedminas, 2008 Jun
11) I can't reproduce it. It's probably caused by a handle_drop() call
in combination with autocommands that invoke a ":redraw" command.
Another valgrind output Jun 30.
":pedit %" with a BufReadPre autocommand causes the cursor to move to the
first line. (Ingo Karkat, 2008 Jul 1) Ian Kelling is working on this.
@@ -501,9 +571,6 @@ Patch for c.vim and cpp.vim syntax files. (Chung-chieh Shan, 2008 Nov 26)
c.vim: XXX in a comment is colored yellow, but not when it's after "#if 0".
(Ilya Dogolazky, 2009 Aug 7)
Win32: ":dis +" shows nothing, but "+p does insert text. Problem with "* and
"+ being the same thing?
You can type ":w ++bad=x fname", but the ++bad argument is ignored. Give an
error message? Or is this easy to implement? (Nathan Stratton Treadway, 2008
Aug 20) This is in ucs2bytes(), search for 0xBF. Using the ++bad argument is
@@ -540,9 +607,6 @@ When mapping : to ; and ; to :, @; doesn't work like @: and @: doesn't work
either. Matt Wozniski: nv_at() calls do_execreg() which uses
put_in_typebuf(). Char mapped twice?
8 Some file systems are case-sensitive, some are not. Turn
CASE_INSENSITIVE_FILENAME into an option, at least for completion.
Despite adding save_subexpr() this still doesn't work properly:
Regexp: matchlist('12a4aaa', '^\(.\{-}\)\(\%5c\@<=a\+\)\(.\+\)\?')
Returns ['12a4', 'aaa', '4aaa'], should be ['12a4', 'aaa', '']
@@ -598,6 +662,9 @@ try the Cocoa version.
Mac: After a ":vsplit" the left scrollbar doesn't appear until 'columns' is
changed or the window is resized.
GTK: when setting 'columns' in a startup script and doing ":vertical diffsplit"
the window isn't redrawn properly, see two vertical bars.
Mac: Patch for configure: remove arch from ruby link args. (Knezevic, 2008
Mar 5) Alternative: Kazuki Sakamoto, Mar 7.
@@ -884,6 +951,8 @@ if_ruby.c.
Patch to dynamically load Python on Solaris. (Danek Duvall, 2009 Feb 16)
Needs more work.
Python3 interface doesn't handle utf-8 correctly? (Nov 2010, lilydjwg)
The need_fileinfo flag is messy. Instead make the message right away and put
it in keep_msg?
@@ -1105,8 +1174,8 @@ doesn't work from Geoffrey Antos, 2008 May 5.
Also: the window may no longer fit on the screen, thus the command line is not
visible.
GTK: when setting 'columns' in a startup script and doing ":vertical diffsplit"
the window isn't redrawn properly, see two vertical bars.
When right after "vim file", "M" then CTRL-W v the windows are scrolled
differently and unexpectedly. Caused by patch 7.2.398?
The magic clipboard format "VimClipboard2" appears in several places. Should
be only one.
@@ -1545,6 +1614,8 @@ Athena and Motif:
Athena GUI:
9 The first event for any button in the menu or toolbar appears to get lost.
The second click on a menu does work.
9 When dragging the scrollbar thumb very fast, focus is only obtained in
the scrollbar itself. And the thumb is no longer updated when moving
through files.
@@ -1868,11 +1939,6 @@ Macintosh:
works.
8 A very long message in confirm() can't be quit. Make this possible with
CTRL-C.
7 clip_x11_own_selection() uses CurrentTime, that is not allowed. VNC X
server has a problem with this. (Mark Waggoner) Remembering the timestamp
of events isn't always possible. We don't get them in an xterm. GTK
doesn't obtain the selection again when the timestamp differs, thus it
won't work for GTK anyway.
8 When the clipboard isn't supported: ":yank*" gives a confusing error
message. Specifically mention that the register name is invalid.
8 "gf" always excludes trailing punctuation characters. file_name_in_line()
@@ -4064,6 +4130,9 @@ Buffer list:
should then mean the number of the last buffer. E.g.: "4,$bdel".
7 Add an option to mostly use slashes in file names. Separately for
internal use and for when executing an external program?
8 Some file systems are case-sensitive, some are not. Besides
'wildignorecase' there might be more parts inside
CASE_INSENSITIVE_FILENAME that are useful on Unix.
Swap (.swp) files:
@@ -4267,8 +4336,6 @@ Writing files:
8 'backupskip' doesn't write a backup file at all, a bit dangerous for some
applications. Add 'backupelsewhere' to write a backup file in another
directory? Or add a flag to 'backupdir'?
7 The 'directory' option supports changing path separators to "%" to make
file names unique, also support this for 'backupdir'. (Mikolaj Machowski)
6 Add an option to write a new, numbered, backup file each time. Like
'patchmode', e.g., 'backupmode'.
6 Make it possible to write 'patchmode' files to a different directory.
@@ -4367,6 +4434,8 @@ 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
@@ -4462,6 +4531,8 @@ Various improvements:
3 Make "2d%" work like "d%d%" instead of "d2%"?
7 "g CTRL-O" jumps back to last used buffer. Skip CTRL-O jumps in the same
buffer. Make jumplist remember the last ten accessed buffers?
7 Make it possible to set the size of the jumplist (also to a smaller number
than the default). (Nikolai Weibull)
- Add code to disable the CAPS key when going from Insert to Normal mode.
- Set date/protection/etc. of the patchfile the same as the original file.
- Use growarray for termcodes[] in term.c
+4 -2
View File
@@ -1,4 +1,4 @@
*undo.txt* For Vim version 7.3. Last change: 2010 Sep 30
*undo.txt* For Vim version 7.3. Last change: 2010 Oct 21
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -239,7 +239,9 @@ Vim saves undo trees in a separate undo file, one for each edited file, using
a simple scheme that maps filesystem paths directly to undo files. Vim will
detect if an undo file is no longer synchronized with the file it was written
for (with a hash of the file contents) and ignore it when the file was changed
after the undo file was written, to prevent corruption.
after the undo file was written, to prevent corruption. An undo file is also
ignored if its owner differs from the owner of the edited file. Set 'verbose'
to get a message about that.
Undo files are normally saved in the same directory as the file. This can be
changed with the 'undodir' option.
+12 -5
View File
@@ -1,4 +1,4 @@
*usr_01.txt* For Vim version 7.3. Last change: 2008 May 07
*usr_01.txt* For Vim version 7.3. Last change: 2010 Nov 03
VIM USER MANUAL - by Bram Moolenaar
@@ -40,13 +40,20 @@ the commands and options used for it. Use these two commands:
Press CTRL-] to jump to a subject under the cursor.
Press CTRL-O to jump back (repeat to go further back).
Many links are in vertical bars, like this: |bars|. An option name, like
'number', a command in double quotes like ":write" and any other word can also
be used as a link. Try it out: Move the cursor to CTRL-] and press CTRL-]
on it.
Many links are in vertical bars, like this: |bars|. The bars themselves may
be hidden or invisible, see below. An option name, like 'number', a command
in double quotes like ":write" and any other word can also be used as a link.
Try it out: Move the cursor to CTRL-] and press CTRL-] on it.
Other subjects can be found with the ":help" command, see |help.txt|.
The bars and stars are usually hidden with the |conceal| feature. They also
use |hl-Ignore|, using the same color for the text as the background. You can
make them visible with: >
:set conceallevel=0
:hi link HelpBar Normal
:hi link HelpStar Normal
==============================================================================
*01.2* Vim installed
+3 -1
View File
@@ -1,4 +1,4 @@
*usr_41.txt* For Vim version 7.3. Last change: 2010 Jul 20
*usr_41.txt* For Vim version 7.3. Last change: 2010 Nov 17
VIM USER MANUAL - by Bram Moolenaar
@@ -793,6 +793,8 @@ Syntax and highlighting: *syntax-functions* *highlighting-functions*
synID() get syntax ID at a specific position
synIDattr() get a specific attribute of a syntax ID
synIDtrans() get translated syntax ID
synstack() get list of syntax IDs at a specific position
synconcealed() get info about concealing
diff_hlID() get highlight ID for diff mode at a position
matchadd() define a pattern to highlight (a "match")
matcharg() get info about |:match| arguments
+2 -1
View File
@@ -1,4 +1,4 @@
*various.txt* For Vim version 7.3. Last change: 2010 Sep 23
*various.txt* For Vim version 7.3. Last change: 2010 Nov 10
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -101,6 +101,7 @@ g8 Print the hex values of the bytes used in the
:[range]P[rint] [count] [flags]
Just as ":print". Was apparently added to Vi for
people that keep the shift key pressed too long...
Note: A user command can overrule this command.
See |ex-flags| for [flags].
*:l* *:list*
+3 -3
View File
@@ -1,4 +1,4 @@
*version7.txt* For Vim version 7.3. Last change: 2010 Aug 15
*version7.txt* For Vim version 7.3. Last change: 2010 Nov 03
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1675,7 +1675,7 @@ The GTK font dialog uses a font size zero when the font name doesn't include a
size. Use a default size of 10.
This example in the documentation didn't work:
:e `=foo . ".c" `
:e `=foo . ".c"`
Skip over the expression in `=expr` when looking for comments, |, % and #.
When ":helpgrep" doesn't find anything there is no error message.
@@ -8182,7 +8182,7 @@ Solution: Use get_cmdline_type(). (James Vega)
Files: src/ex_getln.c
Patch 7.2.130
Problem: Vim may haing until CTRL-C is typed when using CTRL-Z.
Problem: Vim may hang until CTRL-C is typed when using CTRL-Z.
Solution: Avoid using pause(). Also use "volatile" for variables used in
signal functions. (Dominique Pelle)
Files: src/auto/configure, src/configure.in, src/config.h.in,
+3 -1
View File
@@ -1,4 +1,4 @@
*vi_diff.txt* For Vim version 7.3. Last change: 2010 Sep 25
*vi_diff.txt* For Vim version 7.3. Last change: 2010 Oct 11
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -989,6 +989,8 @@ These are remarks about running the POSIX test suite:
- vi test 33 sometimes fails for unknown reasons
- vi test 250 fails; behavior will be changed in a new revision
http://www.opengroup.org/austin/mailarchives/ag-review/msg01710.html
(link no longer works, perhaps it's now:
https://www.opengroup.org/sophocles/show_mail.tpl?CALLER=show_archive.tpl&source=L&listname=austin-review-l&id=1711)
- vi test 310 fails; exit code non-zero when any error occurred?
- ex test 24 fails because test is wrong. Changed between SUSv2 and SUSv3.
- ex tests 47, 48, 49, 72, 73 fail because .exrc file isn't read in silent
+1 -1
View File
@@ -214,7 +214,7 @@ EOF
}
# main
usage() if $#ARGV < 2;
usage() if $#ARGV < 1;
print "Processing tags...\n";
readTagFile( $ARGV[ 0 ] );
+2 -2
View File
@@ -1,7 +1,7 @@
" Vim filetype plugin file
" Language: generic Changelog file
" Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2009-05-25
" Latest Revision: 2010-08-17
" Variables:
" g:changelog_timeformat (deprecated: use g:changelog_dateformat instead) -
" description: the timeformat used in ChangeLog entries.
@@ -170,7 +170,7 @@ if &filetype == 'changelog'
endfunction
" Internal function to create a new entry in the ChangeLog.
function! s:new_changelog_entry()
function! s:new_changelog_entry(...)
" Deal with 'paste' option.
let save_paste = &paste
let &paste = 1
+22
View File
@@ -0,0 +1,22 @@
" Vim filetype plugin file
" Language: DocBook
" Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2010-10-14
if exists('b:did_ftplugin')
finish
endif
if !exists('b:docbk_type')
if expand('%:e') == 'sgml'
let b:docbk_type = 'sgml'
else
let b:docbk_type = 'xml'
endif
endif
if b:docbk_type == 'sgml'
runtime! ftplugin/sgml.vim ftplugin/sgml_*.vim ftplugin/sgml/*.vim
else
runtime! ftplugin/xml.vim ftplugin/xml_*.vim ftplugin/xml/*.vim
endif
+5 -1
View File
@@ -1,7 +1,7 @@
" Vim filetype plugin file
" Language: man
" Maintainer: SungHyun Nam <goweol@gmail.com>
" Last Change: 2008 Sep 17
" Last Change: 2010 Nov 29
" To make the ":Man" command available before editing a manual page, source
" this script from your startup vimrc file.
@@ -15,6 +15,10 @@ if &filetype == "man"
endif
let b:did_ftplugin = 1
" Ensure Vim is not recursively invoked (man-db does this)
" when doing ctrl-[ on a man page reference.
let $MANPAGER = ""
" allow dot and dash in manual page name.
setlocal iskeyword+=\.,-
+3 -1
View File
@@ -1,7 +1,7 @@
" These commands create the option window.
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2010 Jul 24
" Last Change: 2010 Dec 02
" If there already is an option window, jump to that one.
if bufwinnr("option-window") > 0
@@ -1053,6 +1053,8 @@ if has("wildignore")
call append("$", "wildignore\tlist of patterns to ignore files for file name completion")
call <SID>OptionG("wig", &wig)
endif
call append("$", "wildignorecase\tignore case when completing file names")
call <SID>BinOptionG("wic", &wic)
if has("wildmenu")
call append("$", "wildmenu\tcommand-line completion shows a list of matches")
call <SID>BinOptionG("wmnu", &wmnu)
+3 -2
View File
@@ -1,6 +1,6 @@
" Vim plugin for showing matching parens
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2008 Sep 03
" Last Change: 2010 Nov 16
" Exit quickly when:
" - this plugin was already loaded (or disabled)
@@ -82,8 +82,9 @@ 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.
let s_skip ='synIDattr(synID(line("."), col("."), 0), "name") ' .
\ '=~? "string\\|character\\|singlequote\\|comment"'
\ '=~? "string\\|character\\|singlequote\\|escape\\|comment"'
execute 'if' s_skip '| let s_skip = 0 | endif'
" Limit the search to lines visible in the window.
+40 -3
View File
@@ -1,23 +1,60 @@
" Vim plugin for converting a syntax highlighted file to HTML.
" Maintainer: Ben Fritz <fritzophrenic@gmail.com>
" Last Change: 2010 Aug 12
" Last Change: 2010 Oct 28
"
" The core of the code is in $VIMRUNTIME/autoload/tohtml.vim and
" $VIMRUNTIME/syntax/2html.vim
"
" TODO:
" * Patch to leave tab characters in when noexpandtab set (Andy Spencer)
" * Make folds show up when using a range and dynamic folding
" * Remove fold column when there are no folds and using dynamic folding
" * Restore open/closed folds and cursor position after processing each file
" with option not to restore for speed increase
" * Add extra meta info (generation time, etc.)
" * Tidy up so we can use strict doctype more?
" * Tidy up so we can use strict doctype in even more situations?
" * Implementation detail: add threshold for writing the lines to the html
" buffer before we're done (5000 or so lines should do it)
" * TODO comments for code cleanup scattered throughout
"
"
" Changelog:
" 7.3_v7 (this version): see betas released on vim_dev below:
" 7.3_v7b3: Fixed bug, convert Unicode to UTF-8 all the way.
" 7.3_v7b2: Remove automatic detection of encodings that are not
" supported by all major browsers according to
" http://wiki.whatwg.org/wiki/Web_Encodings and convert
" to UTF-8 for all Unicode encodings. Make HTML
" encoding to Vim encoding detection be
" case-insensitive for built-in pairs.
" 7.3_v7b1: Remove use of setwinvar() function which cannot be
" called in restricted mode (Andy Spencer). Use
" 'fencoding' instead of 'encoding' to determine by
" charset, and make sure the 'fenc' of the generated
" file matches its indicated charset. Add charsets for
" all of Vim's natively supported encodings.
" 7.3_v6 (0d3f0e3d289b): Really fix bug with 'nowrapscan', 'magic' and other
" user settings interfering with diff mode generation,
" trailing whitespace (e.g. line number column) when
" using html_no_pre, and bugs when using
" html_hover_unfold.
" 7.3_v5 ( unreleased ): Fix bug with 'nowrapscan' and also with out-of-sync
" folds in diff mode when first line was folded.
" 7.3_v4 (7e008c174cc3): Bugfixes, especially for xhtml markup, and diff mode.
" 7.3_v3 (a29075150aee): Refactor option handling and make html_use_css
" default to true when not set to anything. Use strict
" doctypes where possible. Rename use_xhtml option to
" html_use_xhtml for consistency. Use .xhtml extension
" when using this option. Add meta tag for settings.
" 7.3_v2 (80229a724a11): Fix syntax highlighting in diff mode to use both the
" diff colors and the normal syntax colors
" 7.3_v1 (e7751177126b): Add conceal support and meta tags in output
" Pre-v1 baseline: Mercurial changeset 3c9324c0800e
if exists('g:loaded_2html_plugin')
finish
endif
let g:loaded_2html_plugin = 'vim7.3_v6'
let g:loaded_2html_plugin = 'vim7.3_v7'
" Define the :TOhtml command when:
" - 'compatible' is not set
+16 -3
View File
@@ -1,6 +1,6 @@
" Vim syntax support file
" Maintainer: Ben Fritz <fritzophrenic@gmail.com>
" Last Change: 2010 Aug 12
" Last Change: 2010 Sep 04
"
" Additional contributors:
"
@@ -265,6 +265,19 @@ set paste
let s:old_magic = &magic
set magic
" set the fileencoding to match the charset we'll be using
let &l:fileencoding=s:settings.vim_encoding
" According to http://www.w3.org/TR/html4/charset.html#doc-char-set, the byte
" order mark is highly recommend on the web when using multibyte encodings. But,
" it is not a good idea to include it on UTF-8 files. Otherwise, let Vim
" determine when it is actually inserted.
if s:settings.vim_encoding == 'utf-8'
setlocal nobomb
else
setlocal bomb
endif
let s:lines = []
if s:settings.use_xhtml
@@ -1071,14 +1084,14 @@ let &magic = s:old_magic
let @/ = s:old_search
let &more = s:old_more
exe s:orgwin . "wincmd w"
let &l:stl = s:origwin_stl
let &l:et = s:old_et
let &l:scrollbind = s:old_bind
exe s:newwin . "wincmd w"
let &l:stl = s:newwin_stl
exec 'resize' s:old_winheight
let &l:winfixheight = s:old_winfixheight
call setwinvar(s:orgwin,'&stl', s:origwin_stl)
call setwinvar(s:newwin,'&stl', s:newwin_stl)
let &ls=s:ls
" Save a little bit of memory (worth doing?)
+3 -3
View File
@@ -3,8 +3,8 @@
" Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
" Former Maintainers: Gerfried Fuchs <alfie@ist.org>
" Wichert Akkerman <wakkerma@debian.org>
" Last Change: 2010 May 06
" URL: http://hg.debian.org/hg/pkg-vim/vim/raw-file/tip/runtime/syntax/debchangelog.vim
" Last Change: 2010 Oct 21
" URL: http://hg.debian.org/hg/pkg-vim/vim/raw-file/unstable/runtime/syntax/debchangelog.vim
" Standard syntax initialization
if version < 600
@@ -19,7 +19,7 @@ syn case ignore
" Define some common expressions we can use later on
syn match debchangelogName contained "^[[:alnum:]][[:alnum:].+-]\+ "
syn match debchangelogUrgency contained "; urgency=\(low\|medium\|high\|critical\|emergency\)\( \S.*\)\="
syn match debchangelogTarget contained "\v %(frozen|unstable|%(testing|%(old)=stable)%(-proposed-updates|-security)=|experimental|%(etch|lenny)-%(backports|volatile)|%(dapper|hardy|jaunty|karmic|lucid|maverick)%(-%(security|proposed|updates|backports|commercial|partner))=)+"
syn match debchangelogTarget contained "\v %(frozen|unstable|%(testing|%(old)=stable)%(-proposed-updates|-security)=|experimental|%(lenny|squeeze)-%(backports%(-sloppy)=|volatile)|%(dapper|hardy|jaunty|karmic|lucid|maverick|natty)%(-%(security|proposed|updates|backports|commercial|partner))=)+"
syn match debchangelogVersion contained "(.\{-})"
syn match debchangelogCloses contained "closes:\_s*\(bug\)\=#\=\_s\=\d\+\(,\_s*\(bug\)\=#\=\_s\=\d\+\)*"
syn match debchangelogLP contained "\clp:\s\+#\d\+\(,\s*#\d\+\)*"
+3 -3
View File
@@ -3,8 +3,8 @@
" Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
" Former Maintainers: Gerfried Fuchs <alfie@ist.org>
" Wichert Akkerman <wakkerma@debian.org>
" Last Change: 2009 Aug 17
" URL: http://hg.debian.org/hg/pkg-vim/vim/raw-file/tip/runtime/syntax/debcontrol.vim
" Last Change: 2010 Oct 21
" URL: http://hg.debian.org/hg/pkg-vim/vim/raw-file/unstable/runtime/syntax/debcontrol.vim
" Standard syntax initialization
if version < 600
@@ -27,7 +27,7 @@ syn match debControlSpace " "
syn match debcontrolArchitecture contained "\%(all\|any\|alpha\|amd64\|arm\%(e[bl]\)\=\|avr32\|hppa\|i386\|ia64\|lpia\|m32r\|m68k\|mips\%(el\)\=\|powerpc\|ppc64\|s390x\=\|sh[34]\(eb\)\=\|sh\|sparc\%(64\)\=\|hurd-i386\|kfreebsd-\%(i386\|amd64\|gnu\)\|knetbsd-i386\|kopensolaris-i386\|netbsd-\%(alpha\|i386\)\)"
syn match debcontrolName contained "[a-z0-9][a-z0-9+.-]\+"
syn match debcontrolPriority contained "\(extra\|important\|optional\|required\|standard\)"
syn match debcontrolSection contained "\v((contrib|non-free|non-US/main|non-US/contrib|non-US/non-free|restricted|universe|multiverse)/)?(admin|cli-mono|comm|database|debian-installer|debug|devel|doc|editors|electronics|embedded|fonts|games|gnome|gnustep|gnu-r|graphics|hamradio|haskell|httpd|interpreters|java|kde|kernel|libs|libdevel|lisp|localization|mail|math|misc|net|news|ocaml|oldlibs|otherosfs|perl|php|python|ruby|science|shells|sound|text|tex|utils|vcs|video|web|x11|xfce|zope)"
syn match debcontrolSection contained "\v((contrib|non-free|non-US/main|non-US/contrib|non-US/non-free|restricted|universe|multiverse)/)?(admin|cli-mono|comm|database|debian-installer|debug|devel|doc|editors|electronics|embedded|fonts|games|gnome|gnustep|gnu-r|graphics|hamradio|haskell|httpd|interpreters|java|kde|kernel|libs|libdevel|lisp|localization|mail|math|metapackages|misc|net|news|ocaml|oldlibs|otherosfs|perl|php|python|ruby|science|shells|sound|text|tex|utils|vcs|video|web|x11|xfce|zope)"
syn match debcontrolPackageType contained "u\?deb"
syn match debcontrolVariable contained "\${.\{-}}"
syn match debcontrolDmUpload contained "\cyes"
+3 -3
View File
@@ -2,8 +2,8 @@
" Language: Debian sources.list
" Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
" Former Maintainer: Matthijs Mohlmann <matthijs@cacholong.nl>
" Last Change: 2010 May 06
" URL: http://hg.debian.org/hg/pkg-vim/vim/raw-file/tip/runtime/syntax/debsources.vim
" Last Change: 2010 Oct 21
" URL: http://hg.debian.org/hg/pkg-vim/vim/raw-file/unstable/runtime/syntax/debsources.vim
" Standard syntax initialization
if version < 600
@@ -23,7 +23,7 @@ syn match debsourcesComment /#.*/ contains=@Spell
" Match uri's
syn match debsourcesUri +\(http://\|ftp://\|[rs]sh://\|debtorrent://\|\(cdrom\|copy\|file\):\)[^' <>"]\++
syn match debsourcesDistrKeyword +\([[:alnum:]_./]*\)\(etch\|lenny\|squeeze\|\(old\)\=stable\|testing\|unstable\|sid\|rc-buggy\|experimental\|dapper\|hardy\|jaunty\|karmic\|lucid\|maverick\)\([-[:alnum:]_./]*\)+
syn match debsourcesDistrKeyword +\([[:alnum:]_./]*\)\(lenny\|squeeze\|\(old\)\=stable\|testing\|unstable\|sid\|rc-buggy\|experimental\|dapper\|hardy\|jaunty\|karmic\|lucid\|maverick\|natty\)\([-[:alnum:]_./]*\)+
" Associate our matches and regions with pretty colours
hi def link debsourcesLine Error
+2 -2
View File
@@ -1,7 +1,7 @@
" Vim syntax file
" Language: gpg(1) configuration file
" Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2007-06-17
" Latest Revision: 2010-10-14
if exists("b:current_syntax")
finish
@@ -54,7 +54,7 @@ syn keyword gpgOption contained skipwhite nextgroup=gpgArg
\ personal-digest-preferences photo-viewer
\ recipient s2k-cipher-algo s2k-digest-algo s2k-mode
\ secret-keyring set-filename set-policy-url status-fd
\ trusted-key verify-options
\ trusted-key verify-options keyid-format list-options
syn keyword gpgOption contained skipwhite nextgroup=gpgArgError
\ allow-freeform-uid allow-non-selfsigned-uid
\ allow-secret-key-import always-trust
+10 -6
View File
@@ -1,10 +1,13 @@
" Vim syntax file
" Language: Groovy
" Maintainer: Alessio Pace <billy.corgan@tiscali.it>
" Version: 0.1.9b
" Original Author: Alessio Pace <billy.corgan@tiscali.it>
" Maintainer: Tobias Rapp <yahuxo@gmx.de>
" Version: 0.1.10
" URL: http://www.vim.org/scripts/script.php?script_id=945
" Last Change: 6/4/2004
" Last Change: 2010 Nov 29
" THE ORIGINAL AUTHOR'S NOTES:
"
" This is my very first vim script, I hope to have
" done it the right way.
"
@@ -16,8 +19,7 @@
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
"
" HOWTO USE IT (INSTALL):
" [groovy is still not recognized by vim! :-( ]
" HOWTO USE IT (INSTALL) when not part of the distribution:
"
" 1) copy the file in the (global or user's $HOME/.vim/syntax/) syntax folder
"
@@ -247,7 +249,9 @@ syn match groovySpecialError contained "\\."
syn match groovySpecialCharError contained "[^']"
syn match groovySpecialChar contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)"
syn region groovyString start=+"+ end=+"+ end=+$+ contains=groovySpecialChar,groovySpecialError,@Spell,groovyELExpr
syn region groovyString start=+'+ end=+'+ end=+$+ contains=groovySpecialChar,groovySpecialError,@Spell,groovyELExpr
syn region groovyString start=+'+ end=+'+ end=+$+ contains=groovySpecialChar,groovySpecialError,@Spell
syn region groovyString start=+"""+ end=+"""+ contains=groovySpecialChar,groovySpecialError,@Spell,groovyELExpr
syn region groovyString start=+'''+ end=+'''+ contains=groovySpecialChar,groovySpecialError,@Spell
" syn region groovyELExpr start=+${+ end=+}+ keepend contained
syn match groovyELExpr /\${.\{-}}/ contained
GroovyHiLink groovyELExpr Identifier
+2 -1
View File
@@ -1,7 +1,7 @@
" Vim syntax file
" Language: Vim help file
" Maintainer: Bram Moolenaar (Bram@vim.org)
" Last Change: 2009 May 18
" Last Change: 2010 Nov 03
" Quit when a (custom) syntax file was already loaded
if exists("b:current_syntax")
@@ -30,6 +30,7 @@ syn match helpVim "VIM REFERENCE.*"
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
syn keyword helpNote note Note NOTE note: Note: NOTE: Notes Notes:
syn match helpSpecial "\<N\>"
+10 -4
View File
@@ -1,8 +1,8 @@
" Vim syntax file
" Language: Lex
" Maintainer: Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
" Last Change: Sep 11, 2009
" Version: 10
" Last Change: Nov 01, 2010
" Version: 12
" URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
"
" Option:
@@ -36,6 +36,9 @@ endif
" --- Lex stuff ---
" --- ========= ---
" Options Section
syn match lexOptions '^%\s*option\>.*$' contains=lexPatString
"I'd prefer to use lex.* , but vim doesn't handle forward definitions yet
syn cluster lexListGroup contains=lexAbbrvBlock,lexAbbrv,lexAbbrv,lexAbbrvRegExp,lexInclude,lexPatBlock,lexPat,lexBrace,lexPatString,lexPatTag,lexPatTag,lexPatComment,lexPatCodeLine,lexMorePat,lexPatSep,lexSlashQuote,lexPatCode,cInParen,cUserLabel,cOctalZero,cCppSkip,cErrInBracket,cErrInParen,cOctalError,cCppOut2,cCommentStartError,cParenError
syn cluster lexListPatCodeGroup contains=lexAbbrvBlock,lexAbbrv,lexAbbrv,lexAbbrvRegExp,lexInclude,lexPatBlock,lexPat,lexBrace,lexPatTag,lexPatTag,lexPatTagZoneStart,lexPatComment,lexPatCodeLine,lexMorePat,lexPatSep,lexSlashQuote,cInParen,cUserLabel,cOctalZero,cCppSkip,cErrInBracket,cErrInParen,cOctalError,cCppOut2,cCommentStartError,cParenError
@@ -61,13 +64,15 @@ endif
"%% : Patterns {Actions}
if has("folding")
syn region lexPatBlock fold matchgroup=Todo start="^%%$" matchgroup=Todo end="^%%$" skipnl skipwhite contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat
syn region lexPatBlock fold matchgroup=Todo start="^%%$" matchgroup=Todo end="^%%$" skipnl skipwhite contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat,lexPatInclude
syn region lexPat fold start=+\S+ skip="\\\\\|\\." end="\s"me=e-1 contained nextgroup=lexMorePat,lexPatSep contains=lexPatTag,lexPatString,lexSlashQuote,lexBrace
syn region lexPatInclude fold matchgroup=lexSep start="^%{" end="%}" contained contains=lexPatCode
syn region lexBrace fold start="\[" skip=+\\\\\|\\+ end="]" contained
syn region lexPatString fold matchgroup=String start=+"+ skip=+\\\\\|\\"+ matchgroup=String end=+"+ contained
else
syn region lexPatBlock matchgroup=Todo start="^%%$" matchgroup=Todo end="^%%$" skipnl skipwhite contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat
syn region lexPatBlock matchgroup=Todo start="^%%$" matchgroup=Todo end="^%%$" skipnl skipwhite contains=lexPatTag,lexPatTagZone,lexPatComment,lexPat,lexPatInclude
syn region lexPat start=+\S+ skip="\\\\\|\\." end="\s"me=e-1 contained nextgroup=lexMorePat,lexPatSep contains=lexPatTag,lexPatString,lexSlashQuote,lexBrace
syn region lexPatInclude matchgroup=lexSep start="^%{" end="%}" contained contains=lexPatCode
syn region lexBrace start="\[" skip=+\\\\\|\\+ end="]" contained
syn region lexPatString matchgroup=String start=+"+ skip=+\\\\\|\\"+ matchgroup=String end=+"+ contained
endif
@@ -117,6 +122,7 @@ hi def link lexAbbrvRegExp Macro
hi def link lexAbbrv SpecialChar
hi def link lexCFunctions Function
hi def link lexMorePat SpecialChar
hi def link lexOptions PreProc
hi def link lexPatComment Comment
hi def link lexPat Function
hi def link lexPatString Function
+15 -15
View File
@@ -1,8 +1,8 @@
" Vim syntax file
" Language: Lisp
" Maintainer: Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
" Last Change: Mar 05, 2009
" Version: 21
" Last Change: Nov 16, 2010
" Version: 22
" URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
"
" Thanks to F Xavier Noria for a list of 978 Common Lisp symbols
@@ -32,7 +32,7 @@ endif
" ---------------------------------------------------------------------
" Clusters: {{{1
syn cluster lispAtomCluster contains=lispAtomBarSymbol,lispAtomList,lispAtomNmbr0,lispComment,lispDecl,lispFunc,lispLeadWhite
syn cluster lispBaseListCluster contains=lispAtom,lispAtomBarSymbol,lispAtomMark,lispBQList,lispBarSymbol,lispComment,lispConcat,lispDecl,lispFunc,lispKey,lispList,lispNumber,lispSpecial,lispSymbol,lispVar,lispLeadWhite
syn cluster lispBaseListCluster contains=lispAtom,lispAtomBarSymbol,lispAtomMark,lispBQList,lispBarSymbol,lispComment,lispConcat,lispDecl,lispFunc,lispKey,lispList,lispNumber,lispEscapeSpecial,lispSymbol,lispVar,lispLeadWhite
if exists("g:lisp_instring")
syn cluster lispListCluster contains=@lispBaseListCluster,lispString,lispInString,lispInStringString
else
@@ -68,7 +68,7 @@ syn match lispAtom "'("me=e-1 contains=lispAtomMark nextgroup=lispAtomList
syn match lispAtom "'[^ \t()]\+" contains=lispAtomMark
syn match lispAtomBarSymbol !'|..\{-}|! contains=lispAtomMark
syn region lispAtom start=+'"+ skip=+\\"+ end=+"+
syn region lispAtomList contained matchgroup=Special start="(" skip="|.\{-}|" matchgroup=Special end=")" contains=@lispAtomCluster,lispString,lispSpecial
syn region lispAtomList contained matchgroup=Special start="(" skip="|.\{-}|" matchgroup=Special end=")" contains=@lispAtomCluster,lispString,lispEscapeSpecial
syn match lispAtomNmbr contained "\<\d\+"
syn match lispLeadWhite contained "^\s\+"
@@ -537,16 +537,16 @@ endif
syn match lispNumber "-\=\(\.\d\+\|\d\+\(\.\d*\)\=\)\([dDeEfFlL][-+]\=\d\+\)\="
syn match lispNumber "-\=\(\d\+/\d\+\)"
syn match lispSpecial "\*\w[a-z_0-9-]*\*"
syn match lispSpecial !#|[^()'`,"; \t]\+|#!
syn match lispSpecial !#x\x\+!
syn match lispSpecial !#o\o\+!
syn match lispSpecial !#b[01]\+!
syn match lispSpecial !#\\[ -}\~]!
syn match lispSpecial !#[':][^()'`,"; \t]\+!
syn match lispSpecial !#([^()'`,"; \t]\+)!
syn match lispSpecial !#\\\%(Space\|Newline\|Tab\|Page\|Rubout\|Linefeed\|Return\|Backspace\)!
syn match lispSpecial "\<+[a-zA-Z_][a-zA-Z_0-9-]*+\>"
syn match lispEscapeSpecial "\*\w[a-z_0-9-]*\*"
syn match lispEscapeSpecial !#|[^()'`,"; \t]\+|#!
syn match lispEscapeSpecial !#x\x\+!
syn match lispEscapeSpecial !#o\o\+!
syn match lispEscapeSpecial !#b[01]\+!
syn match lispEscapeSpecial !#\\[ -}\~]!
syn match lispEscapeSpecial !#[':][^()'`,"; \t]\+!
syn match lispEscapeSpecial !#([^()'`,"; \t]\+)!
syn match lispEscapeSpecial !#\\\%(Space\|Newline\|Tab\|Page\|Rubout\|Linefeed\|Return\|Backspace\)!
syn match lispEscapeSpecial "\<+[a-zA-Z_][a-zA-Z_0-9-]*+\>"
syn match lispConcat "\s\.\s"
syn match lispParenError ")"
@@ -585,7 +585,7 @@ if version >= 508
HiLink lispMark Delimiter
HiLink lispNumber Number
HiLink lispParenError Error
HiLink lispSpecial Type
HiLink lispEscapeSpecial Type
HiLink lispString String
HiLink lispTodo Todo
HiLink lispVar Statement
+141 -61
View File
@@ -1,7 +1,7 @@
" Vim syntax file
" Language: login.defs(5) configuration file
" Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2006-04-19
" Latest Revision: 2010-11-29
if exists("b:current_syntax")
finish
@@ -10,83 +10,163 @@ endif
let s:cpo_save = &cpo
set cpo&vim
syn keyword logindefsTodo contained TODO FIXME XXX NOTE
syn match logindefsBegin display '^'
\ nextgroup=
\ logindefsComment,
\ @logindefsKeyword
\ skipwhite
syn region logindefsComment display oneline start='^\s*#' end='$'
\ contains=logindefsTodo,@Spell
syn region logindefsComment display oneline start='^\s*#' end='$'
\ contains=logindefsTodo,@Spell
syn match logindefsString contained '[[:graph:]]\+'
syn keyword logindefsTodo contained TODO FIXME XXX NOTE
syn match logindefsPath contained '[[:graph:]]\+'
syn cluster logindefsKeyword contains=
\ logindefsBooleanKeyword,
\ logindefsEncryptKeyword,
\ logindefsNumberKeyword,
\ logindefsPathKeyword,
\ logindefsPathsKeyword,
\ logindefsStringKeyword
syn match logindefsPaths contained '[[:graph:]]\+'
\ nextgroup=logindefsPathDelim
syn keyword logindefsBooleanKeyword contained
\ CHFN_AUTH
\ CHSH_AUTH
\ CREATE_HOME
\ DEFAULT_HOME
\ FAILLOG_ENAB
\ LASTLOG_ENAB
\ LOG_OK_LOGINS
\ LOG_UNKFAIL_ENAB
\ MAIL_CHECK_ENAB
\ MD5_CRYPT_ENAB
\ OBSCURE_CHECKS_ENAB
\ PASS_ALWAYS_WARN
\ PORTTIME_CHECKS_ENAB
\ QUOTAS_ENAB
\ SU_WHEEL_ONLY
\ SYSLOG_SG_ENAB
\ SYSLOG_SU_ENAB
\ USERGROUPS_ENAB
\ nextgroup=logindefsBoolean skipwhite
syn match logindefsPathDelim contained ':' nextgroup=logindefsPaths
syn keyword logindefsBoolean contained yes no
syn keyword logindefsBoolean contained yes no
syn keyword logindefsEncryptKeyword contained
\ ENCRYPT_METHOD
\ nextgroup=logindefsEncryptMethod skipwhite
syn match logindefsDecimal contained '\<\d\+\>'
syn keyword logindefsEncryptMethod contained
\ DES
\ MD5
\ SHA256
\ SHA512
syn match logindefsOctal contained display '\<0\o\+\>'
\ contains=logindefsOctalZero
syn match logindefsOctalZero contained display '\<0'
syn match logindefsOctalError contained display '\<0\o*[89]\d*\>'
syn keyword logindefsNumberKeyword contained
\ ERASECHAR
\ FAIL_DELAY
\ GID_MAX
\ GID_MIN
\ KILLCHAR
\ LOGIN_RETRIES
\ LOGIN_TIMEOUT
\ MAX_MEMBERS_PER_GROUP
\ PASS_CHANGE_TRIES
\ PASS_MAX_DAYS
\ PASS_MIN_DAYS
\ PASS_WARN_AGE
\ PASS_MAX_LEN
\ PASS_MIN_LEN
\ SHA_CRYPT_MAX_ROUNDS
\ SHA_CRYPT_MIN_ROUNDS
\ SYS_GID_MAX
\ SYS_GID_MIN
\ SYS_UID_MAX
\ SYS_UID_MIN
\ UID_MAX
\ UID_MIN
\ ULIMIT
\ UMASK
\ nextgroup=@logindefsNumber skipwhite
syn match logindefsHex contained display '\<0x\x\+\>'
syn cluster logindefsNumber contains=
\ logindefsDecimal,
\ logindefsHex,
\ logindefsOctal,
\ logindefsOctalError
syn cluster logindefsNumber contains=logindefsDecimal,logindefsOctal,
\ logindefsOctalError,logindefsHex
syn match logindefsDecimal contained '\<\d\+\>'
syn match logindefsBegin display '^'
\ nextgroup=logindefsKeyword,logindefsComment
\ skipwhite
syn match logindefsHex contained display '\<0x\x\+\>'
syn keyword logindefsKeyword contained CHFN_AUTH CLOSE_SESSIONS CREATE_HOME
\ DEFAULT_HOME FAILLOG_ENAB LASTLOG_ENAB
\ LOG_OK_LOGINS LOG_UNKFAIL_ENAB MAIL_CHECK_ENAB
\ MD5_CRYPT_ENAB OBSCURE_CHECKS_ENAB
\ PASS_ALWAYS_WARN PORTTIME_CHECKS_ENAB
\ QUOTAS_ENAB SU_WHEEL_ONLY SYSLOG_SG_ENAB
\ SYSLOG_SU_ENAB USERGROUPS_ENAB
\ nextgroup=logindefsBoolean skipwhite
syn match logindefsOctal contained display '\<0\o\+\>'
\ contains=logindefsOctalZero
syn match logindefsOctalZero contained display '\<0'
syn keyword logindefsKeyword contained CHFN_RESTRICT CONSOLE CONSOLE_GROUPS
\ ENV_TZ ENV_HZ FAKE_SHELL SU_NAME LOGIN_STRING
\ NOLOGIN_STR TTYGROUP USERDEL_CMD
\ nextgroup=logindefsString skipwhite
syn match logindefsOctalError contained display '\<0\o*[89]\d*\>'
syn keyword logindefsKeyword contained ENVIRON_FILE FTMP_FILE HUSHLOGIN_FILE
\ ISSUE_FILE MAIL_DIR MAIL_FILE NOLOGINS_FILE
\ NOLOGINS_FILE TTYTYPE_FILE QMAIL_DIR
\ SULOG_FILE
\ nextgroup=logindefsPath skipwhite
syn keyword logindefsPathKeyword contained
\ ENVIRON_FILE
\ FAKE_SHELL
\ FTMP_FILE
\ HUSHLOGIN_FILE
\ ISSUE_FILE
\ MAIL_DIR
\ MAIL_FILE
\ NOLOGINS_FILE
\ SULOG_FILE
\ TTYTYPE_FILE
\ nextgroup=logindefsPath skipwhite
syn keyword logindefsKeyword contained CRACKLIB_DICTPATH ENV_PATH
\ ENV_ROOTPATH ENV_SUPATH MOTD_FILE
\ nextgroup=logindefsPaths skipwhite
syn match logindefsPath contained '[[:graph:]]\+'
syn keyword logindefsKeyword contained ERASECHAR FAIL_DELAY GETPASS_ASTERISKS
\ GID_MAX GID_MIN KILLCHAR LOGIN_RETRIES
\ LOGIN_TIMEOUT PASS_CHANGE_TRIES PASS_MAX_DAYS
\ PASS_MAX_LEN PASS_MIN_DAYS PASS_MIN_LEN
\ PASS_WARN_AGE TTYPERM UID_MAX UID_MIN ULIMIT
\ UMASK
\ nextgroup=@logindefsNumber skipwhite
syn keyword logindefsPathsKeyword contained
\ CONSOLE
\ ENV_PATH
\ ENV_SUPATH
\ MOTD_FILE
\ nextgroup=logindefsPaths skipwhite
hi def link logindefsTodo Todo
hi def link logindefsComment Comment
hi def link logindefsString String
hi def link logindefsPath String
hi def link logindefsPaths logindefsPath
hi def link logindefsPathDelim Delimiter
hi def link logindefsBoolean Boolean
hi def link logindefsDecimal Number
hi def link logindefsOctal Number
hi def link logindefsOctalZero PreProc
hi def link logindefsOctalError Error
hi def link logindefsHex Number
hi def link logindefsKeyword Keyword
syn match logindefsPaths contained '[^:]\+'
\ nextgroup=logindefsPathDelim
syn match logindefsPathDelim contained ':' nextgroup=logindefsPaths
syn keyword logindefsStringKeyword contained
\ CHFN_RESTRICT
\ CONSOLE_GROUPS
\ ENV_HZ
\ ENV_TZ
\ LOGIN_STRING
\ SU_NAME
\ TTYGROUP
\ TTYPERM
\ USERDEL_CMD
\ nextgroup=logindefsString skipwhite
syn match logindefsString contained '[[:graph:]]\+'
hi def link logindefsComment Comment
hi def link logindefsTodo Todo
hi def link logindefsKeyword Keyword
hi def link logindefsBooleanKeyword logindefsKeyword
hi def link logindefsEncryptKeyword logindefsKeyword
hi def link logindefsNumberKeyword logindefsKeyword
hi def link logindefsPathKeyword logindefsKeyword
hi def link logindefsPathsKeyword logindefsKeyword
hi def link logindefsStringKeyword logindefsKeyword
hi def link logindefsBoolean Boolean
hi def link logindefsEncryptMethod Type
hi def link logindefsNumber Number
hi def link logindefsDecimal logindefsNumber
hi def link logindefsHex logindefsNumber
hi def link logindefsOctal logindefsNumber
hi def link logindefsOctalZero PreProc
hi def link logindefsOctalError Error
hi def link logindefsPath String
hi def link logindefsPaths logindefsPath
hi def link logindefsPathDelim Delimiter
hi def link logindefsString String
let b:current_syntax = "logindefs"
+101 -75
View File
@@ -1,111 +1,137 @@
" Vim syntax file
" Language: R (GNU S)
" Maintainer: Vaidotas Zemlys <zemlys@gmail.com>
" Last Change: 2006 Apr 30
" Filenames: *.R *.Rout *.r *.Rhistory *.Rt *.Rout.save *.Rout.fail
" URL: http://uosis.mif.vu.lt/~zemlys/vim-syntax/r.vim
" Language: R (GNU S)
" Maintainer: Jakson Aquino <jalvesaq@gmail.com>
" Former Maintainers: Vaidotas Zemlys <zemlys@gmail.com>
" Tom Payne <tom@tompayne.org>
" Last Change: Wed Sep 29, 2010 09:31AM
" Filenames: *.R *.r *.Rhistory *.Rt
"
" NOTE: The highlighting of R functions is defined in the
" r-plugin/functions.vim, which is part of vim-r-plugin2:
" http://www.vim.org/scripts/script.php?script_id=2628
"
" Some lines of code were borrowed from Zhuojun Chen.
" First maintainer Tom Payne <tom@tompayne.org>
" Modified to make syntax less colourful and added the highlighting of
" R assignment arrow
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
if version < 600
syntax clear
elseif exists("b:current_syntax")
if exists("b:current_syntax")
finish
endif
if version >= 600
setlocal iskeyword=@,48-57,_,.
else
set iskeyword=@,48-57,_,.
endif
setlocal iskeyword=@,48-57,_,.
syn case match
" Comment
syn match rComment /\#.*/
syn match rComment contains=@Spell "\#.*"
" Constant
" string enclosed in double quotes
syn region rString start=/"/ skip=/\\\\\|\\"/ end=/"/
syn region rString contains=rSpecial,rStrError,@Spell start=/"/ skip=/\\\\\|\\"/ end=/"/
" string enclosed in single quotes
syn region rString start=/'/ skip=/\\\\\|\\'/ end=/'/
" number with no fractional part or exponent
syn match rNumber /\d\+/
" floating point number with integer and fractional parts and optional exponent
syn match rFloat /\d\+\.\d*\([Ee][-+]\=\d\+\)\=/
" floating point number with no integer part and optional exponent
syn match rFloat /\.\d\+\([Ee][-+]\=\d\+\)\=/
" floating point number with no fractional part and optional exponent
syn match rFloat /\d\+[Ee][-+]\=\d\+/
syn region rString contains=rSpecial,rStrError,@Spell start=/'/ skip=/\\\\\|\\'/ end=/'/
" Identifier
" identifier with leading letter and optional following keyword characters
syn match rIdentifier /\a\k*/
" identifier with leading period, one or more digits, and at least one non-digit keyword character
syn match rIdentifier /\.\d*\K\k*/
syn match rStrError display contained "\\."
" New line, carriage return, tab, backspace, bell, feed, vertical tab, backslash
syn match rSpecial display contained "\\\(n\|r\|t\|b\|a\|f\|v\|'\|\"\)\|\\\\"
" Hexadecimal and Octal digits
syn match rSpecial display contained "\\\(x\x\{1,2}\|[0-8]\{1,3}\)"
" Unicode characters
syn match rSpecial display contained "\\u\x\{1,4}"
syn match rSpecial display contained "\\U\x\{1,8}"
syn match rSpecial display contained "\\u{\x\{1,4}}"
syn match rSpecial display contained "\\U{\x\{1,8}}"
syn match rDollar "\$"
" Statement
syn keyword rStatement break next return
syn keyword rConditional if else
syn keyword rRepeat for in repeat while
" Constant (not really)
syn keyword rConstant T F LETTERS letters month.ab month.name pi
syn keyword rConstant R.version.string
" Constant
syn keyword rConstant LETTERS letters month.ab month.name pi
syn keyword rConstant NULL
syn keyword rBoolean FALSE TRUE
syn keyword rNumber NA
syn match rArrow /<\{1,2}-/
syn keyword rNumber NA NA_integer_ NA_real_ NA_complex_ NA_character_
syn keyword rNumber Inf NaN
" Type
syn keyword rType array category character complex double function integer list logical matrix numeric vector data.frame
" integer
syn match rInteger "\<\d\+L"
syn match rInteger "\<0x\([0-9]\|[a-f]\|[A-F]\)\+L"
syn match rInteger "\<\d\+[Ee]+\=\d\+L"
syn match rOperator "[\*\!\&\+\-\<\>\=\^\|\~\`/:@]"
syn match rOperator "%\{2}\|%\*%\|%\/%\|%in%\|%o%\|%x%"
syn match rComplex "\<\d\+i"
syn match rComplex "\<0x\([0-9]\|[a-f]\|[A-F]\)\+i"
syn match rComplex "\<\d\+\.\d*\([Ee][-+]\=\d\+\)\=i"
syn match rComplex "\<\.\d\+\([Ee][-+]\=\d\+\)\=i"
syn match rComplex "\<\d\+[Ee][-+]\=\d\+i"
" number with no fractional part or exponent
syn match rNumber "\<\d\+\>"
" hexadecimal number
syn match rNumber "\<0x\([0-9]\|[a-f]\|[A-F]\)\+"
" floating point number with integer and fractional parts and optional exponent
syn match rFloat "\<\d\+\.\d*\([Ee][-+]\=\d\+\)\="
" floating point number with no integer part and optional exponent
syn match rFloat "\<\.\d\+\([Ee][-+]\=\d\+\)\="
" floating point number with no fractional part and optional exponent
syn match rFloat "\<\d\+[Ee][-+]\=\d\+"
syn match rArrow "<\{1,2}-"
syn match rArrow "->\{1,2}"
" Special
syn match rDelimiter /[,;:]/
syn match rDelimiter "[,;:]"
" Error
syn region rRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ transparent contains=ALLBUT,rError,rBraceError,rCurlyError
syn region rRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ transparent contains=ALLBUT,rError,rBraceError,rParenError
syn region rRegion matchgroup=Delimiter start=/\[/ matchgroup=Delimiter end=/]/ transparent contains=ALLBUT,rError,rCurlyError,rParenError
syn match rError /[)\]}]/
syn match rBraceError /[)}]/ contained
syn match rCurlyError /[)\]]/ contained
syn match rParenError /[\]}]/ contained
syn match rError "[)\]}]"
syn match rBraceError "[)}]" contained
syn match rCurlyError "[)\]]" contained
syn match rParenError "[\]}]" contained
" Functions that may add new objects
syn keyword rPreProc library require attach detach source
" Type
syn keyword rType array category character complex double function integer list logical matrix numeric vector data.frame
" Define the default highlighting.
" For version 5.7 and earlier: only when not done already
" For version 5.8 and later: only when an item doesn't have highlighting yet
if version >= 508 || !exists("did_r_syn_inits")
if version < 508
let did_r_syn_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
endif
HiLink rComment Comment
HiLink rConstant Constant
HiLink rString String
HiLink rNumber Number
HiLink rBoolean Boolean
HiLink rFloat Float
HiLink rStatement Statement
HiLink rConditional Conditional
HiLink rRepeat Repeat
HiLink rIdentifier Normal
HiLink rArrow Statement
HiLink rType Type
HiLink rDelimiter Delimiter
HiLink rError Error
HiLink rBraceError Error
HiLink rCurlyError Error
HiLink rParenError Error
delcommand HiLink
endif
hi def link rArrow Statement
hi def link rBoolean Boolean
hi def link rBraceError Error
hi def link rComment Comment
hi def link rComplex Number
hi def link rConditional Conditional
hi def link rConstant Constant
hi def link rCurlyError Error
hi def link rDelimiter Delimiter
hi def link rDollar SpecialChar
hi def link rError Error
hi def link rFloat Float
hi def link rInteger Number
hi def link rNumber Number
hi def link rOperator Operator
hi def link rParenError Error
hi def link rPreProc PreProc
hi def link rRepeat Repeat
hi def link rSpecial SpecialChar
hi def link rStatement Statement
hi def link rString String
hi def link rStrError Error
hi def link rType Type
let b:current_syntax="r"
" vim: ts=8 sw=2
+26 -22
View File
@@ -1,10 +1,10 @@
" Vim syntax file
" Language: R Help File
" Maintainer: Johannes Ranke <jranke@uni-bremen.de>
" Last Change: 2010 Apr 22
" Version: 0.7.3
" SVN: $Id: rhelp.vim 88 2010-04-22 19:37:09Z ranke $
" Remarks: - Now includes R syntax highlighting in the appropriate
" Last Change: 2010 Nov 22
" Version: 0.7.4
" SVN: $Id: rhelp.vim 90 2010-11-22 10:58:11Z ranke $
" Remarks: - Includes R syntax highlighting in the appropriate
" sections if an r.vim file is in the same directory or in the
" default debian location.
" - There is no Latex markup in equations
@@ -28,19 +28,19 @@ syn case match
syn region rhelpIdentifier matchgroup=rhelpSection start="\\name{" end="}"
syn region rhelpIdentifier matchgroup=rhelpSection start="\\alias{" end="}"
syn region rhelpIdentifier matchgroup=rhelpSection start="\\pkg{" end="}"
syn region rhelpIdentifier matchgroup=rhelpSection start="\\item{" end="}" contained contains=rhelpDots
syn region rhelpIdentifier matchgroup=rhelpSection start="\\method{" end=/}/ contained
syn region rhelpIdentifier matchgroup=rhelpSection start="\\method{" end="}" contained
syn region rhelpIdentifier matchgroup=rhelpSection start="\\Rdversion{" end="}"
" Highlighting of R code using an existing r.vim syntax file if available {{{1
syn include @R syntax/r.vim
syn match rhelpDots "\\dots" containedin=@R
syn region rhelpRcode matchgroup=Delimiter start="\\examples{" matchgroup=Delimiter transparent end=/}/ contains=@R,rhelpSection
syn region rhelpRcode matchgroup=Delimiter start="\\usage{" matchgroup=Delimiter transparent end=/}/ contains=@R,rhelpIdentifier,rhelpS4method
syn region rhelpRcode matchgroup=Delimiter start="\\synopsis{" matchgroup=Delimiter transparent end=/}/ contains=@R
syn region rhelpRcode matchgroup=Delimiter start="\\special{" matchgroup=Delimiter transparent end=/}/ contains=@R contained
syn region rhelpRcode matchgroup=Delimiter start="\\code{" matchgroup=Delimiter transparent end=/}/ contains=@R,rhelpLink contained
syn region rhelpS4method matchgroup=Delimiter start="\\S4method{.*}(" matchgroup=Delimiter transparent end=/)/ contains=@R,rhelpDots contained
syn region rhelpSexpr matchgroup=Delimiter start="\\Sexpr{" matchgroup=Delimiter transparent end=/}/ contains=@R
syn region rhelpRcode matchgroup=Delimiter start="\\examples{" matchgroup=Delimiter transparent end="}" contains=@R,rhelpSection
syn region rhelpRcode matchgroup=Delimiter start="\\usage{" matchgroup=Delimiter transparent end="}" contains=@R,rhelpIdentifier,rhelpS4method
syn region rhelpRcode matchgroup=Delimiter start="\\synopsis{" matchgroup=Delimiter transparent end="}" contains=@R
syn region rhelpRcode matchgroup=Delimiter start="\\special{" matchgroup=Delimiter transparent end="}" contains=@R contained
syn region rhelpRcode matchgroup=Delimiter start="\\code{" matchgroup=Delimiter transparent end="}" contains=@R,rhelpLink contained
syn region rhelpS4method matchgroup=Delimiter start="\\S4method{.*}(" matchgroup=Delimiter transparent end=")" contains=@R,rhelpDots contained
syn region rhelpSexpr matchgroup=Delimiter start="\\Sexpr{" matchgroup=Delimiter transparent end="}" contains=@R
" Strings {{{1
syn region rhelpString start=/"/ end=/"/
@@ -53,7 +53,7 @@ syn match rhelpDelimiter "\\cr"
syn match rhelpDelimiter "\\tab "
" Keywords {{{1
syn match rhelpKeyword "\\R"
syn match rhelpKeyword "\\R" contained
syn match rhelpKeyword "\\ldots"
syn match rhelpKeyword "--"
syn match rhelpKeyword "---"
@@ -129,10 +129,13 @@ syn match rhelpType "\\deqn\>"
syn match rhelpType "\\file\>"
syn match rhelpType "\\email\>"
syn match rhelpType "\\url\>"
syn match rhelpType "\\href\>"
syn match rhelpType "\\var\>"
syn match rhelpType "\\env\>"
syn match rhelpType "\\option\>"
syn match rhelpType "\\command\>"
syn match rhelpType "\\newcommand\>"
syn match rhelpType "\\renewcommand\>"
syn match rhelpType "\\dfn\>"
syn match rhelpType "\\cite\>"
syn match rhelpType "\\acronym\>"
@@ -140,6 +143,7 @@ syn match rhelpType "\\acronym\>"
" rhelp sections {{{1
syn match rhelpSection "\\encoding\>"
syn match rhelpSection "\\title\>"
syn match rhelpSection "\\item\>"
syn match rhelpSection "\\description\>"
syn match rhelpSection "\\concept\>"
syn match rhelpSection "\\arguments\>"
@@ -153,11 +157,11 @@ syn match rhelpSection "\\keyword\>"
syn match rhelpSection "\\docType\>"
syn match rhelpSection "\\format\>"
syn match rhelpSection "\\source\>"
syn match rhelpSection "\\itemize\>"
syn match rhelpSection "\\describe\>"
syn match rhelpSection "\\enumerate\>"
syn match rhelpSection "\\item "
syn match rhelpSection "\\item$"
syn match rhelpSection "\\itemize\>"
syn match rhelpSection "\\describe\>"
syn match rhelpSection "\\enumerate\>"
syn match rhelpSection "\\item "
syn match rhelpSection "\\item$"
syn match rhelpSection "\\tabular{[lcr]*}"
syn match rhelpSection "\\dontrun\>"
syn match rhelpSection "\\dontshow\>"
@@ -165,11 +169,11 @@ syn match rhelpSection "\\testonly\>"
syn match rhelpSection "\\donttest\>"
" Freely named Sections {{{1
syn region rhelpFreesec matchgroup=Delimiter start="\\section{" matchgroup=Delimiter transparent end=/}/
syn region rhelpFreesubsec matchgroup=Delimiter start="\\subsection{" matchgroup=Delimiter transparent end=/}/
syn region rhelpFreesec matchgroup=Delimiter start="\\section{" matchgroup=Delimiter transparent end="}"
syn region rhelpFreesubsec matchgroup=Delimiter start="\\subsection{" matchgroup=Delimiter transparent end="}"
" R help file comments {{{1
syn match rhelpComment /%.*$/ contained
syn match rhelpComment /%.*$/
" Error {{{1
syn region rhelpRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ transparent contains=ALLBUT,rhelpError,rhelpBraceError,rhelpCurlyError
+27 -22
View File
@@ -1,8 +1,8 @@
" Vim syntax file
" Language: TeX
" Maintainer: Dr. Charles E. Campbell, Jr. <NdrchipO@ScampbellPfamily.AbizM>
" Last Change: Aug 12, 2010
" Version: 57
" Last Change: Sep 17, 2010
" Version: 60
" URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
"
" Notes: {{{1
@@ -67,11 +67,11 @@ endif
" g:tex_stylish to 1 (for "*.sty" mode)
" or to 0 else (normal "*.tex" mode)
" or on a buffer-by-buffer basis with b:tex_stylish
let b:extfname=expand("%:e")
let s:extfname=expand("%:e")
if exists("g:tex_stylish")
let b:tex_stylish= g:tex_stylish
elseif !exists("b:tex_stylish")
if b:extfname == "sty" || b:extfname == "cls" || b:extfname == "clo" || b:extfname == "dtx" || b:extfname == "ltx"
if s:extfname == "sty" || s:extfname == "cls" || s:extfname == "clo" || s:extfname == "dtx" || s:extfname == "ltx"
let b:tex_stylish= 1
else
let b:tex_stylish= 0
@@ -92,12 +92,12 @@ endif
" (La)TeX keywords: only use the letters a-zA-Z {{{1
" but _ is the only one that causes problems.
if version < 600
set isk-=_
set isk=a-z,A-Z
if b:tex_stylish
set isk+=@
endif
else
setlocal isk-=_
setlocal isk=a-z,A-Z
if b:tex_stylish
setlocal isk+=@
endif
@@ -300,7 +300,7 @@ endif
" Bad Math (mismatched): {{{1
if !exists("tex_no_math")
syn match texBadMath "\\end\s*{\s*\(array\|gathered\|bBpvV]matrix\|split\|subequations\|smallmatrix\|xxalignat\)\s*}"
syn match texBadMath "\\end\s*{\s*\(array\|gathered\|bBpvV]matrix\|split\|smallmatrix\|xxalignat\)\s*}"
syn match texBadMath "\\end\s*{\s*\(align\|alignat\|displaymath\|displaymath\|eqnarray\|equation\|flalign\|gather\|math\|multline\|xalignat\)\*\=\s*}"
syn match texBadMath "\\[\])]"
endif
@@ -345,7 +345,6 @@ if !exists("tex_no_math")
call TexNewMathZone("G","gather",1)
call TexNewMathZone("H","math",1)
call TexNewMathZone("I","multline",1)
call TexNewMathZone("J","subequations",0)
call TexNewMathZone("K","xalignat",1)
call TexNewMathZone("L","xxalignat",0)
@@ -412,7 +411,7 @@ endif
syn case ignore
syn keyword texTodo contained combak fixme todo xxx
syn case match
if b:extfname == "dtx"
if s:extfname == "dtx"
syn match texComment "\^\^A.*$" contains=@texCommentGroup
syn match texComment "^%\+" contains=@texCommentGroup
else
@@ -468,15 +467,16 @@ else
endif
" Tex Reference Zones: {{{1
syn region texZone matchgroup=texStatement start="@samp{" end="}\|%stopzone\>" contains=@texRefGroup
syn region texRefZone matchgroup=texStatement start="\\nocite{" end="}\|%stopzone\>" contains=@texRefGroup
syn region texRefZone matchgroup=texStatement start="\\bibliography{" end="}\|%stopzone\>" contains=@texRefGroup
syn region texRefZone matchgroup=texStatement start="\\label{" end="}\|%stopzone\>" contains=@texRefGroup
syn region texRefZone matchgroup=texStatement start="\\\(page\|eq\)ref{" end="}\|%stopzone\>" contains=@texRefGroup
syn region texRefZone matchgroup=texStatement start="\\v\=ref{" end="}\|%stopzone\>" contains=@texRefGroup
syn match texRefZone '\\cite\%([tp]\*\=\)\=' nextgroup=texRefOption,texCite
syn region texRefOption contained matchgroup=Delimiter start='\[' end=']' contains=@texRefGroup,texRefZone nextgroup=texRefOption,texCite
syn region texCite contained matchgroup=Delimiter start='{' end='}' contains=@texRefGroup,texRefZone,texCite
syn match texRefZone '\\@samp\>' skipwhite nextgroup=texRefLabel
syn match texRefZone '\\nocite\>' skipwhite nextgroup=texRefLabel
syn match texRefZone '\\bibliography\>' skipwhite nextgroup=texRefLabel
syn match texRefZone '\\label\>' skipwhite nextgroup=texRefLabel
syn match texRefZone '\\\(page\|eq\)ref\>' skipwhite nextgroup=texRefLabel
syn match texRefZone '\\v\=ref' skipwhite nextgroup=texRefLabel
syn match texRefZone '\\cite\%([tp]\*\=\)\=' skipwhite nextgroup=texCiteOption,texCite
syn region texRefLabel contained matchgroup=Delimiter start='{' end='}' contains=@texRefGroup
syn region texCiteOption contained matchgroup=Delimiter start='\[' end=']' contains=@Spell,@texRefGroup,@texMathZones,texRefZone nextgroup=texCiteOption,texCite
syn region texCite contained matchgroup=Delimiter start='{' end='}' contains=@texRefGroup,texCite
" Handle newcommand, newenvironment : {{{1
syn match texNewCmd "\\newcommand\>" nextgroup=texCmdName skipwhite skipnl
@@ -753,7 +753,11 @@ if has("conceal") && &enc == 'utf-8'
\ ['wedge' , '∧'],
\ ['wr' , '≀']]
for texmath in s:texMathList
exe "syn match texMathSymbol '\\\\".texmath[0]."\\>' contained conceal cchar=".texmath[1]
if texmath[0] =~ '\w$'
exe "syn match texMathSymbol '\\\\".texmath[0]."\\>' contained conceal cchar=".texmath[1]
else
exe "syn match texMathSymbol '\\\\".texmath[0]."' contained conceal cchar=".texmath[1]
endif
endfor
if &ambw == "double"
@@ -1027,7 +1031,6 @@ if did_tex_syntax_inits == 1
HiLink texError Error
endif
HiLink texCite texRefZone
HiLink texDefCmd texDef
HiLink texDefName texDef
HiLink texDocType texCmdName
@@ -1052,6 +1055,7 @@ if did_tex_syntax_inits == 1
HiLink texMathZoneV texMath
HiLink texMathZoneZ texMath
endif
HiLink texRefZone Identifier
HiLink texSectionMarker texCmdName
HiLink texSectionName texSection
HiLink texSpaceCode texStatement
@@ -1060,6 +1064,7 @@ if did_tex_syntax_inits == 1
HiLink texTypeStyle texType
" Basic TeX highlighting groups
HiLink texCite Special
HiLink texCmdArgs Number
HiLink texCmdName Statement
HiLink texComment Comment
@@ -1075,7 +1080,7 @@ if did_tex_syntax_inits == 1
HiLink texNewCmd Statement
HiLink texNewEnv Statement
HiLink texOption Number
HiLink texRefZone Special
HiLink texRefLabel Special
HiLink texSection PreCondit
HiLink texSpaceCodeChar Special
HiLink texSpecialChar SpecialChar
@@ -1089,6 +1094,6 @@ if did_tex_syntax_inits == 1
endif
" Current Syntax: {{{1
unlet b:extfname
unlet s:extfname
let b:current_syntax = "tex"
" vim: ts=8 fdm=marker
+12 -10
View File
@@ -1,8 +1,8 @@
" Vim syntax file
" Language: Vim 7.3 script
" Maintainer: Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
" Last Change: August 04, 2010
" Version: 7.3-04
" Last Change: August 20, 2010
" Version: 7.3-05
" Automatically generated keyword lists: {{{1
" Quit when a syntax file was already loaded {{{2
@@ -16,12 +16,14 @@ syn keyword vimTodo contained COMBAK FIXME TODO XXX
syn cluster vimCommentGroup contains=vimTodo,@Spell
" regular vim commands {{{2
syn keyword vimCommand contained abc[lear] argdo argu[ment] bel[owright] bN[ext] breakd[el] b[uffer] caddb[uffer] cb[uffer] cex[pr] cg[etfile] checkt[ime] cnew[er] col[der] con[tinue] cq[uit] delc[ommand] diffoff diffu[pdate] dr[op] echom[sg] em[enu] endt[ry] exi[t] fina[lly] fix[del] foldd[oopen] go[to] hid[e] ij[ump] isp[lit] k laddb[uffer] la[st] lch[dir] lex[pr] lgete[xpr] l[ist] lmak[e] lN[ext] loc[kmarks] lpf[ile] lt[ag] lv[imgrep] ma[rk] mk[exrc] mkv[imrc] mz[scheme] new noh[lsearch] on[ly] ped[it] popu prev[ious] prof[ile] pta[g] ptn[ext] pts[elect] py[thon] r[ead] redr[aw] ret[ab] rightb[elow] rundo san[dbox] sbf[irst] sbN[ext] scripte[ncoding] setg[lobal] sh[ell] sla[st] sme sni[ff] sor[t] spelli[nfo] sp[lit] startg[replace] st[op] sunme syncbind tabd[o] tabl[ast] tabN[ext] tabs tcld[o] th[row] tm[enu] tp[revious] tu undoj[oin] uns[ilent] vert[ical] vi[sual] wa[ll] winp[os] wp[revious] ws[verb] xa[ll] xmenu xnoremenu
syn keyword vimCommand contained abo[veleft] arge[dit] as[cii] bf[irst] bo[tright] breakl[ist] buffers cad[dexpr] cc cf[ile] c[hange] cla[st] cn[ext] colo[rscheme] cope[n] cr[ewind] d[elete] diffpatch dig[raphs] ds[earch] echon emenu* endw[hile] f[ile] fin[d] fo[ld] foldo[pen] gr[ep] his[tory] il[ist] iuna[bbrev] keepalt lad[dexpr] later lcl[ose] lf[ile] lg[etfile] ll lmapc[lear] lnf[ile] lockv[ar] lp[revious] lua lvimgrepa[dd] marks mks[ession] mod[e] nbc[lose] n[ext] nu[mber] o[pen] pe[rl] popu[p] p[rint] promptf[ind] ptf[irst] ptN[ext] pu[t] qa[ll] rec[over] redraws[tatus] retu[rn] rub[y] ru[ntime] sa[rgument] sbl[ast] sbp[revious] scrip[tnames] setl[ocal] sign sl[eep] smenu sno[magic] so[urce] spellr[epall] spr[evious] star[tinsert] stopi[nsert] sunmenu t tabe[dit] tabm[ove] tabo[nly] ta[g] tclf[ile] tj[ump] tn[ext] tr[ewind] tu[nmenu] undol[ist] up[date] vie[w] vmapc[lear] wh[ile] win[size] wq wundo x[it] XMLent xunme
syn keyword vimCommand contained al[l] argg[lobal] bad[d] bl[ast] bp[revious] br[ewind] bun[load] caddf[ile] ccl[ose] cfir[st] changes cl[ist] cN[ext] comc[lear] co[py] cuna[bbrev] delf[unction] diffpu[t] di[splay] dsp[lit] e[dit] endfo[r] ene[w] files fini[sh] foldc[lose] for grepa[dd] iabc[lear] imapc[lear] j[oin] keepj[umps] laddf[ile] lb[uffer] le[ft] lfir[st] lgr[ep] lla[st] lnew[er] lNf[ile] lol[der] lr[ewind] luado lw[indow] mat[ch] mksp[ell] m[ove] nb[key] N[ext] ol[dfiles] opt[ions] perld[o] pp[op] P[rint] promptr[epl] ptj[ump] ptp[revious] pw[d] q[uit] redi[r] reg[isters] rew[ind] rubyd[o] rv[iminfo] sav[eas] sbm[odified] sbr[ewind] se[t] sf[ind] sil[ent] sm[agic] sn[ext] snoreme spelld[ump] spellu[ndo] sre[wind] startr[eplace] sts[elect] sus[pend] tab tabf[ind] tabnew tabp[revious] tags te[aroff] tl[ast] tN[ext] try una[bbreviate] unh[ide] verb[ose] vim[grep] vne[w] winc[md] wn[ext] wqa[ll] wv[iminfo] xmapc[lear] XMLns xunmenu
syn keyword vimCommand contained arga[dd] argl[ocal] ba[ll] bm[odified] brea[k] bro[wse] bw[ipeout] cal[l] cd cgetb[uffer] chd[ir] clo[se] cnf[ile] comp[iler] cpf[ile] cw[indow] delm[arks] diffsplit dj[ump] earlier el[se] endf[unction] ex filetype fir[st] folddoc[losed] fu[nction] ha[rdcopy] if is[earch] ju[mps] kee[pmarks] lan[guage] lc[d] lefta[bove] lgetb[uffer] lgrepa[dd] lli[st] lne[xt] lo[adview] lop[en] ls luafile mak[e] menut[ranslate] mkvie[w] mzf[ile] nbs[tart] nmapc[lear] omapc[lear] pc[lose] po[p] pre[serve] profd[el] ps[earch] ptl[ast] ptr[ewind] pyf[ile] quita[ll] red[o] res[ize] ri[ght] rubyf[ile] sal[l] sba[ll] sbn[ext] sb[uffer] setf[iletype] sfir[st] sim[alt] sm[ap] sN[ext] snoremenu spe[llgood] spellw[rong] sta[g] stj[ump] sun[hide] sv[iew] tabc[lose] tabfir[st] tabn[ext] tabr[ewind] tc[l] tf[irst] tm to[pleft] ts[elect] u[ndo] unlo[ckvar] ve[rsion] vimgrepa[dd] vs[plit] windo wN[ext] w[rite] X xme xnoreme y[ank]
syn keyword vimCommand contained argd[elete] ar[gs] bd[elete] bn[ext] breaka[dd] bufdo cabc[lear] cat[ch] ce[nter] cgete[xpr] che[ckpath] cmapc[lear] cNf[ile] conf[irm] cp[revious] debugg[reedy] diffg[et] diffthis dl[ist] echoe[rr] elsei[f] en[dif]
syn match vimCommand contained "\<z[-+^.=]"
syn keyword vimCommand contained a arga[dd] argu[ment] bd[elete] bN[ext] breakd[el] buf c cal[l] ce[nter] cg[etfile] cl cn cNf comc[lear] cope[n] cr[ewind] d d[elete] diffo diffsplit di[splay] ds[earch] ec e:e:e en endt[ry] exu[sage] filetype fix[del] for go[to] h hi if intro k la lan[guage] lch[dir] let@ lg[etfile] lla[st] lnew[er] lNf[ile] loc[kmarks] lr[ewind] lv[imgrep] ma[rk] messages mkv mv n new noautocmd on[ly] p:~ perld[o] popu[p] p[rint] promptr[epl] ptl[ast] ptr[ewind] py3file q[uit] r[ead] redraws[tatus] ret[ab] r:r:r ru[ntime] sba[ll] sbp[revious] scs sf[ind] sil[ent] sm[ap] sno[magic] so[urce] spellr[epall] st startr[eplace] sunme sw[apname] t tabf[ind] tabn[ext] ta[g] tf[irst] tn tp[revious] tu undoj[oin] up[date] vi vmapc[lear] win wN[ext] wundo xmapc[lear] xnoremenu
syn keyword vimCommand contained ab argd[elete] as[cii] bel[owright] bo[tright] breakl[ist] bufdo cabc[lear] cat[ch] cex[pr] c[hange] cla[st] cN cnf[ile] comment co[py] cs de delf diffoff difft dj[ump] dsp[lit] echoe[rr] e:e:r endf endw[hile] f fin fo[ld] fu gr[ep] ha[rdcopy] hid[e] ij[ump] is[earch] keepa lad la[st] lcl[ose] lex[pr] lgr[ep] lli[st] lne[xt] lo lockv[ar] ls lvimgrepa[dd] marks mk mkvie[w] Mycmd N n[ext] noh[lsearch] o[pen] P p:gs? pp[op] P[rint] ps[earch] ptn pts[elect] pyf[ile] quita[ll] rec[over] reg[isters] retu[rn] ru rv[iminfo] sbf[irst] sbr[ewind] scscope sfir[st] sim[alt] sme snoreme s?pat?sub? spellu[ndo] sta[g] stj[ump] sunmenu sy ta tabfir[st] tabN[ext] tags th[row] tN tr tu[nmenu] undol[ist] v vie[w] vne[w] winc[md] wp[revious] wv[iminfo] xme xterm
syn keyword vimCommand contained abc[lear] argdo au bf[irst] bp[revious] br[ewind] b[uffer] cad cb[uffer] cf[ile] changes cl[ist] cnew[er] cNf[ile] comp[iler] count cscope debug delf[unction] DiffOrig diffthis dl[ist] dwim echom[sg] el[se] endfo[r] ene[w] f[ile] fina[lly] foldc[lose] fun grepa[dd] h[elp] his[tory] il[ist] isp[lit] keepalt laddb[uffer] lat lcs lf[ile] lgrepa[dd] lmak[e] lN[ext] loadk lol[der] lt[ag] lw[indow] mat[ch] mkdir mkv[imrc] MyCommand nbc[lose] N[ext] nu[mber] opt[ions] pc[lose] p:h pr pro p:t ptN pu[t] py[thon] quote red Ren rew[ind] rub[y] sal[l] sbl[ast] sb[uffer] se[t] sh[ell] sl smenu snoremenu spe spellw[rong] star st[op] sus[pend] syn tab tabl[ast] tabo[nly] tc[l] tj[ump] tn[ext] t:r u unh[ide] ve vim[grep] vs[plit] windo wq x xmenu xunme
syn keyword vimCommand contained abo[veleft] arge[dit] bad[d] bl[ast] br bro[wse] buffers caddb[uffer] cc cfir[st] chd[ir] clo[se] cn[ext] col[der] con cpf[ile] cstag debugg[reedy] delm[arks] diffp diffu[pdate] do e echon elsei[f] endfun Error filename fin[d] folddoc[losed] fu[nction] gs?pat?sub? helpf[ind] i imapc[lear] iuna[bbrev] keepj[umps] lad[dexpr] later lcscope lfir[st] lh[elpgrep] lmapc[lear] lnf loadkeymap lop[en] lua ma menut mk[exrc] mo mz nb[key] nkf o ownsyntax pe p:h:h p:r profd[el] pta[g] ptn[ext] pw[d] python3 r redi[r] Rena ri[ght] rubyd[o] san[dbox] sbm[odified] scrip setf[iletype] si sla[st] sn[ext] s@\n@\=\r" spelld[ump] sp[lit] start stopi[nsert] s?version?main? sync tabc[lose] tabm[ove] tabp[revious] tcld[o] tl[ast] tN[ext] tr[ewind] un unl verb[ose] vimgrepa[dd] w winp[os] wqa[ll] X XMLent xunmenu
syn keyword vimCommand contained al[l] argg[lobal] ba[ll] bm[odified] brea[k] browseset bun[load] cad[dexpr] ccl[ose] cgetb[uffer] che[ckpath] cmapc[lear] cN[ext] colo[rscheme] conf[irm] cp[revious] cuna[bbrev] del di diffpatch dig doau ea e[dit] em[enu] endf[unction] ex files fini[sh] foldd[oopen] g gui helpg[rep] ia in j[oin] kee[pmarks] laddf[ile] lb[uffer] le[ft] lgetb[uffer] l[ist] lN lNf lo[adview] lpf[ile] luado mak[e] menut[ranslate] mks[ession] mod[e] mzf[ile] nbs[tart] nmapc[lear] ol[dfiles] p ped[it] po[p] pre[serve] prof[ile] ptf[irst] ptN[ext] py q re red[o] Renu rightb[elow] rubyf[ile] sa[rgument] sbn[ext] scripte[ncoding] setg[lobal] sig sl[eep] sN[ext] so spe[llgood] spr[evious] startg[replace] sts[elect] s?version?main?:p syncbind tabd[o] tabN tabr[ewind] tclf[ile] tm TOhtml try una[bbreviate] unlo[ckvar] ve[rsion] vi[sual] wa[ll] win[size] w[rite] xa[ll] XMLns xwininfo
syn keyword vimCommand contained Allargs argl[ocal] bar bn[ext] breaka[dd] bu bw[ipeout] caddf[ile] cd cgete[xpr] checkt[ime] cmdname cnf com con[tinue] cq[uit] cw[indow] delc[ommand] diffg[et] diffpu[t] dig[raphs] dr[op] earlier e:e emenu* en[dif] exi[t] filet fir[st] foldo[pen] get gvim helpt[ags] iabc[lear] index ju[mps] l lan lc[d] lefta[bove] lgete[xpr] ll lne lnf[ile] locale lp[revious] luafile Man mes mksp[ell] m[ove] mz[scheme] ne noa omapc[lear] p: pe[rl] popu prev[ious] promptf[ind] ptj[ump] ptp[revious] py3 qa[ll] r:e redr[aw] res[ize] r:r rundo sav[eas] sbN[ext] scrip[tnames] setl[ocal] sign sm[agic] sni[ff] sor[t] spelli[nfo] sre[wind] star[tinsert] sun[hide] sv[iew] synlist tabe[dit] tabnew tabs te[aroff] tm[enu] to[pleft] ts[elect] u[ndo] uns[ilent] vert[ical] viu[sage] wh[ile] wn[ext] ws[verb] x[it] xnoreme y[ank]
syn keyword vimCommand contained ar ar[gs]
syn match vimCommand contained "\<z[-+^.=]\="
syn keyword vimCommand contained maca[ction] macm[enu]
" vimOptions are caught only when contained in a vimSet {{{2
@@ -322,7 +324,7 @@ syn case match
" ====
syn match vimMap "\<map\>!\=\ze\s*[^(]" skipwhite nextgroup=vimMapMod,vimMapLhs
syn keyword vimMap cm[ap] cno[remap] im[ap] ino[remap] lm[ap] ln[oremap] nm[ap] nn[oremap] no[remap] om[ap] ono[remap] smap snor[emap] vm[ap] vn[oremap] xm[ap] xn[oremap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
syn keyword vimMap mapc[lear]
syn keyword vimMap mapc[lear] smapc[lear]
syn keyword vimUnmap cu[nmap] iu[nmap] lu[nmap] nun[map] ou[nmap] sunm[ap] unm[ap] unm[ap] vu[nmap] xu[nmap] skipwhite nextgroup=vimMapBang,vimMapMod,vimMapLhs
syn match vimMapLhs contained "\S\+" contains=vimNotation,vimCtrlChar skipwhite nextgroup=vimMapRhs
syn match vimMapBang contained "!" skipwhite nextgroup=vimMapMod,vimMapLhs
@@ -556,7 +558,7 @@ let s:luapath= expand("<sfile>:p:h")."/lua.vim"
if !filereadable(s:luapath)
let s:luapath= globpath(&rtp,"syntax/lua.vim")
endif
if (g:vimsyn_embed =~ 'p' && has("lua")) && filereadable(s:luapath)
if (g:vimsyn_embed =~ 'l' && has("lua")) && filereadable(s:luapath)
unlet! b:current_syntax
exe "syn include @vimLuaScript ".s:luapath
if exists("g:vimsyn_folding") && g:vimsyn_folding =~ 'l'
+4 -4
View File
@@ -1,8 +1,8 @@
" Vim syntax file
" This is a GENERATED FILE. Please always refer to source file at the URI below.
" Language: XF86Config (XFree86 configuration file)
" Maintainer: David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
" Last Change: 2005 Jul 12
" Former Maintainer: David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
" Last Change: 2010 Nov 01
" URL: http://trific.ath.cx/Ftp/vim/syntax/xf86conf.vim
" Required Vim Version: 6.0
"
@@ -63,7 +63,7 @@ syn match xf86confModeLineValue "\"[^\"]\+\"\(\_s\+[0-9.]\+\)\{9}" nextgroup=xf8
" Sections and subsections
if b:xf86conf_xfree86_version >= 4
syn region xf86confSection matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"\(Files\|Server[_ ]*Flags\|Input[_ ]*Device\|Device\|Video[_ ]*Adaptor\|Server[_ ]*Layout\|DRI\|Extensions\|Vendor\|Keyboard\|Pointer\)\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confOption,xf86confKeyword,xf86confSectionError
syn region xf86confSection matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"\(Files\|Server[_ ]*Flags\|Input[_ ]*Device\|Device\|Video[_ ]*Adaptor\|Server[_ ]*Layout\|DRI\|Extensions\|Vendor\|Keyboard\|Pointer\|InputClass\)\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confOption,xf86confKeyword,xf86confSectionError
syn region xf86confSectionModule matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"Module\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confSubsectionAny,xf86confComment,xf86confOption,xf86confKeyword
syn region xf86confSectionMonitor matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"Monitor\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confSubsectionMode,xf86confModeLine,xf86confComment,xf86confOption,xf86confKeyword
syn region xf86confSectionModes matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"Modes\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confSubsectionMode,xf86confModeLine,xf86confComment
@@ -165,7 +165,7 @@ syn match xf86confSync "\(\s\+[+-][CHV]_*Sync\)\+" contained
" Synchronization
if b:xf86conf_xfree86_version >= 4
syn sync match xf86confSyncSection grouphere xf86confSection "^\s*Section\s\+\"\(Files\|Server[_ ]*Flags\|Input[_ ]*Device\|Device\|Video[_ ]*Adaptor\|Server[_ ]*Layout\|DRI\|Extensions\|Vendor\|Keyboard\|Pointer\)\""
syn sync match xf86confSyncSection grouphere xf86confSection "^\s*Section\s\+\"\(Files\|Server[_ ]*Flags\|Input[_ ]*Device\|Device\|Video[_ ]*Adaptor\|Server[_ ]*Layout\|DRI\|Extensions\|Vendor\|Keyboard\|Pointer\|InputClass\)\""
syn sync match xf86confSyncSectionModule grouphere xf86confSectionModule "^\s*Section\s\+\"Module\""
syn sync match xf86confSyncSectionModes groupthere xf86confSectionModes "^\s*Section\s\+\"Modes\""
else
+17 -5
View File
@@ -1,12 +1,22 @@
" Vim syntax file
" Language: Yacc
" Maintainer: Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
" Last Change: Aug 2, 2010
" Version: 8
" Last Change: Aug 12, 2010
" Version: 9
" URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
"
" Options: {{{1
" g:yacc_uses_cpp : if this variable exists, then C++ is loaded rather than C
"
" Overall layout of a bison/yacc grammer:
" %{
" Prolog
" %}
" Bison/Yacc Declarations
" %%
" Grammar Rules
" %%
" Epilogue
" ---------------------------------------------------------------------
" this version of syntax/yacc.vim requires 6.0 or later
@@ -35,7 +45,7 @@ endif
" ---------------------------------------------------------------------
" Yacc Clusters: {{{1
syn cluster yaccInitCluster contains=yaccKey,yaccKeyActn,yaccBrkt,yaccType,yaccString,yaccUnionStart,yaccHeader2,yaccComment,yaccDefines,yaccParseParam
syn cluster yaccInitCluster contains=yaccKey,yaccKeyActn,yaccBrkt,yaccType,yaccString,yaccUnionStart,yaccHeader2,yaccComment,yaccDefines,yaccParseParam,yaccParseOption
syn cluster yaccRulesCluster contains=yaccNonterminal,yaccString
" ---------------------------------------------------------------------
@@ -50,7 +60,8 @@ HiFold syn region yaccEndCode matchgroup=yaccSectionSep start='^%%$' end='\%$'
" ---------------------------------------------------------------------
" Yacc Commands: {{{1
syn match yaccDefines '^%define\s\+.*$'
syn match yaccParseParam '%parse-param\>' skipwhite nextgroup=yaccParseParamStr
syn match yaccParseParam '%\(parse\|lex\)-param\>' skipwhite nextgroup=yaccParseParamStr
syn match yaccParseOption '%\%(api\.pure\|pure-parser\|locations\|error-verbose\)\>'
syn region yaccParseParamStr contained matchgroup=Delimiter start='{' end='}' contains=cStructure
syn match yaccDelim "[:|]" contained
@@ -96,7 +107,8 @@ if !exists("did_yacc_syn_inits")
HiLink yaccCurly Delimiter
HiLink yaccCurlyError Error
HiLink yaccDefines cDefine
HiLink yaccParseParam cDefine
HiLink yaccParseParam yaccParseOption
HiLink yaccParseOption cDefine
HiLink yaccNonterminal Function
HiLink yaccDelim Delimiter
HiLink yaccKeyActn Special
+2 -2
View File
@@ -2,7 +2,7 @@
" Language: YAML (YAML Ain't Markup Language) 1.2
" Maintainer: Nikolai Pavlov <zyx.vim@gmail.com>
" First author: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2010-09-16
" Latest Revision: 2010-10-08
if exists('b:current_syntax')
finish
@@ -124,7 +124,7 @@ syn match yamlConstant '\<\~\>'
syn match yamlTimestamp /\%([\[\]{}, \t]\@!\p\)\@<!\%(\d\{4}-\d\d\=-\d\d\=\%(\%([Tt]\|\s\+\)\%(\d\d\=\):\%(\d\d\):\%(\d\d\)\%(\.\%(\d*\)\)\=\%(\s*\%(Z\|[+-]\d\d\=\%(:\d\d\)\=\)\)\=\)\=\)\%([\[\]{}, \t]\@!\p\)\@!/
syn match yamlInteger /\%([\[\]{}, \t]\@!\p\)\@<!\%([+-]\=\%(0\%(b[0-1_]\+\|[0-7_]\+\|x[0-9a-fA-F_]\+\)\=\|\%([1-9][0-9_]*\%(:[0-5]\=\d\)\+\)\)\)\%([\[\]{}, \t]\@!\p\)\@!/
syn match yamlInteger /\%([\[\]{}, \t]\@!\p\)\@<!\%([+-]\=\%(0\%(b[0-1_]\+\|[0-7_]\+\|x[0-9a-fA-F_]\+\)\=\|\%([1-9][0-9_]*\%(:[0-5]\=\d\)\+\)\)\|[1-9][0-9_]*\)\%([\[\]{}, \t]\@!\p\)\@!/
syn match yamlFloat /\%([\[\]{}, \t]\@!\p\)\@<!\%([+-]\=\%(\%(\d[0-9_]*\)\.[0-9_]*\%([eE][+-]\d\+\)\=\|\.[0-9_]\+\%([eE][-+][0-9]\+\)\=\|\d[0-9_]*\%(:[0-5]\=\d\)\+\.[0-9_]*\|\.\%(inf\|Inf\|INF\)\)\|\%(\.\%(nan\|NaN\|NAN\)\)\)\%([\[\]{}, \t]\@!\p\)\@!/
execute 'syn match yamlNodeTag '.string(s:c_ns_tag_property)
+1 -1
View File
@@ -1202,7 +1202,7 @@
</dict>
</array>
<key>CFBundleVersion</key>
<string>55</string>
<string>56</string>
<key>NSMainNibFile</key>
<string>MainMenu</string>
<key>NSPrincipalClass</key>
+77 -12
View File
@@ -41,9 +41,14 @@
#import "MMPreferenceController.h"
#import "MMVimController.h"
#import "MMWindowController.h"
#import "MMTextView.h"
#import "Miscellaneous.h"
#import <unistd.h>
#import <CoreServices/CoreServices.h>
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
// Need Carbon for TIS...() functions
#import <Carbon/Carbon.h>
#endif
#define MM_HANDLE_XCODE_MOD_EVENT 0
@@ -135,7 +140,12 @@ typedef struct
- (NSDictionary *)convertVimControllerArguments:(NSDictionary *)args
toCommandLine:(NSArray **)cmdline;
- (NSString *)workingDirectoryForArguments:(NSDictionary *)args;
- (NSScreen *)screenContainingPoint:(NSPoint)pt;
- (NSScreen *)screenContainingTopLeftPoint:(NSPoint)pt;
- (void)addInputSourceChangedObserver;
- (void)removeInputSourceChangedObserver;
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
- (void)inputSourceChanged:(NSNotification *)notification;
#endif
@end
@@ -374,6 +384,8 @@ fsEventCallback(ConstFSEventStreamRef streamRef,
[self startWatchingVimDir];
}
[self addInputSourceChangedObserver];
ASLogInfo(@"MacVim finished launching");
}
@@ -469,13 +481,11 @@ fsEventCallback(ConstFSEventStreamRef streamRef,
int reply = NSTerminateNow;
BOOL modifiedBuffers = NO;
// Go through windows, checking for modified buffers. (Each Vim process
// tells MacVim when any buffer has been modified and MacVim sets the
// 'documentEdited' flag of the window correspondingly.)
NSEnumerator *e = [[NSApp windows] objectEnumerator];
id window;
while ((window = [e nextObject])) {
if ([window isDocumentEdited]) {
// Go through Vim controllers, checking for modified buffers.
NSEnumerator *e = [vimControllers objectEnumerator];
id vc;
while ((vc = [e nextObject])) {
if ([vc hasModifiedBuffer]) {
modifiedBuffers = YES;
break;
}
@@ -507,7 +517,6 @@ fsEventCallback(ConstFSEventStreamRef streamRef,
// Count the number of open tabs
e = [vimControllers objectEnumerator];
id vc;
while ((vc = [e nextObject]))
numTabs += [[vc objectForVimStateKey:@"numTabs"] intValue];
@@ -597,6 +606,8 @@ fsEventCallback(ConstFSEventStreamRef streamRef,
{
ASLogInfo(@"Terminating MacVim...");
[self removeInputSourceChangedObserver];
[self stopWatchingVimDir];
#if MM_HANDLE_XCODE_MOD_EVENT
@@ -725,7 +736,9 @@ fsEventCallback(ConstFSEventStreamRef streamRef,
if (!NSEqualPoints(topLeft, NSZeroPoint)) {
// Try to tile from the correct screen in case the user has multiple
// monitors ([win screen] always seems to return the "main" screen).
NSScreen *screen = [self screenContainingPoint:topLeft];
//
// TODO: Check for screen _closest_ to top left?
NSScreen *screen = [self screenContainingTopLeftPoint:topLeft];
if (!screen)
screen = [win screen];
@@ -2357,18 +2370,70 @@ fsEventCallback(ConstFSEventStreamRef streamRef,
return nil;
}
- (NSScreen *)screenContainingPoint:(NSPoint)pt
- (NSScreen *)screenContainingTopLeftPoint:(NSPoint)pt
{
// NOTE: The top left point has y-coordinate which lies one pixel above the
// window which must be taken into consideration (this method used to be
// called screenContainingPoint: but that method is "off by one" in
// y-coordinate).
NSArray *screens = [NSScreen screens];
NSUInteger i, count = [screens count];
for (i = 0; i < count; ++i) {
NSScreen *screen = [screens objectAtIndex:i];
NSRect frame = [screen frame];
if (NSPointInRect(pt, frame))
if (pt.x >= frame.origin.x && pt.x < NSMaxX(frame)
// NOTE: inequalities below are correct due to this being a top
// left test (see comment above)
&& pt.y > frame.origin.y && pt.y <= NSMaxY(frame))
return screen;
}
return nil;
}
- (void)addInputSourceChangedObserver
{
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
// The TIS symbols are weakly linked.
if (NULL != TISCopyCurrentKeyboardInputSource) {
// We get here when compiled on >=10.5 and running on >=10.5.
id nc = [NSDistributedNotificationCenter defaultCenter];
NSString *notifyInputSourceChanged =
(NSString *)kTISNotifySelectedKeyboardInputSourceChanged;
[nc addObserver:self
selector:@selector(inputSourceChanged:)
name:notifyInputSourceChanged
object:nil];
}
#endif
}
- (void)removeInputSourceChangedObserver
{
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
// The TIS symbols are weakly linked.
if (NULL != TISCopyCurrentKeyboardInputSource) {
// We get here when compiled on >=10.5 and running on >=10.5.
id nc = [NSDistributedNotificationCenter defaultCenter];
[nc removeObserver:self];
}
#endif
}
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
- (void)inputSourceChanged:(NSNotification *)notification
{
unsigned i, count = [vimControllers count];
for (i = 0; i < count; ++i) {
MMVimController *controller = [vimControllers objectAtIndex:i];
MMWindowController *wc = [controller windowController];
MMTextView *tv = (MMTextView *)[[wc vimView] textView];
[tv checkImState];
}
}
#endif
@end // MMAppController (Private)
+1
View File
@@ -75,6 +75,7 @@ enum { MMMaxCellsPerChar = 2 };
- (void)setAntialias:(BOOL)state;
- (void)setImControl:(BOOL)enable;
- (void)activateIm:(BOOL)enable;
- (void)checkImState;
- (BOOL)convertPoint:(NSPoint)point toRow:(int *)row column:(int *)column;
- (NSPoint)pointForRow:(int)row column:(int)col;
- (NSRect)rectForRow:(int)row column:(int)col numRows:(int)nr
+5
View File
@@ -371,6 +371,11 @@ defaultLineHeightForFont(NSFont *font)
[helper activateIm:enable];
}
- (void)checkImState
{
[helper checkImState];
}
- (BOOL)_wantsKeyDownForEvent:(id)event
{
// HACK! This is an undocumented method which is called from within
+26 -16
View File
@@ -191,7 +191,7 @@ extern GuiFont gui_mch_retain_font(GuiFont font);
- (void)startOdbEditWithArguments:(NSDictionary *)args;
- (void)handleXcodeMod:(NSData *)data;
- (void)handleOpenWithArguments:(NSDictionary *)args;
- (BOOL)checkForModifiedBuffers;
- (int)checkForModifiedBuffers;
- (void)addInput:(NSString *)input;
- (void)redrawScreen;
- (void)handleFindReplace:(NSDictionary *)args;
@@ -1182,12 +1182,10 @@ extern GuiFont gui_mch_retain_font(GuiFont font);
- (void)updateModifiedFlag
{
// Notify MacVim if _any_ buffer has changed from unmodified to modified or
// vice versa.
int msgid = [self checkForModifiedBuffers]
? BuffersModifiedMsgID : BuffersNotModifiedMsgID;
[self queueMessage:msgid data:nil];
int state = [self checkForModifiedBuffers];
NSMutableData *data = [NSMutableData data];
[data appendBytes:&state length:sizeof(int)];
[self queueMessage:SetBuffersModifiedMsgID data:data];
}
- (oneway void)processInput:(int)msgid data:(in bycopy NSData *)data
@@ -1196,6 +1194,9 @@ extern GuiFont gui_mch_retain_font(GuiFont font);
// This is a DO method which is called from inside MacVim to add new input
// to this Vim process. It may get called when the run loop is updated.
//
// NOTE: DO NOT MODIFY VIM STATE IN THIS METHOD! (Adding data to input
// buffers is OK however.)
//
// Add keyboard input to Vim's input buffer immediately. We have to do
// this because in many places Vim polls the input buffer whilst waiting
// for keyboard input (so Vim may lock up forever otherwise).
@@ -1252,12 +1253,6 @@ extern GuiFont gui_mch_retain_font(GuiFont font);
} else if (SetMarkedTextMsgID == msgid) {
// NOTE: This message counts as keyboard input...
[self handleMarkedText:data];
} else if (ActivatedImMsgID == msgid) {
// NOTE: This message counts as keyboard input...
[self setImState:YES];
} else if (DeactivatedImMsgID == msgid) {
// NOTE: This message counts as keyboard input...
[self setImState:NO];
} else if (TerminateNowMsgID == msgid) {
// Terminate immediately (the frontend is about to quit or this process
// was aborted). Don't preserve modified files since the user would
@@ -1657,6 +1652,9 @@ extern GuiFont gui_mch_retain_font(GuiFont font);
- (void)setImState:(BOOL)activated
{
imState = activated;
gui_update_cursor(TRUE, FALSE);
[self flushQueue:YES];
}
static void netbeansReadCallback(CFSocketRef s,
@@ -1818,6 +1816,8 @@ static void netbeansReadCallback(CFSocketRef s,
nil];
// Put the state before all other messages.
// TODO: If called multiple times the oldest state will be used! Should
// remove any current Vim state messages from the queue first.
int msgid = SetVimStateMsgID;
[outputQueue insertObject:[vimState dictionaryAsData] atIndex:0];
[outputQueue insertObject:[NSData dataWithBytes:&msgid length:sizeof(int)]
@@ -2076,6 +2076,10 @@ static void netbeansReadCallback(CFSocketRef s,
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6)
[self handleGesture:data];
#endif
} else if (ActivatedImMsgID == msgid) {
[self setImState:YES];
} else if (DeactivatedImMsgID == msgid) {
[self setImState:NO];
} else {
ASLogWarn(@"Unknown message received (msgid=%d)", msgid);
}
@@ -2832,16 +2836,22 @@ static void netbeansReadCallback(CFSocketRef s,
}
}
- (BOOL)checkForModifiedBuffers
- (int)checkForModifiedBuffers
{
// Return 1 if current buffer is modified, -1 if other buffer is modified,
// otherwise return 0.
if (curbuf && bufIsChanged(curbuf))
return 1;
buf_T *buf;
for (buf = firstbuf; buf != NULL; buf = buf->b_next) {
if (bufIsChanged(buf)) {
return YES;
return -1;
}
}
return NO;
return 0;
}
- (void)addInput:(NSString *)input
+1
View File
@@ -79,6 +79,7 @@
- (void)setAntialias:(BOOL)state;
- (void)setImControl:(BOOL)enable;
- (void)activateIm:(BOOL)enable;
- (void)checkImState;
- (BOOL)convertPoint:(NSPoint)point toRow:(int *)row column:(int *)column;
- (NSRect)rectForRow:(int)row column:(int)column numRows:(int)nr
numColumns:(int)nc;
+9
View File
@@ -403,6 +403,11 @@ defaultAdvanceForFont(CTFontRef fontRef)
[helper activateIm:enable];
}
- (void)checkImState
{
[helper checkImState];
}
- (BOOL)_wantsKeyDownForEvent:(id)event
{
// HACK! This is an undocumented method which is called from within
@@ -922,6 +927,10 @@ defaultAdvanceForFont(CTFontRef fontRef)
// Convert UTF-8 chars to UTF-16
CFStringRef sref = CFStringCreateWithBytesNoCopy(NULL, s, len,
kCFStringEncodingUTF8, false, kCFAllocatorNull);
if (sref == NULL) {
ASLogWarn(@"Conversion error: some text may not be rendered");
continue;
}
CFIndex unilength = CFStringGetLength(sref);
const UniChar *unichars = CFStringGetCharactersPtr(sref);
UniChar *buffer = NULL;
+3 -2
View File
@@ -19,6 +19,7 @@
MMVimView *view;
NSPoint oldPosition;
NSString *oldTabBarStyle;
int options;
// These are only valid in fullscreen mode and store pre-fu vim size
int nonFuRows, nonFuColumns;
@@ -32,8 +33,8 @@
- (MMFullscreenWindow *)initWithWindow:(NSWindow *)t view:(MMVimView *)v
backgroundColor:(NSColor *)back;
- (void)enterFullscreen:(int)fuoptions;
- (void)setOptions:(int)opt;
- (void)enterFullscreen;
- (void)leaveFullscreen;
- (void)centerView;
+17 -6
View File
@@ -107,8 +107,15 @@
[super dealloc];
}
- (void)enterFullscreen:(int)fuoptions
- (void)setOptions:(int)opt
{
options = opt;
}
- (void)enterFullscreen
{
ASLogDebug(@"Enter full screen now");
// fade to black
Boolean didBlend = NO;
CGDisplayFadeReservationToken token;
@@ -117,7 +124,11 @@
kCGDisplayBlendSolidColor, .0, .0, .0, true);
didBlend = YES;
}
// NOTE: The window may have moved to another screen in between init.. and
// this call so set the frame again just in case.
[self setFrame:[[target screen] frame] display:NO];
// fool delegate
id delegate = [target delegate];
[target setDelegate:nil];
@@ -146,7 +157,7 @@
// focus gained message
[self setDelegate:delegate];
// resize vim view according to fuoptions
// resize vim view according to options
int currRows, currColumns;
[[view textView] getMaxRows:&currRows columns:&currColumns];
@@ -163,12 +174,12 @@
nonFuColumns = currColumns;
// Compute current fu size
if (fuoptions & FUOPT_MAXVERT)
if (options & FUOPT_MAXVERT)
fuRows = maxRows;
if (fuoptions & FUOPT_MAXHORZ)
if (options & FUOPT_MAXHORZ)
fuColumns = maxColumns;
startFuFlags = fuoptions;
startFuFlags = options;
// if necessary, resize vim to target fu size
if (currRows != fuRows || currColumns != fuColumns) {
+1
View File
@@ -34,6 +34,7 @@
- (void)setAntialias:(BOOL)antialias;
- (void)setImControl:(BOOL)enable;
- (void)activateIm:(BOOL)enable;
- (void)checkImState;
//
// MMTextStorage methods
+5
View File
@@ -317,6 +317,11 @@
[helper activateIm:enable];
}
- (void)checkImState
{
[helper checkImState];
}
- (NSFont *)font
{
return [(MMTextStorage*)[self textStorage] font];
+3
View File
@@ -103,5 +103,8 @@ enum {
- (void)setImControl:(BOOL)enable;
- (void)activateIm:(BOOL)enable;
- (BOOL)useInlineIm;
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
- (void)checkImState;
#endif
@end
+43 -31
View File
@@ -36,7 +36,7 @@ static float MMDragAreaSize = 73.0f;
- (MMVimController *)vimController;
- (void)doKeyDown:(NSString *)key;
- (void)doInsertText:(NSString *)text;
- (void)checkImState;
- (void)pollImState;
- (void)hideMouseCursor;
- (void)startDragTimerWithInterval:(NSTimeInterval)t;
- (void)dragTimerFired:(NSTimer *)timer;
@@ -129,11 +129,19 @@ KeyboardInputSourcesEqual(TISInputSourceRef a, TISInputSourceRef b)
{
ASLogDebug(@"%@", event);
// NOTE: Check IM state _before_ key has been interpreted or we'll pick up
// the old IM state when it has been switched via a keyboard shortcut that
// MacVim cannot handle.
if (imControl)
[self checkImState];
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
if (NULL == TISCopyCurrentKeyboardInputSource) {
#endif
// NOTE: Check IM state _before_ key has been interpreted or we'll pick
// up the old IM state when it has been switched via a keyboard shortcut
// that MacVim cannot handle.
if (imControl)
[self pollImState];
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
}
#endif
// NOTE: Keyboard handling is complicated by the fact that we must call
// interpretKeyEvents: otherwise key equivalents set up by input methods do
@@ -851,6 +859,34 @@ KeyboardInputSourcesEqual(TISInputSourceRef a, TISInputSourceRef b)
#endif // INCLUDE_OLD_IM_CODE
}
- (void)checkImState
{
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
if (imControl && NULL != TISCopyCurrentKeyboardInputSource) {
// We get here when compiled on >=10.5 and running on >=10.5.
TISInputSourceRef cur = TISCopyCurrentKeyboardInputSource();
BOOL state = !KeyboardInputSourcesEqual(asciiImSource, cur);
BOOL isChanged = !KeyboardInputSourcesEqual(lastImSource, cur);
if (state && isChanged) {
// Remember current input source so we can switch back to it
// when IM is once more enabled.
ASLogDebug(@"Remember last input source: %@",
TISGetInputSourceProperty(cur, kTISPropertyInputSourceID));
if (lastImSource) CFRelease(lastImSource);
lastImSource = cur;
} else {
CFRelease(cur);
}
if (imState != state) {
imState = state;
int msgid = state ? ActivatedImMsgID : DeactivatedImMsgID;
[[self vimController] sendMessage:msgid data:nil];
}
return;
}
#endif
}
@end // MMTextViewHelper
@@ -936,32 +972,8 @@ KeyboardInputSourcesEqual(TISInputSourceRef a, TISInputSourceRef b)
[[self vimController] sendMessage:KeyDownMsgID data:data];
}
- (void)checkImState
- (void)pollImState
{
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
if (NULL != TISCopyCurrentKeyboardInputSource) {
// We get here when compiled on >=10.5 and running on >=10.5.
TISInputSourceRef cur = TISCopyCurrentKeyboardInputSource();
BOOL state = !KeyboardInputSourcesEqual(asciiImSource, cur);
BOOL isChanged = !KeyboardInputSourcesEqual(lastImSource, cur);
if (state && isChanged) {
// Remember current input source so we can switch back to it
// when IM is once more enabled.
ASLogDebug(@"Remember last input source: %@",
TISGetInputSourceProperty(cur, kTISPropertyInputSourceID));
if (lastImSource) CFRelease(lastImSource);
lastImSource = cur;
} else {
CFRelease(cur);
}
if (imState != state) {
imState = state;
int msgid = state ? ActivatedImMsgID : DeactivatedImMsgID;
[[self vimController] sendMessage:msgid data:nil];
}
return;
}
#endif
#if (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5)
// Compiled for <=10.4, running on 10.4
+2
View File
@@ -34,6 +34,7 @@
NSDictionary *vimState;
BOOL isPreloading;
NSDate *creationDate;
BOOL hasModifiedBuffer;
}
- (id)initWithBackend:(id)backend pid:(int)processIdentifier;
@@ -48,6 +49,7 @@
- (NSMenu *)mainMenu;
- (BOOL)isPreloading;
- (void)setIsPreloading:(BOOL)yn;
- (BOOL)hasModifiedBuffer;
- (NSDate *)creationDate;
- (void)cleanup;
- (void)dropFiles:(NSArray *)filenames forceOpen:(BOOL)force;
+20 -4
View File
@@ -220,6 +220,11 @@ static BOOL isUnsafeMessage(int msgid);
isPreloading = yn;
}
- (BOOL)hasModifiedBuffer
{
return hasModifiedBuffer;
}
- (NSDate *)creationDate
{
return creationDate;
@@ -765,10 +770,21 @@ static BOOL isUnsafeMessage(int msgid);
[windowController enterFullscreen:fuoptions backgroundColor:back];
} else if (LeaveFullscreenMsgID == msgid) {
[windowController leaveFullscreen];
} else if (BuffersNotModifiedMsgID == msgid) {
[windowController setBuffersModified:NO];
} else if (BuffersModifiedMsgID == msgid) {
[windowController setBuffersModified:YES];
} else if (SetBuffersModifiedMsgID == msgid) {
const void *bytes = [data bytes];
// state < 0 <-> some buffer modified
// state > 0 <-> current buffer modified
int state = *((int*)bytes); bytes += sizeof(int);
// NOTE: The window controller tracks whether current buffer is
// modified or not (and greys out the proxy icon as well as putting a
// dot in the red "close button" if necessary). The Vim controller
// tracks whether any buffer has been modified (used to decide whether
// to show a warning or not when quitting).
//
// TODO: Make 'hasModifiedBuffer' part of the Vim state?
[windowController setBufferModified:(state > 0)];
hasModifiedBuffer = (state != 0);
} else if (SetPreEditPositionMsgID == msgid) {
const int *dim = (const int*)[data bytes];
[[[windowController vimView] textView] setPreEditRow:dim[0]
+2 -1
View File
@@ -26,6 +26,7 @@
MMVimController *vimController;
MMVimView *vimView;
BOOL setupDone;
BOOL windowPresented;
BOOL shouldResizeVimView;
BOOL shouldRestoreUserTopLeft;
int updateToolbarFlag;
@@ -78,7 +79,7 @@
- (void)leaveFullscreen;
- (void)setFullscreenBackgroundColor:(NSColor *)back;
- (void)setBuffersModified:(BOOL)mod;
- (void)setBufferModified:(BOOL)mod;
- (void)setTopLeft:(NSPoint)pt;
- (BOOL)getDefaultTopLeft:(NSPoint*)pt;
+50 -19
View File
@@ -253,26 +253,43 @@
{
// Indicates that the window is ready to be displayed, but do not display
// (or place) it yet -- that is done in showWindow.
//
// TODO: Remove this method? Everything can probably be done in
// presentWindow: but must carefully check dependencies on 'setupDone'
// flag.
[self addNewTabViewItem];
setupDone = YES;
[self updateResizeConstraints];
[self resizeWindowToFitContentSize:[vimView desiredSize]
keepOnScreen:YES];
}
- (BOOL)presentWindow:(id)unused
{
// Actually show the window on screen. However, if openWindow hasn't
// already been called nothing will happen (the window will be displayed
// later).
// If openWindow hasn't already been called then the window will be
// displayed later.
if (!setupDone) return NO;
// Place the window now. If there are multiple screens then a choice is
// made as to which screen the window should be on. This means that all
// code that is executed before this point must not depend on the screen!
[[MMAppController sharedInstance] windowControllerWillOpen:self];
[self updateResizeConstraints];
[self resizeWindowToFitContentSize:[vimView desiredSize]
keepOnScreen:YES];
[[self window] makeKeyAndOrderFront:self];
// 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
// GUIEnter auto command could cause this).
[fullscreenWindow enterFullscreen];
fullscreenEnabled = YES;
}
return YES;
}
@@ -289,8 +306,8 @@
- (void)setTextDimensionsWithRows:(int)rows columns:(int)cols isLive:(BOOL)live
keepOnScreen:(BOOL)onScreen
{
//ASLogDebug(@"setTextDimensionsWithRows:%d columns:%d isLive:%d "
// "keepOnScreen:%d", rows, cols, live, onScreen);
ASLogDebug(@"setTextDimensionsWithRows:%d columns:%d isLive:%d "
"keepOnScreen:%d", rows, cols, live, onScreen);
// NOTE: The only place where the (rows,columns) of the vim view are
// modified is here and when entering/leaving full-screen. Setting these
@@ -449,7 +466,10 @@
if (updateToolbarFlag != 0)
[self updateToolbar];
if (shouldResizeVimView) {
// NOTE: If the window has not been presented then we must avoid resizing
// the views since it will cause them to be constrained to the screen which
// has not yet been set!
if (windowPresented && shouldResizeVimView) {
shouldResizeVimView = NO;
NSSize originalSize = [vimView frame].size;
@@ -607,17 +627,28 @@
{
if (fullscreenEnabled) return;
// fullscreenWindow could be nil here if this is called multiple times
// during startup.
[fullscreenWindow release];
fullscreenWindow = [[MMFullscreenWindow alloc]
initWithWindow:decoratedWindow view:vimView backgroundColor:back];
[fullscreenWindow enterFullscreen:fuoptions];
[fullscreenWindow setDelegate:self];
initWithWindow:decoratedWindow view:vimView backgroundColor:back];
[fullscreenWindow setOptions:fuoptions];
[fullscreenWindow setRepresentedFilename:
[decoratedWindow representedFilename]];
fullscreenEnabled = YES;
// The resize handle disappears so the vim view needs to update the
// scrollbars.
shouldResizeVimView = YES;
// 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;
} else {
ASLogDebug(@"Delay enter full screen");
}
}
- (void)leaveFullscreen
@@ -635,11 +666,11 @@
- (void)setFullscreenBackgroundColor:(NSColor *)back
{
if (fullscreenEnabled)
if (fullscreenWindow)
[fullscreenWindow setBackgroundColor:back];
}
- (void)setBuffersModified:(BOOL)mod
- (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
+1 -2
View File
@@ -158,8 +158,7 @@ enum {
SetServerNameMsgID,
EnterFullscreenMsgID,
LeaveFullscreenMsgID,
BuffersNotModifiedMsgID,
BuffersModifiedMsgID,
SetBuffersModifiedMsgID,
AddInputMsgID,
SetPreEditPositionMsgID,
TerminateNowMsgID,
+1 -2
View File
@@ -68,8 +68,7 @@ char *MessageStrings[] =
"SetServerNameMsgID",
"EnterFullscreenMsgID",
"LeaveFullscreenMsgID",
"BuffersNotModifiedMsgID",
"BuffersModifiedMsgID",
"SetBuffersModifiedMsgID",
"AddInputMsgID",
"SetPreEditPositionMsgID",
"TerminateNowMsgID",
+3 -2
View File
@@ -447,6 +447,7 @@
isa = PBXProject;
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "MacVim" */;
compatibilityVersion = "Xcode 2.4";
developmentRegion = English;
hasScannedForEncodings = 1;
knownRegions = (
English,
@@ -621,7 +622,7 @@
buildSettings = {
ARCHS = "$(NATIVE_ARCH_ACTUAL)";
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 55;
CURRENT_PROJECT_VERSION = 56;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)",
@@ -651,7 +652,7 @@
buildSettings = {
ARCHS = "$(NATIVE_ARCH_ACTUAL)";
COPY_PHASE_STRIP = YES;
CURRENT_PROJECT_VERSION = 55;
CURRENT_PROJECT_VERSION = 56;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)",
+11 -4
View File
@@ -1,6 +1,6 @@
#
# Makefile for VIM on Win32, using Cygnus gcc
# Last updated by Dan Sharp. Last Change: 2010 Feb 24
# Last updated by Dan Sharp. Last Change: 2010 Nov 03
#
# Also read INSTALLpc.txt!
#
@@ -27,6 +27,7 @@
# MZSCHEME_VER define to version of MzScheme being used (209_000)
# DYNAMIC_MZSCHEME no or yes: use yes to load the MzScheme DLLs dynamically (yes)
# MZSCHEME_DLLS path to MzScheme DLLs (libmzgc and libmzsch), for "static" build.
# MZSCHEME_USE_RACKET define to use "racket" instead of "mzsch".
# LUA define to path to Lua dir to get Lua support (not defined)
# LUA_VER define to version of Lua being used (51)
# DYNAMIC_LUA no or yes: use yes to load the Lua DLL dynamically (yes)
@@ -254,16 +255,22 @@ ifndef MZSCHEME_GENERATE_BASE
MZSCHEME_GENERATE_BASE=no
endif
ifndef MZSCHEME_USE_RACKET
MZSCHEME_MAIN_LIB=mzsch
else
MZSCHEME_MAIN_LIB=racket
endif
ifeq (yes, $(DYNAMIC_MZSCHEME))
DEFINES += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"libmzsch$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\"
DEFINES += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\"
else
ifndef MZSCHEME_DLLS
MZSCHEME_DLLS = $(MZSCHEME)
endif
ifeq (yes,$(MZSCHEME_PRECISE_GC))
MZSCHEME_LIB=-lmzsch$(MZSCHEME_VER)
MZSCHEME_LIB=-l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER)
else
MZSCHEME_LIB = -lmzsch$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER)
MZSCHEME_LIB = -l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER)
endif
EXTRA_LIBS += -L$(MZSCHEME_DLLS) -L$(MZSCHEME_DLLS)/lib $(MZSCHEME_LIB)
endif
+9 -3
View File
@@ -141,11 +141,17 @@ ifndef MZSCHEME_GENERATE_BASE
MZSCHEME_GENERATE_BASE=no
endif
ifndef MZSCHEME_USE_RACKET
MZSCHEME_MAIN_LIB=mzsch
else
MZSCHEME_MAIN_LIB=racket
endif
ifeq (no,$(DYNAMIC_MZSCHEME))
ifeq (yes,$(MZSCHEME_PRECISE_GC))
MZSCHEME_LIB=-lmzsch$(MZSCHEME_VER)
MZSCHEME_LIB=-l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER)
else
MZSCHEME_LIB = -lmzsch$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER)
MZSCHEME_LIB = -l$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER) -lmzgc$(MZSCHEME_VER)
endif
# the modern MinGW can dynamically link to dlls directly.
# point MZSCHEME_DLLS to where you put libmzschXXXXXXX.dll and libgcXXXXXXX.dll
@@ -343,7 +349,7 @@ endif
ifdef MZSCHEME
CFLAGS += -I$(MZSCHEME)/include -DFEAT_MZSCHEME -DMZSCHEME_COLLECTS=\"$(MZSCHEME)/collects\"
ifeq (yes, $(DYNAMIC_MZSCHEME))
CFLAGS += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"libmzsch$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\"
CFLAGS += -DDYNAMIC_MZSCHEME -DDYNAMIC_MZSCH_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\" -DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\"
endif
endif
+12 -9
View File
@@ -380,9 +380,6 @@ MSVCVER = 10.0
!if "$(_NMAKE_VER)" == "10.00.30319.01"
MSVCVER = 10.0
!endif
!if "$(_NMAKE_VER)" == "9.00.30729.01"
MSVCVER = 9.0
!endif
!endif
# Abort bulding VIM if version of VC is unrecognised.
@@ -705,12 +702,18 @@ PYTHON3_LIB = $(PYTHON3)\libs\python$(PYTHON3_VER).lib
MZSCHEME_VER = 205_000
!endif
CFLAGS = $(CFLAGS) -DFEAT_MZSCHEME -I $(MZSCHEME)\include
!if EXIST("$(MZSCHEME)\collects\scheme\base.ss")
# for MzScheme 4.x we need to include byte code for basic Scheme stuff
!if EXIST("$(MZSCHEME)\collects\scheme\base.ss") \
|| EXIST("$(MZSCHEME)\collects\scheme\base.rkt")
# for MzScheme >= 4 we need to include byte code for basic Scheme stuff
MZSCHEME_EXTRA_DEP = mzscheme_base.c
CFLAGS = $(CFLAGS) -DINCLUDE_MZSCHEME_BASE
!endif
!if EXIST("$(MZSCHEME)\lib\msvc\libmzsch$(MZSCHEME_VER).lib") \
!if EXIST("$(MZSCHEME)\lib\msvc\libmzsch$(MZSCHEME_VER).lib")
MZSCHEME_MAIN_LIB=mzsch
!else
MZSCHEME_MAIN_LIB=racket
!endif
!if EXIST("$(MZSCHEME)\lib\msvc\lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).lib") \
&& !EXIST("$(MZSCHEME)\lib\msvc\libmzgc$(MZSCHEME_VER).lib")
!message Building with Precise GC
MZSCHEME_PRECISE_GC = yes
@@ -722,7 +725,7 @@ CFLAGS = $(CFLAGS) -DMZ_PRECISE_GC
!endif
!message MzScheme DLLs will be loaded dynamically
CFLAGS = $(CFLAGS) -DDYNAMIC_MZSCHEME \
-DDYNAMIC_MZSCH_DLL=\"libmzsch$(MZSCHEME_VER).dll\" \
-DDYNAMIC_MZSCH_DLL=\"lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).dll\" \
-DDYNAMIC_MZGC_DLL=\"libmzgc$(MZSCHEME_VER).dll\"
!else
!if "$(MZSCHEME_DEBUG)" == "yes"
@@ -730,10 +733,10 @@ CFLAGS = $(CFLAGS) -DMZSCHEME_FORCE_GC
!endif
!if "$(MZSCHEME_PRECISE_GC)" == "yes"
# Precise GC does not use separate dll
MZSCHEME_LIB = $(MZSCHEME)\lib\msvc\libmzsch$(MZSCHEME_VER).lib
MZSCHEME_LIB = $(MZSCHEME)\lib\msvc\lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).lib
!else
MZSCHEME_LIB = $(MZSCHEME)\lib\msvc\libmzgc$(MZSCHEME_VER).lib \
$(MZSCHEME)\lib\msvc\libmzsch$(MZSCHEME_VER).lib
$(MZSCHEME)\lib\msvc\lib$(MZSCHEME_MAIN_LIB)$(MZSCHEME_VER).lib
!endif
!endif
MZSCHEME_OBJ = $(OUTDIR)\if_mzsch.obj
+11 -5
View File
@@ -414,12 +414,16 @@ CClink = $(CC)
# However, this may still cause problems, such as "import termios" failing.
# Build two separate versions of Vim in that case.
#CONF_OPT_PYTHON = --enable-pythoninterp
#CONF_OPT_PYTHON = --enable-pythoninterp=dynamic
#CONF_OPT_PYTHON3 = --enable-python3interp
#CONF_OPT_PYTHON3 = --enable-python3interp=dynamic
# RUBY
# Uncomment this when you want to include the Ruby interface.
# First one for static linking, second one for loading when used.
# Note: you need the development package (e.g., ruby1.9.1-dev on Ubuntu).
#CONF_OPT_RUBY = --enable-rubyinterp
#CONF_OPT_RUBY = --enable-rubyinterp=dynamic
#CONF_OPT_RUBY = --enable-rubyinterp --with-ruby-command=ruby1.9.1
# TCL
@@ -1047,8 +1051,9 @@ INSTALL_PROG = cp
INSTALL_DATA = cp
INSTALL_DATA_R = cp -r
### Program to run on installed binary
### Program to run on installed binary. Use the second one to disable strip.
#STRIP = strip
#STRIP = /bin/true
### Permissions for binaries {{{1
BINMOD = 755
@@ -1337,7 +1342,7 @@ SHELL = /bin/sh
.SUFFIXES: .c .o .pro
PRE_DEFS = -Iproto $(DEFS) $(GUI_DEFS) $(GUI_IPATH) $(CPPFLAGS) $(EXTRA_IPATHS)
POST_DEFS = $(X_CFLAGS) $(MZSCHEME_CFLAGS) $(TCL_CFLAGS) $(RUBY_CFLAGS) $(EXTRA_DEFS)
POST_DEFS = $(X_CFLAGS) $(MZSCHEME_CFLAGS) $(TCL_CFLAGS) $(EXTRA_DEFS)
ALL_CFLAGS = $(PRE_DEFS) $(CFLAGS) $(PROFILE_CFLAGS) $(POST_DEFS)
@@ -1345,7 +1350,7 @@ ALL_CFLAGS = $(PRE_DEFS) $(CFLAGS) $(PROFILE_CFLAGS) $(POST_DEFS)
# with "-E".
OSDEF_CFLAGS = $(PRE_DEFS) $(POST_DEFS)
LINT_CFLAGS = -DLINT -I. $(PRE_DEFS) $(POST_DEFS) $(LUA_CFLAGS) $(PERL_CFLAGS) $(PYTHON_CFLAGS) -Dinline= -D__extension__= -Dalloca=alloca
LINT_CFLAGS = -DLINT -I. $(PRE_DEFS) $(POST_DEFS) $(RUBY_CFLAGS) $(LUA_CFLAGS) $(PERL_CFLAGS) $(PYTHON_CFLAGS) -Dinline= -D__extension__= -Dalloca=alloca
LINT_EXTRA = -DUSE_SNIFF -DHANGUL_INPUT -D"__attribute__(x)="
@@ -1711,7 +1716,8 @@ $(VIMTARGET): auto/config.mk objects $(OBJ) version.c version.h
$(CCC) version.c -o objects/version.o
@LINK="$(PURIFY) $(SHRPENV) $(CClink) $(ALL_LIB_DIRS) $(LDFLAGS) \
-o $(VIMTARGET) $(OBJ) objects/version.o $(ALL_LIBS)" \
MAKE="$(MAKE)" sh $(srcdir)/link.sh
MAKE="$(MAKE)" LINK_AS_NEEDED=$(LINK_AS_NEEDED) \
sh $(srcdir)/link.sh
xxd/xxd$(EXEEXT): xxd/xxd.c
cd xxd; CC="$(CC)" CFLAGS="$(CPPFLAGS) $(CFLAGS)" \
@@ -2557,7 +2563,7 @@ objects/if_python3.o: if_python3.c if_py_both.h
$(CCC) $(PYTHON3_CFLAGS) $(PYTHON3_CFLAGS_EXTRA) -o $@ if_python3.c
objects/if_ruby.o: if_ruby.c
$(CCC) -o $@ if_ruby.c
$(CCC) $(RUBY_CFLAGS) -o $@ if_ruby.c
objects/if_sniff.o: if_sniff.c
$(CCC) -o $@ if_sniff.c
+185 -21
View File
@@ -757,6 +757,7 @@ MSGFMT
MAKEMO
XCODEFLAGS
DEPEND_CFLAGS_FILTER
LINK_AS_NEEDED
LIBOBJS
LTLIBOBJS'
ac_subst_files=''
@@ -1352,7 +1353,7 @@ Optional Features:
--enable-pythoninterp=OPTS Include Python interpreter. default=no OPTS=no/yes/dynamic
--enable-python3interp=OPTS Include Python3 interpreter. default=no OPTS=no/yes/dynamic
--enable-tclinterp Include Tcl interpreter.
--enable-rubyinterp Include Ruby interpreter.
--enable-rubyinterp=OPTS Include Ruby interpreter. default=no OPTS=no/yes/dynamic
--enable-cscope Include cscope interface.
--enable-workshop Include Sun Visual Workshop support.
--disable-netbeans Disable NetBeans integration support.
@@ -4970,16 +4971,36 @@ echo "${ECHO_T}yes" >&6; }
else
{ echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6; }
{ echo "$as_me:$LINENO: checking if scheme.h can be found in /usr/include/plt/" >&5
echo $ECHO_N "checking if scheme.h can be found in /usr/include/plt/... $ECHO_C" >&6; }
if test -f /usr/include/plt/scheme.h; then
{ echo "$as_me:$LINENO: checking if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket" >&5
echo $ECHO_N "checking if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket... $ECHO_C" >&6; }
if test -f $vi_cv_path_mzscheme_pfx/include/racket/scheme.h; then
{ echo "$as_me:$LINENO: result: yes" >&5
echo "${ECHO_T}yes" >&6; }
SCHEME_INC=/usr/include/plt
SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
else
{ echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6; }
vi_cv_path_mzscheme_pfx=
{ echo "$as_me:$LINENO: checking if scheme.h can be found in /usr/include/plt/" >&5
echo $ECHO_N "checking if scheme.h can be found in /usr/include/plt/... $ECHO_C" >&6; }
if test -f /usr/include/plt/scheme.h; then
{ echo "$as_me:$LINENO: result: yes" >&5
echo "${ECHO_T}yes" >&6; }
SCHEME_INC=/usr/include/plt
else
{ echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6; }
{ echo "$as_me:$LINENO: checking if scheme.h can be found in /usr/include/racket/" >&5
echo $ECHO_N "checking if scheme.h can be found in /usr/include/racket/... $ECHO_C" >&6; }
if test -f /usr/include/racket/scheme.h; then
{ echo "$as_me:$LINENO: result: yes" >&5
echo "${ECHO_T}yes" >&6; }
SCHEME_INC=/usr/include/racket
else
{ echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6; }
vi_cv_path_mzscheme_pfx=
fi
fi
fi
fi
fi
@@ -4991,12 +5012,22 @@ echo "${ECHO_T}no" >&6; }
elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then
elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"; then
MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"
MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.a"; then
MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"; then
MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
else
if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.so"; then
MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket3m"
MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.so"; then
MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket -lmzgc"
else
MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
fi
@@ -5009,10 +5040,20 @@ echo "${ECHO_T}no" >&6; }
fi
if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
SCHEME_COLLECTS=lib/plt/
else
if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then
SCHEME_COLLECTS=lib/racket/
fi
fi
if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
MZSCHEME_EXTRA="mzscheme_base.c"
MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
MZSCHEME_EXTRA="mzscheme_base.c"
else
if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
MZSCHEME_EXTRA="mzscheme_base.c"
fi
fi
if test "X$MZSCHEME_EXTRA" != "X" ; then
MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
fi
MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
@@ -5429,9 +5470,9 @@ fi
PYTHON_LIBS="${vi_cv_path_python_plibs}"
if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version}"
PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\""
else
PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version}"
PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\""
fi
PYTHON_SRC="if_python.c"
if test "x$MACOSX" = "xyes"; then
@@ -5442,7 +5483,7 @@ fi
if test "${vi_cv_var_python_version}" = "1.4"; then
PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
fi
PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
{ echo "$as_me:$LINENO: checking if -pthread should be used" >&5
echo $ECHO_N "checking if -pthread should be used... $ECHO_C" >&6; }
@@ -5763,9 +5804,9 @@ fi
PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}"
PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
else
PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}"
PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
fi
PYTHON3_SRC="if_python3.c"
if test "x$MACOSX" = "xyes"; then
@@ -5926,10 +5967,10 @@ _ACEOF
#define DYNAMIC_PYTHON3 1
_ACEOF
{ echo "$as_me:$LINENO: checking whether we can do without RTLD_GLOBAL" >&5
echo $ECHO_N "checking whether we can do without RTLD_GLOBAL... $ECHO_C" >&6; }
{ echo "$as_me:$LINENO: checking whether we can do without RTLD_GLOBAL for Python" >&5
echo $ECHO_N "checking whether we can do without RTLD_GLOBAL for Python... $ECHO_C" >&6; }
cflags_save=$CFLAGS
CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
CFLAGS="$CFLAGS $PYTHON_CFLAGS"
ldflags_save=$LDFLAGS
LDFLAGS="$LDFLAGS -ldl"
if test "$cross_compiling" = yes; then
@@ -5948,15 +5989,17 @@ else
* Only the first pyhton version used will be switched on.
*/
int no_rtl_global_needed_for(char *python_instsoname)
int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
{
int needed = 0;
void* pylib = dlopen(python_instsoname, RTLD_LAZY);
if (pylib != 0)
{
void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
void (*init)(void) = dlsym(pylib, "Py_Initialize");
int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
void (*final)(void) = dlsym(pylib, "Py_Finalize");
(*pfx)(prefix);
(*init)();
needed = (*simple)("import termios") == -1;
(*final)();
@@ -5968,7 +6011,7 @@ else
int main(int argc, char** argv)
{
int not_needed = 0;
if (no_rtl_global_needed_for("libpython2.7.so.1.0") && no_rtl_global_needed_for("libpython3.1.so.1.0"))
if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}"))
not_needed = 1;
return !not_needed;
}
@@ -6011,8 +6054,102 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$a
fi
CFLAGS=$cflags_save
LDFLAGS=$ldflags_save
{ echo "$as_me:$LINENO: checking whether we can do without RTLD_GLOBAL for Python3" >&5
echo $ECHO_N "checking whether we can do without RTLD_GLOBAL for Python3... $ECHO_C" >&6; }
cflags_save=$CFLAGS
CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
ldflags_save=$LDFLAGS
LDFLAGS="$LDFLAGS -ldl"
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
echo "$as_me: error: cannot run test program while cross compiling
See \`config.log' for more details." >&2;}
{ (exit 1); exit 1; }; }
else
cat >conftest.$ac_ext <<_ACEOF
#include <dlfcn.h>
#include <wchar.h>
/* If this program fails, then RTLD_GLOBAL is needed.
* RTLD_GLOBAL will be used and then it is not possible to
* have both python versions enabled in the same vim instance.
* Only the first pyhton version used will be switched on.
*/
int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
{
int needed = 0;
void* pylib = dlopen(python_instsoname, RTLD_LAZY);
if (pylib != 0)
{
void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
void (*init)(void) = dlsym(pylib, "Py_Initialize");
int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
void (*final)(void) = dlsym(pylib, "Py_Finalize");
(*pfx)(prefix);
(*init)();
needed = (*simple)("import termios") == -1;
(*final)();
dlclose(pylib);
}
return !needed;
}
int main(int argc, char** argv)
{
int not_needed = 0;
if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}"))
not_needed = 1;
return !not_needed;
}
_ACEOF
rm -f conftest$ac_exeext
if { (ac_try="$ac_link"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_link") 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
{ (case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
(eval "$ac_try") 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
{ echo "$as_me:$LINENO: result: yes" >&5
echo "${ECHO_T}yes" >&6; };cat >>confdefs.h <<\_ACEOF
#define PY3_NO_RTLD_GLOBAL 1
_ACEOF
else
echo "$as_me: program exited with status $ac_status" >&5
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
( exit $ac_status )
{ echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6; }
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
CFLAGS=$cflags_save
LDFLAGS=$ldflags_save
PYTHON_SRC="if_python.c"
PYTHON_OBJ="objects/if_python.o"
PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
@@ -6394,7 +6531,7 @@ fi
{ echo "$as_me:$LINENO: result: $enable_rubyinterp" >&5
echo "${ECHO_T}$enable_rubyinterp" >&6; }
if test "$enable_rubyinterp" = "yes"; then
if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
{ echo "$as_me:$LINENO: checking --with-ruby-command argument" >&5
echo $ECHO_N "checking --with-ruby-command argument... $ECHO_C" >&6; }
@@ -6510,6 +6647,15 @@ echo "${ECHO_T}$rubyhdrdir" >&6; }
#define FEAT_RUBY 1
_ACEOF
if test "$enable_rubyinterp" = "dynamic"; then
libruby=`$vi_cv_path_ruby -r rbconfig -e 'printf "lib%s.%s\n", Config::CONFIG["RUBY_SO_NAME"], Config::CONFIG["DLEXT"]'`
cat >>confdefs.h <<\_ACEOF
#define DYNAMIC_RUBY 1
_ACEOF
RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
RUBY_LIBS=
fi
else
{ echo "$as_me:$LINENO: result: not found; disabling Ruby" >&5
echo "${ECHO_T}not found; disabling Ruby" >&6; }
@@ -19281,6 +19427,23 @@ echo "${ECHO_T}no" >&6; }
fi
{ echo "$as_me:$LINENO: checking linker --as-needed support" >&5
echo $ECHO_N "checking linker --as-needed support... $ECHO_C" >&6; }
LINK_AS_NEEDED=
# Check if linker supports --as-needed and --no-as-needed options
if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
LDFLAGS="$LDFLAGS -Wl,--as-needed"
LINK_AS_NEEDED=yes
fi
if test "$LINK_AS_NEEDED" = yes; then
{ echo "$as_me:$LINENO: result: yes" >&5
echo "${ECHO_T}yes" >&6; }
else
{ echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6; }
fi
ac_config_files="$ac_config_files auto/config.mk:config.mk.in"
cat >confcache <<\_ACEOF
@@ -20083,11 +20246,12 @@ MSGFMT!$MSGFMT$ac_delim
MAKEMO!$MAKEMO$ac_delim
XCODEFLAGS!$XCODEFLAGS$ac_delim
DEPEND_CFLAGS_FILTER!$DEPEND_CFLAGS_FILTER$ac_delim
LINK_AS_NEEDED!$LINK_AS_NEEDED$ac_delim
LIBOBJS!$LIBOBJS$ac_delim
LTLIBOBJS!$LTLIBOBJS$ac_delim
_ACEOF
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 49; then
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 50; then
break
elif $ac_last_try; then
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+3 -3
View File
@@ -643,6 +643,9 @@ free_buffer_stuff(buf, free_options)
{
clear_wininfo(buf); /* including window-local options */
free_buf_options(buf, TRUE);
#ifdef FEAT_SPELL
ga_clear(&buf->b_s.b_langp);
#endif
}
#ifdef FEAT_EVAL
vars_clear(&buf->b_vars.dv_hashtab); /* free all internal variables */
@@ -665,9 +668,6 @@ free_buffer_stuff(buf, free_options)
vim_free(buf->b_start_fenc);
buf->b_start_fenc = NULL;
#endif
#ifdef FEAT_SPELL
ga_clear(&buf->b_s.b_langp);
#endif
}
/*
+3
View File
@@ -349,6 +349,9 @@
/* Define if you want to include the Ruby interpreter. */
#undef FEAT_RUBY
/* Define for linking via dlopen() or LoadLibrary() */
#undef DYNAMIC_RUBY
/* Define if you want to include the Tcl interpreter. */
#undef FEAT_TCL
+1
View File
@@ -31,6 +31,7 @@ TAGPRG = @TAGPRG@
CPP = @CPP@
CPP_MM = @CPP_MM@
DEPEND_CFLAGS_FILTER = @DEPEND_CFLAGS_FILTER@
LINK_AS_NEEDED = @LINK_AS_NEEDED@
X_CFLAGS = @X_CFLAGS@
X_LIBS_DIR = @X_LIBS@
X_PRE_LIBS = @X_PRE_LIBS@
+123 -17
View File
@@ -582,13 +582,27 @@ if test "$enable_mzschemeinterp" = "yes"; then
SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
else
AC_MSG_RESULT(no)
AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
if test -f /usr/include/plt/scheme.h; then
AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket)
if test -f $vi_cv_path_mzscheme_pfx/include/racket/scheme.h; then
AC_MSG_RESULT(yes)
SCHEME_INC=/usr/include/plt
SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
else
AC_MSG_RESULT(no)
vi_cv_path_mzscheme_pfx=
AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
if test -f /usr/include/plt/scheme.h; then
AC_MSG_RESULT(yes)
SCHEME_INC=/usr/include/plt
else
AC_MSG_RESULT(no)
AC_MSG_CHECKING(if scheme.h can be found in /usr/include/racket/)
if test -f /usr/include/racket/scheme.h; then
AC_MSG_RESULT(yes)
SCHEME_INC=/usr/include/racket
else
AC_MSG_RESULT(no)
vi_cv_path_mzscheme_pfx=
fi
fi
fi
fi
fi
@@ -600,13 +614,23 @@ if test "$enable_mzschemeinterp" = "yes"; then
elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then
elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"; then
MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"
MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.a"; then
MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"; then
MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
else
dnl Using shared objects
if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.so"; then
MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket3m"
MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.so"; then
MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket -lmzgc"
else
MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
fi
@@ -621,10 +645,20 @@ if test "$enable_mzschemeinterp" = "yes"; then
fi
if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
SCHEME_COLLECTS=lib/plt/
else
if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then
SCHEME_COLLECTS=lib/racket/
fi
fi
if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
dnl need to generate bytecode for MzScheme base
MZSCHEME_EXTRA="mzscheme_base.c"
else
if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
MZSCHEME_EXTRA="mzscheme_base.c"
fi
fi
if test "X$MZSCHEME_EXTRA" != "X" ; then
dnl need to generate bytecode for MzScheme base
MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
fi
@@ -879,9 +913,9 @@ eof
PYTHON_LIBS="${vi_cv_path_python_plibs}"
if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version}"
PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\""
else
PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version}"
PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\""
fi
PYTHON_SRC="if_python.c"
dnl For Mac OSX 10.2 config.o is included in the Python library.
@@ -893,7 +927,7 @@ eof
if test "${vi_cv_var_python_version}" = "1.4"; then
PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
fi
PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
dnl On FreeBSD linking with "-pthread" is required to use threads.
dnl _THREAD_SAFE must be used for compiling then.
@@ -1061,9 +1095,9 @@ eof
PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}"
PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
else
PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}"
PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
fi
PYTHON3_SRC="if_python3.c"
dnl For Mac OSX 10.2 config.o is included in the Python library.
@@ -1141,9 +1175,9 @@ dnl with dlopen(), dlsym(), dlclose()
if test "$python_ok" = yes && test "$python3_ok" = yes; then
AC_DEFINE(DYNAMIC_PYTHON)
AC_DEFINE(DYNAMIC_PYTHON3)
AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL)
AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
cflags_save=$CFLAGS
CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
CFLAGS="$CFLAGS $PYTHON_CFLAGS"
ldflags_save=$LDFLAGS
LDFLAGS="$LDFLAGS -ldl"
AC_RUN_IFELSE([
@@ -1154,15 +1188,17 @@ if test "$python_ok" = yes && test "$python3_ok" = yes; then
* Only the first pyhton version used will be switched on.
*/
int no_rtl_global_needed_for(char *python_instsoname)
int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
{
int needed = 0;
void* pylib = dlopen(python_instsoname, RTLD_LAZY);
if (pylib != 0)
{
void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
void (*init)(void) = dlsym(pylib, "Py_Initialize");
int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
void (*final)(void) = dlsym(pylib, "Py_Finalize");
(*pfx)(prefix);
(*init)();
needed = (*simple)("import termios") == -1;
(*final)();
@@ -1174,13 +1210,60 @@ if test "$python_ok" = yes && test "$python3_ok" = yes; then
int main(int argc, char** argv)
{
int not_needed = 0;
if (no_rtl_global_needed_for("libpython2.7.so.1.0") && no_rtl_global_needed_for("libpython3.1.so.1.0"))
if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}"))
not_needed = 1;
return !not_needed;
}],
[AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
CFLAGS=$cflags_save
LDFLAGS=$ldflags_save
AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
cflags_save=$CFLAGS
CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
ldflags_save=$LDFLAGS
LDFLAGS="$LDFLAGS -ldl"
AC_RUN_IFELSE([
#include <dlfcn.h>
#include <wchar.h>
/* If this program fails, then RTLD_GLOBAL is needed.
* RTLD_GLOBAL will be used and then it is not possible to
* have both python versions enabled in the same vim instance.
* Only the first pyhton version used will be switched on.
*/
int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
{
int needed = 0;
void* pylib = dlopen(python_instsoname, RTLD_LAZY);
if (pylib != 0)
{
void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
void (*init)(void) = dlsym(pylib, "Py_Initialize");
int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
void (*final)(void) = dlsym(pylib, "Py_Finalize");
(*pfx)(prefix);
(*init)();
needed = (*simple)("import termios") == -1;
(*final)();
dlclose(pylib);
}
return !needed;
}
int main(int argc, char** argv)
{
int not_needed = 0;
if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}"))
not_needed = 1;
return !not_needed;
}],
[AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
CFLAGS=$cflags_save
LDFLAGS=$ldflags_save
PYTHON_SRC="if_python.c"
PYTHON_OBJ="objects/if_python.o"
PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
@@ -1331,10 +1414,10 @@ AC_SUBST(TCL_LIBS)
AC_MSG_CHECKING(--enable-rubyinterp argument)
AC_ARG_ENABLE(rubyinterp,
[ --enable-rubyinterp Include Ruby interpreter.], ,
[ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
[enable_rubyinterp="no"])
AC_MSG_RESULT($enable_rubyinterp)
if test "$enable_rubyinterp" = "yes"; then
if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
AC_MSG_CHECKING(--with-ruby-command argument)
AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
RUBY_CMD="$withval"; AC_MSG_RESULT($RUBY_CMD),
@@ -1402,6 +1485,12 @@ if test "$enable_rubyinterp" = "yes"; then
RUBY_PRO="if_ruby.pro"
AC_DEFINE(FEAT_RUBY)
if test "$enable_rubyinterp" = "dynamic"; then
libruby=`$vi_cv_path_ruby -r rbconfig -e 'printf "lib%s.%s\n", Config::CONFIG[["RUBY_SO_NAME"]], Config::CONFIG[["DLEXT"]]'`
AC_DEFINE(DYNAMIC_RUBY)
RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
RUBY_LIBS=
fi
else
AC_MSG_RESULT(not found; disabling Ruby)
fi
@@ -3558,6 +3647,23 @@ if test "$GCC" = yes; then
fi
AC_SUBST(DEPEND_CFLAGS_FILTER)
dnl link.sh tries to avoid overlinking in a hackish way.
dnl At least GNU ld supports --as-needed which provides the same functionality
dnl at linker level. Let's use it.
AC_MSG_CHECKING(linker --as-needed support)
LINK_AS_NEEDED=
# Check if linker supports --as-needed and --no-as-needed options
if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
LDFLAGS="$LDFLAGS -Wl,--as-needed"
LINK_AS_NEEDED=yes
fi
if test "$LINK_AS_NEEDED" = yes; then
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
AC_SUBST(LINK_AS_NEEDED)
dnl write output files
AC_OUTPUT(auto/config.mk:config.mk.in)
+44 -5
View File
@@ -58,6 +58,10 @@ static char *ctrl_x_msgs[] =
};
static char e_hitend[] = N_("Hit end of paragraph");
#ifdef FEAT_COMPL_FUNC
static char e_complwin[] = N_("E839: Completion function changed window");
static char e_compldel[] = N_("E840: Completion function deleted text");
#endif
/*
* Structure used to store one match for insert completion.
@@ -2668,6 +2672,7 @@ set_completion(startcol, list)
if (stop_arrow() == FAIL)
return;
compl_direction = FORWARD;
if (startcol > curwin->w_cursor.col)
startcol = curwin->w_cursor.col;
compl_col = startcol;
@@ -3848,6 +3853,8 @@ expand_by_function(type, base)
char_u *args[2];
char_u *funcname;
pos_T pos;
win_T *curwin_save;
buf_T *curbuf_save;
funcname = (type == CTRL_X_FUNCTION) ? curbuf->b_p_cfu : curbuf->b_p_ofu;
if (*funcname == NUL)
@@ -3858,13 +3865,27 @@ expand_by_function(type, base)
args[1] = base;
pos = curwin->w_cursor;
curwin_save = curwin;
curbuf_save = curbuf;
matchlist = call_func_retlist(funcname, 2, args, FALSE);
if (curwin_save != curwin || curbuf_save != curbuf)
{
EMSG(_(e_complwin));
goto theend;
}
curwin->w_cursor = pos; /* restore the cursor position */
if (matchlist == NULL)
return;
check_cursor();
if (!equalpos(curwin->w_cursor, pos))
{
EMSG(_(e_compldel));
goto theend;
}
if (matchlist != NULL)
ins_compl_add_list(matchlist);
ins_compl_add_list(matchlist);
list_unref(matchlist);
theend:
if (matchlist != NULL)
list_unref(matchlist);
}
#endif /* FEAT_COMPL_FUNC */
@@ -3904,6 +3925,7 @@ ins_compl_add_tv(tv, dir)
char_u *word;
int icase = FALSE;
int adup = FALSE;
int aempty = FALSE;
char_u *(cptext[CPT_COUNT]);
if (tv->v_type == VAR_DICT && tv->vval.v_dict != NULL)
@@ -3921,13 +3943,15 @@ ins_compl_add_tv(tv, dir)
icase = get_dict_number(tv->vval.v_dict, (char_u *)"icase");
if (get_dict_string(tv->vval.v_dict, (char_u *)"dup", FALSE) != NULL)
adup = get_dict_number(tv->vval.v_dict, (char_u *)"dup");
if (get_dict_string(tv->vval.v_dict, (char_u *)"empty", FALSE) != NULL)
aempty = get_dict_number(tv->vval.v_dict, (char_u *)"empty");
}
else
{
word = get_tv_string_chk(tv);
vim_memset(cptext, 0, sizeof(cptext));
}
if (word == NULL || *word == NUL)
if (word == NULL || (!aempty && *word == NUL))
return FAIL;
return ins_compl_add(word, -1, icase, NULL, cptext, dir, 0, adup);
}
@@ -5009,6 +5033,8 @@ ins_complete(c)
int col;
char_u *funcname;
pos_T pos;
win_T *curwin_save;
buf_T *curbuf_save;
/* Call 'completefunc' or 'omnifunc' and get pattern length as a
* string */
@@ -5024,8 +5050,21 @@ ins_complete(c)
args[0] = (char_u *)"1";
args[1] = NULL;
pos = curwin->w_cursor;
curwin_save = curwin;
curbuf_save = curbuf;
col = call_func_retnr(funcname, 2, args, FALSE);
if (curwin_save != curwin || curbuf_save != curbuf)
{
EMSG(_(e_complwin));
return FAIL;
}
curwin->w_cursor = pos; /* restore the cursor position */
check_cursor();
if (!equalpos(curwin->w_cursor, pos))
{
EMSG(_(e_compldel));
return FAIL;
}
if (col < 0)
col = curs_col;
+117 -51
View File
@@ -10,9 +10,6 @@
/*
* eval.c: Expression evaluation.
*/
#if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64)
# include "vimio.h" /* for mch_open(), must be before vim.h */
#endif
#include "vim.h"
@@ -362,6 +359,7 @@ static struct vimvar
{VV_NAME("operator", VAR_STRING), VV_RO},
{VV_NAME("searchforward", VAR_NUMBER), 0},
{VV_NAME("oldfiles", VAR_LIST), 0},
{VV_NAME("windowid", VAR_NUMBER), VV_RO},
};
/* shorthand */
@@ -433,9 +431,9 @@ static listitem_T *listitem_alloc __ARGS((void));
static void listitem_free __ARGS((listitem_T *item));
static void listitem_remove __ARGS((list_T *l, listitem_T *item));
static long list_len __ARGS((list_T *l));
static int list_equal __ARGS((list_T *l1, list_T *l2, int ic));
static int dict_equal __ARGS((dict_T *d1, dict_T *d2, int ic));
static int tv_equal __ARGS((typval_T *tv1, typval_T *tv2, int ic));
static int list_equal __ARGS((list_T *l1, list_T *l2, int ic, int recursive));
static int dict_equal __ARGS((dict_T *d1, dict_T *d2, int ic, int recursive));
static int tv_equal __ARGS((typval_T *tv1, typval_T *tv2, int ic, int recursive));
static listitem_T *list_find __ARGS((list_T *l, long n));
static long list_find_nr __ARGS((list_T *l, long idx, int *errorp));
static long list_idx_of_item __ARGS((list_T *l, listitem_T *item));
@@ -2325,7 +2323,7 @@ ex_let_one(arg, tv, copy, endchars, op)
else if (endchars != NULL
&& vim_strchr(endchars, *skipwhite(arg)) == NULL)
EMSG(_(e_letunexp));
else
else if (!check_secure())
{
c1 = name[len];
name[len] = NUL;
@@ -4349,7 +4347,8 @@ eval4(arg, rettv, evaluate)
else
{
/* Compare two Lists for being equal or unequal. */
n1 = list_equal(rettv->vval.v_list, var2.vval.v_list, ic);
n1 = list_equal(rettv->vval.v_list, var2.vval.v_list,
ic, FALSE);
if (type == TYPE_NEQUAL)
n1 = !n1;
}
@@ -4378,7 +4377,8 @@ eval4(arg, rettv, evaluate)
else
{
/* Compare two Dictionaries for being equal or unequal. */
n1 = dict_equal(rettv->vval.v_dict, var2.vval.v_dict, ic);
n1 = dict_equal(rettv->vval.v_dict, var2.vval.v_dict,
ic, FALSE);
if (type == TYPE_NEQUAL)
n1 = !n1;
}
@@ -5913,10 +5913,11 @@ list_len(l)
* Return TRUE when two lists have exactly the same values.
*/
static int
list_equal(l1, l2, ic)
list_equal(l1, l2, ic, recursive)
list_T *l1;
list_T *l2;
int ic; /* ignore case for strings */
int recursive; /* TRUE when used recursively */
{
listitem_T *item1, *item2;
@@ -5930,7 +5931,7 @@ list_equal(l1, l2, ic)
for (item1 = l1->lv_first, item2 = l2->lv_first;
item1 != NULL && item2 != NULL;
item1 = item1->li_next, item2 = item2->li_next)
if (!tv_equal(&item1->li_tv, &item2->li_tv, ic))
if (!tv_equal(&item1->li_tv, &item2->li_tv, ic, recursive))
return FALSE;
return item1 == NULL && item2 == NULL;
}
@@ -5953,10 +5954,11 @@ dict_lookup(hi)
* Return TRUE when two dictionaries have exactly the same key/values.
*/
static int
dict_equal(d1, d2, ic)
dict_equal(d1, d2, ic, recursive)
dict_T *d1;
dict_T *d2;
int ic; /* ignore case for strings */
int recursive; /* TRUE when used recursively */
{
hashitem_T *hi;
dictitem_T *item2;
@@ -5977,7 +5979,7 @@ dict_equal(d1, d2, ic)
item2 = dict_find(d2, hi->hi_key, -1);
if (item2 == NULL)
return FALSE;
if (!tv_equal(&HI2DI(hi)->di_tv, &item2->di_tv, ic))
if (!tv_equal(&HI2DI(hi)->di_tv, &item2->di_tv, ic, recursive))
return FALSE;
--todo;
}
@@ -5985,41 +5987,54 @@ dict_equal(d1, d2, ic)
return TRUE;
}
static int tv_equal_recurse_limit;
/*
* Return TRUE if "tv1" and "tv2" have the same value.
* Compares the items just like "==" would compare them, but strings and
* numbers are different. Floats and numbers are also different.
*/
static int
tv_equal(tv1, tv2, ic)
tv_equal(tv1, tv2, ic, recursive)
typval_T *tv1;
typval_T *tv2;
int ic; /* ignore case */
int ic; /* ignore case */
int recursive; /* TRUE when used recursively */
{
char_u buf1[NUMBUFLEN], buf2[NUMBUFLEN];
char_u *s1, *s2;
static int recursive = 0; /* cach recursive loops */
static int recursive_cnt = 0; /* catch recursive loops */
int r;
if (tv1->v_type != tv2->v_type)
return FALSE;
/* Catch lists and dicts that have an endless loop by limiting
* recursiveness to 1000. We guess they are equal then. */
if (recursive >= 1000)
* recursiveness to a limit. We guess they are equal then.
* A fixed limit has the problem of still taking an awful long time.
* Reduce the limit every time running into it. That should work fine for
* deeply linked structures that are not recursively linked and catch
* recursiveness quickly. */
if (!recursive)
tv_equal_recurse_limit = 1000;
if (recursive_cnt >= tv_equal_recurse_limit)
{
--tv_equal_recurse_limit;
return TRUE;
}
switch (tv1->v_type)
{
case VAR_LIST:
++recursive;
r = list_equal(tv1->vval.v_list, tv2->vval.v_list, ic);
--recursive;
++recursive_cnt;
r = list_equal(tv1->vval.v_list, tv2->vval.v_list, ic, TRUE);
--recursive_cnt;
return r;
case VAR_DICT:
++recursive;
r = dict_equal(tv1->vval.v_dict, tv2->vval.v_dict, ic);
--recursive;
++recursive_cnt;
r = dict_equal(tv1->vval.v_dict, tv2->vval.v_dict, ic, TRUE);
--recursive_cnt;
return r;
case VAR_FUNC:
@@ -7804,7 +7819,7 @@ static struct fst
{"log10", 1, 1, f_log10},
#endif
{"map", 2, 2, f_map},
{"maparg", 1, 3, f_maparg},
{"maparg", 1, 4, f_maparg},
{"mapcheck", 1, 3, f_mapcheck},
{"match", 2, 4, f_match},
{"matchadd", 2, 4, f_matchadd},
@@ -9391,7 +9406,7 @@ f_count(argvars, rettv)
}
for ( ; li != NULL; li = li->li_next)
if (tv_equal(&li->li_tv, &argvars[1], ic))
if (tv_equal(&li->li_tv, &argvars[1], ic, FALSE))
++n;
}
}
@@ -9418,7 +9433,7 @@ f_count(argvars, rettv)
if (!HASHITEM_EMPTY(hi))
{
--todo;
if (tv_equal(&HI2DI(hi)->di_tv, &argvars[1], ic))
if (tv_equal(&HI2DI(hi)->di_tv, &argvars[1], ic, FALSE))
++n;
}
}
@@ -9859,7 +9874,7 @@ f_expand(argvars, rettv)
char_u *s;
int len;
char_u *errormsg;
int flags = WILD_SILENT|WILD_USE_NL|WILD_LIST_NOTFOUND;
int options = WILD_SILENT|WILD_USE_NL|WILD_LIST_NOTFOUND;
expand_T xpc;
int error = FALSE;
@@ -9877,12 +9892,14 @@ f_expand(argvars, rettv)
* for 'wildignore' and don't put matches for 'suffixes' at the end. */
if (argvars[1].v_type != VAR_UNKNOWN
&& get_tv_number_chk(&argvars[1], &error))
flags |= WILD_KEEP_ALL;
options |= WILD_KEEP_ALL;
if (!error)
{
ExpandInit(&xpc);
xpc.xp_context = EXPAND_FILES;
rettv->vval.v_string = ExpandOne(&xpc, s, NULL, flags, WILD_ALL);
if (p_wic)
options += WILD_ICASE;
rettv->vval.v_string = ExpandOne(&xpc, s, NULL, options, WILD_ALL);
}
else
rettv->vval.v_string = NULL;
@@ -11662,7 +11679,7 @@ f_glob(argvars, rettv)
typval_T *argvars;
typval_T *rettv;
{
int flags = WILD_SILENT|WILD_USE_NL;
int options = WILD_SILENT|WILD_USE_NL;
expand_T xpc;
int error = FALSE;
@@ -11670,14 +11687,16 @@ f_glob(argvars, rettv)
* for 'wildignore' and don't put matches for 'suffixes' at the end. */
if (argvars[1].v_type != VAR_UNKNOWN
&& get_tv_number_chk(&argvars[1], &error))
flags |= WILD_KEEP_ALL;
options |= WILD_KEEP_ALL;
rettv->v_type = VAR_STRING;
if (!error)
{
ExpandInit(&xpc);
xpc.xp_context = EXPAND_FILES;
if (p_wic)
options += WILD_ICASE;
rettv->vval.v_string = ExpandOne(&xpc, get_tv_string(&argvars[0]),
NULL, flags, WILD_ALL);
NULL, options, WILD_ALL);
}
else
rettv->vval.v_string = NULL;
@@ -12137,6 +12156,9 @@ f_has(argvars, rettv)
#ifdef FEAT_TRANSPARENCY
"transparency",
#endif
#if defined(FEAT_CLIPBOARD) && defined(FEAT_X11)
"unnamedplus",
#endif
#ifdef FEAT_USR_CMDS
"user-commands", /* was accidentally included in 5.4 */
"user_commands",
@@ -12593,7 +12615,7 @@ f_index(argvars, rettv)
}
for ( ; item != NULL; item = item->li_next, ++idx)
if (tv_equal(&item->li_tv, &argvars[1], ic))
if (tv_equal(&item->li_tv, &argvars[1], ic, FALSE))
{
rettv->vval.v_number = idx;
break;
@@ -13311,8 +13333,10 @@ get_maparg(argvars, rettv, exact)
char_u *keys_buf = NULL;
char_u *rhs;
int mode;
garray_T ga;
int abbr = FALSE;
int get_dict = FALSE;
mapblock_T *mp;
int buffer_local;
/* return empty string for failure */
rettv->v_type = VAR_STRING;
@@ -13326,7 +13350,11 @@ get_maparg(argvars, rettv, exact)
{
which = get_tv_string_buf_chk(&argvars[1], buf);
if (argvars[2].v_type != VAR_UNKNOWN)
{
abbr = get_tv_number(&argvars[2]);
if (argvars[3].v_type != VAR_UNKNOWN)
get_dict = get_tv_number(&argvars[3]);
}
}
else
which = (char_u *)"";
@@ -13336,19 +13364,34 @@ get_maparg(argvars, rettv, exact)
mode = get_map_mode(&which, 0);
keys = replace_termcodes(keys, &keys_buf, TRUE, TRUE, FALSE);
rhs = check_map(keys, mode, exact, FALSE, abbr);
rhs = check_map(keys, mode, exact, FALSE, abbr, &mp, &buffer_local);
vim_free(keys_buf);
if (rhs != NULL)
if (!get_dict)
{
ga_init(&ga);
ga.ga_itemsize = 1;
ga.ga_growsize = 40;
/* Return a string. */
if (rhs != NULL)
rettv->vval.v_string = str2special_save(rhs, FALSE);
while (*rhs != NUL)
ga_concat(&ga, str2special(&rhs, FALSE));
}
else if (rettv_dict_alloc(rettv) != FAIL && rhs != NULL)
{
/* Return a dictionary. */
char_u *lhs = str2special_save(mp->m_keys, TRUE);
char_u *mapmode = map_mode_to_chars(mp->m_mode);
dict_T *dict = rettv->vval.v_dict;
ga_append(&ga, NUL);
rettv->vval.v_string = (char_u *)ga.ga_data;
dict_add_nr_str(dict, "lhs", 0L, lhs);
dict_add_nr_str(dict, "rhs", 0L, mp->m_orig_str);
dict_add_nr_str(dict, "noremap", mp->m_noremap ? 1L : 0L , NULL);
dict_add_nr_str(dict, "expr", mp->m_expr ? 1L : 0L, NULL);
dict_add_nr_str(dict, "silent", mp->m_silent ? 1L : 0L, NULL);
dict_add_nr_str(dict, "sid", (long)mp->m_script_ID, NULL);
dict_add_nr_str(dict, "buffer", (long)buffer_local, NULL);
dict_add_nr_str(dict, "mode", 0L, mapmode);
vim_free(lhs);
vim_free(mapmode);
}
}
@@ -22548,18 +22591,21 @@ read_viminfo_varlist(virp, writing)
if (tab != NULL)
{
*tab++ = '\0'; /* isolate the variable name */
if (*tab == 'S') /* string var */
type = VAR_STRING;
switch (*tab)
{
case 'S': type = VAR_STRING; break;
#ifdef FEAT_FLOAT
else if (*tab == 'F')
type = VAR_FLOAT;
case 'F': type = VAR_FLOAT; break;
#endif
case 'D': type = VAR_DICT; break;
case 'L': type = VAR_LIST; break;
}
tab = vim_strchr(tab, '\t');
if (tab != NULL)
{
tv.v_type = type;
if (type == VAR_STRING)
if (type == VAR_STRING || type == VAR_DICT || type == VAR_LIST)
tv.vval.v_string = viminfo_readstring(virp,
(int)(tab - virp->vir_line + 1), TRUE);
#ifdef FEAT_FLOAT
@@ -22568,9 +22614,27 @@ read_viminfo_varlist(virp, writing)
#endif
else
tv.vval.v_number = atol((char *)tab + 1);
if (type == VAR_DICT || type == VAR_LIST)
{
typval_T *etv = eval_expr(tv.vval.v_string, NULL);
if (etv == NULL)
/* Failed to parse back the dict or list, use it as a
* string. */
tv.v_type = VAR_STRING;
else
{
vim_free(tv.vval.v_string);
tv = *etv;
}
}
set_var(virp->vir_line + 1, &tv, FALSE);
if (type == VAR_STRING)
if (tv.v_type == VAR_STRING)
vim_free(tv.vval.v_string);
else if (tv.v_type == VAR_DICT || tv.v_type == VAR_LIST)
clear_tv(&tv);
}
}
}
@@ -22612,8 +22676,10 @@ write_viminfo_varlist(fp)
case VAR_STRING: s = "STR"; break;
case VAR_NUMBER: s = "NUM"; break;
#ifdef FEAT_FLOAT
case VAR_FLOAT: s = "FLO"; break;
case VAR_FLOAT: s = "FLO"; break;
#endif
case VAR_DICT: s = "DIC"; break;
case VAR_LIST: s = "LIS"; break;
default: continue;
}
fprintf(fp, "!%s\t%s\t", this_var->di_key, s);
+61 -44
View File
@@ -11,10 +11,6 @@
* ex_cmds.c: some functions for command line commands
*/
#if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64)
# include "vimio.h" /* for mch_open(), must be before vim.h */
#endif
#include "vim.h"
#include "version.h"
@@ -323,7 +319,8 @@ sort_compare(s1, s2)
/* When sorting numbers "start_col_nr" is the number, not the column
* number. */
if (sort_nr)
result = l1.start_col_nr - l2.start_col_nr;
result = l1.start_col_nr == l2.start_col_nr ? 0
: l1.start_col_nr > l2.start_col_nr ? 1 : -1;
else
{
/* We need to copy one line into "sortbuf1", because there is no
@@ -482,7 +479,7 @@ ex_sort(eap)
* of the match, by temporarily terminating the string there */
s2 = s + end_col;
c = *s2;
(*s2) = 0;
*s2 = NUL;
/* Sorting on number: Store the number itself. */
p = s + start_col;
if (sort_hex)
@@ -491,9 +488,13 @@ ex_sort(eap)
s = skiptodigit(p);
if (s > p && s[-1] == '-')
--s; /* include preceding negative sign */
vim_str2nr(s, NULL, NULL, sort_oct, sort_hex,
&nrs[lnum - eap->line1].start_col_nr, NULL);
(*s2) = c;
if (*s == NUL)
/* empty line should sort before any number */
nrs[lnum - eap->line1].start_col_nr = -MAXLNUM;
else
vim_str2nr(s, NULL, NULL, sort_oct, sort_hex,
&nrs[lnum - eap->line1].start_col_nr, NULL);
*s2 = c;
}
else
{
@@ -2700,6 +2701,10 @@ do_write(eap)
TRUE);
do_modelines(0);
}
/* Autocommands may have changed buffer names, esp. when
* 'autochdir' is set. */
fname = curbuf->b_sfname;
#endif
}
@@ -6556,8 +6561,7 @@ typedef struct sign sign_T;
struct sign
{
sign_T *sn_next; /* next sign in list */
int sn_typenr; /* type number of sign (negative if not equal
to name) */
int sn_typenr; /* type number of sign */
char_u *sn_name; /* name of sign */
char_u *sn_icon; /* name of pixmap */
#ifdef FEAT_SIGN_ICONS
@@ -6569,7 +6573,7 @@ struct sign
};
static sign_T *first_sign = NULL;
static int last_sign_typenr = MAX_TYPENR; /* is decremented */
static int next_sign_typenr = 1;
static int sign_cmd_idx __ARGS((char_u *begin_cmd, char_u *end_cmd));
static void sign_list_defined __ARGS((sign_T *sp));
@@ -6651,9 +6655,14 @@ ex_sign(eap)
EMSG(_("E156: Missing sign name"));
else
{
/* Isolate the sign name. If it's a number skip leading zeroes,
* so that "099" and "99" are the same sign. But keep "0". */
p = skiptowhite(arg);
if (*p != NUL)
*p++ = NUL;
while (arg[0] == '0' && arg[1] != NUL)
++arg;
sp_prev = NULL;
for (sp = first_sign; sp != NULL; sp = sp->sn_next)
{
@@ -6666,46 +6675,52 @@ ex_sign(eap)
/* ":sign define {name} ...": define a sign */
if (sp == NULL)
{
sign_T *lp;
int start = next_sign_typenr;
/* Allocate a new sign. */
sp = (sign_T *)alloc_clear((unsigned)sizeof(sign_T));
if (sp == NULL)
return;
/* Check that next_sign_typenr is not already being used.
* This only happens after wrapping around. Hopefully
* another one got deleted and we can use its number. */
for (lp = first_sign; lp != NULL; )
{
if (lp->sn_typenr == next_sign_typenr)
{
++next_sign_typenr;
if (next_sign_typenr == MAX_TYPENR)
next_sign_typenr = 1;
if (next_sign_typenr == start)
{
vim_free(sp);
EMSG(_("E612: Too many signs defined"));
return;
}
lp = first_sign; /* start all over */
continue;
}
lp = lp->sn_next;
}
sp->sn_typenr = next_sign_typenr;
if (++next_sign_typenr == MAX_TYPENR)
next_sign_typenr = 1; /* wrap around */
sp->sn_name = vim_strsave(arg);
if (sp->sn_name == NULL) /* out of memory */
{
vim_free(sp);
return;
}
/* add the new sign to the list of signs */
if (sp_prev == NULL)
first_sign = sp;
else
sp_prev->sn_next = sp;
sp->sn_name = vim_strnsave(arg, (int)(p - arg));
/* If the name is a number use that for the typenr,
* otherwise use a negative number. */
if (VIM_ISDIGIT(*arg))
sp->sn_typenr = atoi((char *)arg);
else
{
sign_T *lp;
int start = last_sign_typenr;
for (lp = first_sign; lp != NULL; lp = lp->sn_next)
{
if (lp->sn_typenr == last_sign_typenr)
{
--last_sign_typenr;
if (last_sign_typenr == 0)
last_sign_typenr = MAX_TYPENR;
if (last_sign_typenr == start)
{
EMSG(_("E612: Too many signs defined"));
return;
}
lp = first_sign;
continue;
}
}
sp->sn_typenr = last_sign_typenr--;
if (last_sign_typenr == 0)
last_sign_typenr = MAX_TYPENR; /* wrap around */
}
}
/* set values for a defined sign. */
@@ -6883,6 +6898,8 @@ ex_sign(eap)
arg = skiptowhite(arg);
if (*arg != NUL)
*arg++ = NUL;
while (sign_name[0] == '0' && sign_name[1] != NUL)
++sign_name;
}
else if (STRNCMP(arg, "file=", 5) == 0)
{
-4
View File
@@ -11,10 +11,6 @@
* ex_cmds2.c: some more functions for command line commands
*/
#if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64)
# include "vimio.h" /* for mch_open(), must be before vim.h */
#endif
#include "vim.h"
#include "version.h"
+100 -90
View File
@@ -740,7 +740,7 @@ do_cmdline_cmd(cmd)
* do_cmdline(): execute one Ex command line
*
* 1. Execute "cmdline" when it is not NULL.
* If "cmdline" is NULL, or more lines are needed, getline() is used.
* If "cmdline" is NULL, or more lines are needed, fgetline() is used.
* 2. Split up in parts separated with '|'.
*
* This function can be called recursively!
@@ -748,7 +748,7 @@ do_cmdline_cmd(cmd)
* flags:
* DOCMD_VERBOSE - The command will be included in the error message.
* DOCMD_NOWAIT - Don't call wait_return() and friends.
* DOCMD_REPEAT - Repeat execution until getline() returns NULL.
* DOCMD_REPEAT - Repeat execution until fgetline() returns NULL.
* DOCMD_KEYTYPED - Don't reset KeyTyped.
* DOCMD_EXCRESET - Reset the exception environment (used for debugging).
* DOCMD_KEEPLINE - Store first typed line (for repeating with ".").
@@ -756,15 +756,15 @@ do_cmdline_cmd(cmd)
* return FAIL if cmdline could not be executed, OK otherwise
*/
int
do_cmdline(cmdline, getline, cookie, flags)
do_cmdline(cmdline, fgetline, cookie, flags)
char_u *cmdline;
char_u *(*getline) __ARGS((int, void *, int));
void *cookie; /* argument for getline() */
char_u *(*fgetline) __ARGS((int, void *, int));
void *cookie; /* argument for fgetline() */
int flags;
{
char_u *next_cmdline; /* next cmd to execute */
char_u *cmdline_copy = NULL; /* copy of cmd line */
int used_getline = FALSE; /* used "getline" to obtain command */
int used_getline = FALSE; /* used "fgetline" to obtain command */
static int recursive = 0; /* recursive depth */
int msg_didout_before_start = 0;
int count = 0; /* line number count */
@@ -782,14 +782,14 @@ do_cmdline(cmdline, getline, cookie, flags)
struct msglist **saved_msg_list = NULL;
struct msglist *private_msg_list;
/* "getline" and "cookie" passed to do_one_cmd() */
/* "fgetline" and "cookie" passed to do_one_cmd() */
char_u *(*cmd_getline) __ARGS((int, void *, int));
void *cmd_cookie;
struct loop_cookie cmd_loop_cookie;
void *real_cookie;
int getline_is_func;
#else
# define cmd_getline getline
# define cmd_getline fgetline
# define cmd_cookie cookie
#endif
static int call_depth = 0; /* recursiveness */
@@ -829,10 +829,10 @@ do_cmdline(cmdline, getline, cookie, flags)
cstack.cs_lflags = 0;
ga_init2(&lines_ga, (int)sizeof(wcmd_T), 10);
real_cookie = getline_cookie(getline, cookie);
real_cookie = getline_cookie(fgetline, cookie);
/* Inside a function use a higher nesting level. */
getline_is_func = getline_equal(getline, cookie, get_func_line);
getline_is_func = getline_equal(fgetline, cookie, get_func_line);
if (getline_is_func && ex_nesting_level == func_level(real_cookie))
++ex_nesting_level;
@@ -844,7 +844,7 @@ do_cmdline(cmdline, getline, cookie, flags)
breakpoint = func_breakpoint(real_cookie);
dbg_tick = func_dbg_tick(real_cookie);
}
else if (getline_equal(getline, cookie, getsourceline))
else if (getline_equal(fgetline, cookie, getsourceline))
{
fname = sourcing_name;
breakpoint = source_breakpoint(real_cookie);
@@ -888,7 +888,8 @@ do_cmdline(cmdline, getline, cookie, flags)
* KeyTyped is only set when calling vgetc(). Reset it here when not
* calling vgetc() (sourced command lines).
*/
if (!(flags & DOCMD_KEYTYPED) && !getline_equal(getline, cookie, getexline))
if (!(flags & DOCMD_KEYTYPED)
&& !getline_equal(fgetline, cookie, getexline))
KeyTyped = FALSE;
/*
@@ -901,7 +902,7 @@ do_cmdline(cmdline, getline, cookie, flags)
do
{
#ifdef FEAT_EVAL
getline_is_func = getline_equal(getline, cookie, get_func_line);
getline_is_func = getline_equal(fgetline, cookie, get_func_line);
#endif
/* stop skipping cmds for an error msg after all endif/while/for */
@@ -916,7 +917,7 @@ do_cmdline(cmdline, getline, cookie, flags)
/*
* 1. If repeating a line in a loop, get a line from lines_ga.
* 2. If no line given: Get an allocated line with getline().
* 2. If no line given: Get an allocated line with fgetline().
* 3. If a line is given: Make a copy, so we can mess with it.
*/
@@ -945,12 +946,12 @@ do_cmdline(cmdline, getline, cookie, flags)
}
#ifdef FEAT_PROFILE
else if (do_profiling == PROF_YES
&& getline_equal(getline, cookie, getsourceline))
&& getline_equal(fgetline, cookie, getsourceline))
script_line_end();
#endif
/* Check if a sourced file hit a ":finish" command. */
if (source_finished(getline, cookie))
if (source_finished(fgetline, cookie))
{
retval = FAIL;
break;
@@ -961,7 +962,7 @@ do_cmdline(cmdline, getline, cookie, flags)
&& *dbg_tick != debug_tick)
{
*breakpoint = dbg_find_breakpoint(
getline_equal(getline, cookie, getsourceline),
getline_equal(fgetline, cookie, getsourceline),
fname, sourcing_lnum);
*dbg_tick = debug_tick;
}
@@ -976,7 +977,7 @@ do_cmdline(cmdline, getline, cookie, flags)
dbg_breakpoint(fname, sourcing_lnum);
/* Find next breakpoint. */
*breakpoint = dbg_find_breakpoint(
getline_equal(getline, cookie, getsourceline),
getline_equal(fgetline, cookie, getsourceline),
fname, sourcing_lnum);
*dbg_tick = debug_tick;
}
@@ -985,7 +986,7 @@ do_cmdline(cmdline, getline, cookie, flags)
{
if (getline_is_func)
func_line_start(real_cookie);
else if (getline_equal(getline, cookie, getsourceline))
else if (getline_equal(fgetline, cookie, getsourceline))
script_line_start();
}
# endif
@@ -994,7 +995,7 @@ do_cmdline(cmdline, getline, cookie, flags)
if (cstack.cs_looplevel > 0)
{
/* Inside a while/for loop we need to store the lines and use them
* again. Pass a different "getline" function to do_one_cmd()
* again. Pass a different "fgetline" function to do_one_cmd()
* below, so that it stores lines in or reads them from
* "lines_ga". Makes it possible to define a function inside a
* while/for loop. */
@@ -1002,27 +1003,27 @@ do_cmdline(cmdline, getline, cookie, flags)
cmd_cookie = (void *)&cmd_loop_cookie;
cmd_loop_cookie.lines_gap = &lines_ga;
cmd_loop_cookie.current_line = current_line;
cmd_loop_cookie.getline = getline;
cmd_loop_cookie.getline = fgetline;
cmd_loop_cookie.cookie = cookie;
cmd_loop_cookie.repeating = (current_line < lines_ga.ga_len);
}
else
{
cmd_getline = getline;
cmd_getline = fgetline;
cmd_cookie = cookie;
}
#endif
/* 2. If no line given, get an allocated line with getline(). */
/* 2. If no line given, get an allocated line with fgetline(). */
if (next_cmdline == NULL)
{
/*
* Need to set msg_didout for the first line after an ":if",
* otherwise the ":if" will be overwritten.
*/
if (count == 1 && getline_equal(getline, cookie, getexline))
if (count == 1 && getline_equal(fgetline, cookie, getexline))
msg_didout = TRUE;
if (getline == NULL || (next_cmdline = getline(':', cookie,
if (fgetline == NULL || (next_cmdline = fgetline(':', cookie,
#ifdef FEAT_EVAL
cstack.cs_idx < 0 ? 0 : (cstack.cs_idx + 1) * 2
#else
@@ -1149,7 +1150,7 @@ do_cmdline(cmdline, getline, cookie, flags)
* If the command was typed, remember it for the ':' register.
* Do this AFTER executing the command to make :@: work.
*/
if (getline_equal(getline, cookie, getexline)
if (getline_equal(fgetline, cookie, getexline)
&& new_last_cmdline != NULL)
{
vim_free(last_cmdline);
@@ -1170,7 +1171,7 @@ do_cmdline(cmdline, getline, cookie, flags)
#ifdef FEAT_EVAL
/* reset did_emsg for a function that is not aborted by an error */
if (did_emsg && !force_abort
&& getline_equal(getline, cookie, get_func_line)
&& getline_equal(fgetline, cookie, get_func_line)
&& !func_has_abort(real_cookie))
did_emsg = FALSE;
@@ -1209,7 +1210,7 @@ do_cmdline(cmdline, getline, cookie, flags)
if (breakpoint != NULL)
{
*breakpoint = dbg_find_breakpoint(
getline_equal(getline, cookie, getsourceline),
getline_equal(fgetline, cookie, getsourceline),
fname,
((wcmd_T *)lines_ga.ga_data)[current_line].lnum-1);
*dbg_tick = debug_tick;
@@ -1303,8 +1304,8 @@ do_cmdline(cmdline, getline, cookie, flags)
#endif
)
&& !(did_emsg && used_getline
&& (getline_equal(getline, cookie, getexmodeline)
|| getline_equal(getline, cookie, getexline)))
&& (getline_equal(fgetline, cookie, getexmodeline)
|| getline_equal(fgetline, cookie, getexline)))
&& (next_cmdline != NULL
#ifdef FEAT_EVAL
|| cstack.cs_idx >= 0
@@ -1323,9 +1324,9 @@ do_cmdline(cmdline, getline, cookie, flags)
* unclosed conditional.
*/
if (!got_int && !did_throw
&& ((getline_equal(getline, cookie, getsourceline)
&& !source_finished(getline, cookie))
|| (getline_equal(getline, cookie, get_func_line)
&& ((getline_equal(fgetline, cookie, getsourceline)
&& !source_finished(fgetline, cookie))
|| (getline_equal(fgetline, cookie, get_func_line)
&& !func_has_ended(real_cookie))))
{
if (cstack.cs_flags[cstack.cs_idx] & CSF_TRY)
@@ -1361,7 +1362,7 @@ do_cmdline(cmdline, getline, cookie, flags)
/* If a missing ":endtry", ":endwhile", ":endfor", or ":endif" or a memory
* lack was reported above and the error message is to be converted to an
* exception, do this now after rewinding the cstack. */
do_errthrow(&cstack, getline_equal(getline, cookie, get_func_line)
do_errthrow(&cstack, getline_equal(fgetline, cookie, get_func_line)
? (char_u *)"endfunction" : (char_u *)NULL);
if (trylevel == 0)
@@ -1456,9 +1457,9 @@ do_cmdline(cmdline, getline, cookie, flags)
*/
if (did_throw)
need_rethrow = TRUE;
if ((getline_equal(getline, cookie, getsourceline)
if ((getline_equal(fgetline, cookie, getsourceline)
&& ex_nesting_level > source_level(real_cookie))
|| (getline_equal(getline, cookie, get_func_line)
|| (getline_equal(fgetline, cookie, get_func_line)
&& ex_nesting_level > func_level(real_cookie) + 1))
{
if (!did_throw)
@@ -1467,16 +1468,16 @@ do_cmdline(cmdline, getline, cookie, flags)
else
{
/* When leaving a function, reduce nesting level. */
if (getline_equal(getline, cookie, get_func_line))
if (getline_equal(fgetline, cookie, get_func_line))
--ex_nesting_level;
/*
* Go to debug mode when returning from a function in which we are
* single-stepping.
*/
if ((getline_equal(getline, cookie, getsourceline)
|| getline_equal(getline, cookie, get_func_line))
if ((getline_equal(fgetline, cookie, getsourceline)
|| getline_equal(fgetline, cookie, get_func_line))
&& ex_nesting_level + 1 <= debug_break_level)
do_debug(getline_equal(getline, cookie, getsourceline)
do_debug(getline_equal(fgetline, cookie, getsourceline)
? (char_u *)_("End of sourced file")
: (char_u *)_("End of function"));
}
@@ -2878,8 +2879,10 @@ find_command(eap, full)
}
#ifdef FEAT_USR_CMDS
/* Look for a user defined command as a last resort */
if (eap->cmdidx == CMD_SIZE && *eap->cmd >= 'A' && *eap->cmd <= 'Z')
/* Look for a user defined command as a last resort. Let ":Print" be
* overruled by a user defined command. */
if ((eap->cmdidx == CMD_SIZE || eap->cmdidx == CMD_Print)
&& *eap->cmd >= 'A' && *eap->cmd <= 'Z')
{
/* User defined commands may contain digits. */
while (ASCII_ISALNUM(*p))
@@ -4539,12 +4542,14 @@ expand_filename(eap, cmdlinep, errormsgp)
else /* n == 2 */
{
expand_T xpc;
int options = WILD_LIST_NOTFOUND|WILD_ADD_SLASH;
ExpandInit(&xpc);
xpc.xp_context = EXPAND_FILES;
if (p_wic)
options += WILD_ICASE;
p = ExpandOne(&xpc, eap->arg, NULL,
WILD_LIST_NOTFOUND|WILD_ADD_SLASH,
WILD_EXPAND_FREE);
options, WILD_EXPAND_FREE);
if (p == NULL)
return FAIL;
}
@@ -5606,6 +5611,7 @@ ex_command(eap)
int compl = EXPAND_NOTHING;
char_u *compl_arg = NULL;
int has_attr = (eap->arg[0] == '-');
int name_len;
p = eap->arg;
@@ -5631,6 +5637,7 @@ ex_command(eap)
return;
}
end = p;
name_len = (int)(end - name);
/* If there is nothing after the name, and no attributes were specified,
* we are listing commands
@@ -5645,6 +5652,13 @@ ex_command(eap)
EMSG(_("E183: User defined commands must start with an uppercase letter"));
return;
}
else if ((name_len == 1 && *name == 'X')
|| (name_len <= 4
&& STRNCMP(name, "Next", name_len > 4 ? 4 : name_len) == 0))
{
EMSG(_("E841: Reserved name, cannot be used for user defined command"));
return;
}
else
uc_add_command(name, end - name, p, argt, def, flags, compl, compl_arg,
eap->forceit);
@@ -9414,7 +9428,7 @@ ex_findpat(eap)
ex_ptag(eap)
exarg_T *eap;
{
g_do_tagpreview = p_pvh;
g_do_tagpreview = p_pvh; /* will be reset to 0 in ex_tag_cmd() */
ex_tag_cmd(eap, cmdnames[eap->cmdidx].cmd_name + 1);
}
@@ -9546,17 +9560,23 @@ find_cmdline_var(src, usedlen)
#define SPEC_CFILE 4
"<sfile>", /* ":so" file name */
#define SPEC_SFILE 5
"<slnum>", /* ":so" file line number */
#define SPEC_SLNUM 6
#ifdef FEAT_AUTOCMD
"<afile>", /* autocommand file name */
# define SPEC_AFILE 6
# define SPEC_AFILE 7
"<abuf>", /* autocommand buffer number */
# define SPEC_ABUF 7
# define SPEC_ABUF 8
"<amatch>", /* autocommand match name */
# define SPEC_AMATCH 8
# define SPEC_AMATCH 9
#endif
#ifdef FEAT_CLIENTSERVER
"<client>"
# define SPEC_CLIENT 9
# ifdef FEAT_AUTOCMD
# define SPEC_CLIENT 10
# else
# define SPEC_CLIENT 7
# endif
#endif
};
@@ -9581,6 +9601,7 @@ find_cmdline_var(src, usedlen)
* '<cWORD>' to WORD under the cursor
* '<cfile>' to path name under the cursor
* '<sfile>' to sourced file name
* '<slnum>' to sourced file line number
* '<afile>' to file name for autocommand
* '<abuf>' to buffer number for autocommand
* '<amatch>' to matching name for autocommand
@@ -9612,10 +9633,7 @@ eval_vars(src, srcstart, usedlen, lnump, errormsg, escaped)
#ifdef FEAT_MODIFY_FNAME
int skip_mod = FALSE;
#endif
#if defined(FEAT_AUTOCMD) || defined(FEAT_CLIENTSERVER)
char_u strbuf[30];
#endif
*errormsg = NULL;
if (escaped != NULL)
@@ -9804,6 +9822,15 @@ eval_vars(src, srcstart, usedlen, lnump, errormsg, escaped)
return NULL;
}
break;
case SPEC_SLNUM: /* line in file for ":so" command */
if (sourcing_name == NULL || sourcing_lnum == 0)
{
*errormsg = (char_u *)_("E842: no line number to use for \"<slnum>\"");
return NULL;
}
sprintf((char *)strbuf, "%ld", (long)sourcing_lnum);
result = strbuf;
break;
#if defined(FEAT_CLIENTSERVER)
case SPEC_CLIENT: /* Source of last submitted input */
sprintf((char *)strbuf, PRINTF_HEX_LONG_U,
@@ -10736,7 +10763,7 @@ ses_fname(fd, buf, flagp)
* Write a file name to the session file.
* Takes care of the "slash" option in 'sessionoptions' and escapes special
* characters.
* Returns FAIL if writing fails.
* Returns FAIL if writing fails or out of memory.
*/
static int
ses_put_fname(fd, name, flagp)
@@ -10745,49 +10772,32 @@ ses_put_fname(fd, name, flagp)
unsigned *flagp;
{
char_u *sname;
char_u *p;
int retval = OK;
int c;
sname = home_replace_save(NULL, name);
if (sname != NULL)
name = sname;
while (*name != NUL)
{
#ifdef FEAT_MBYTE
{
int l;
if (sname == NULL)
return FAIL;
if (has_mbyte && (l = (*mb_ptr2len)(name)) > 1)
{
/* copy a multibyte char */
while (--l >= 0)
{
if (putc(*name, fd) != *name)
retval = FAIL;
++name;
}
continue;
}
}
#endif
c = *name++;
if (c == '\\' && (*flagp & SSOP_SLASH))
/* change a backslash to a forward slash */
c = '/';
else if ((vim_strchr(escape_chars, c) != NULL
#ifdef BACKSLASH_IN_FILENAME
&& c != '\\'
#endif
) || c == '#' || c == '%')
{
/* escape a special character with a backslash */
if (putc('\\', fd) != '\\')
retval = FAIL;
}
if (putc(c, fd) != c)
retval = FAIL;
if (*flagp & SSOP_SLASH)
{
/* change all backslashes to forward slashes */
for (p = sname; *p != NUL; mb_ptr_adv(p))
if (*p == '\\')
*p = '/';
}
/* escapse special characters */
p = vim_strsave_fnameescape(sname, FALSE);
vim_free(sname);
if (p == NULL)
return FAIL;
/* write the result */
if (fputs((char *)p, fd) < 0)
retval = FAIL;
vim_free(p);
return retval;
}
+42 -20
View File
@@ -688,28 +688,35 @@ getcmdline(firstc, count, indent)
p = get_expr_line();
--textlock;
restore_cmdline(&save_ccline);
len = (int)STRLEN(p);
if (p != NULL && realloc_cmdbuff(len + 1) == OK)
if (p != NULL)
{
ccline.cmdlen = len;
STRCPY(ccline.cmdbuff, p);
vim_free(p);
len = (int)STRLEN(p);
if (realloc_cmdbuff(len + 1) == OK)
{
ccline.cmdlen = len;
STRCPY(ccline.cmdbuff, p);
vim_free(p);
/* Restore the cursor or use the position set with
* set_cmdline_pos(). */
if (new_cmdpos > ccline.cmdlen)
ccline.cmdpos = ccline.cmdlen;
else
ccline.cmdpos = new_cmdpos;
/* Restore the cursor or use the position set with
* set_cmdline_pos(). */
if (new_cmdpos > ccline.cmdlen)
ccline.cmdpos = ccline.cmdlen;
else
ccline.cmdpos = new_cmdpos;
KeyTyped = FALSE; /* Don't do p_wc completion. */
redrawcmd();
goto cmdline_changed;
KeyTyped = FALSE; /* Don't do p_wc completion. */
redrawcmd();
goto cmdline_changed;
}
}
}
beep_flush();
c = ESC;
got_int = FALSE; /* don't abandon the command line */
did_emsg = FALSE;
emsg_on_display = FALSE;
redrawcmd();
goto cmdline_not_changed;
}
#endif
else
@@ -3343,10 +3350,14 @@ nextwild(xp, type, options)
p2 = NULL;
else
{
int use_options = options |
WILD_HOME_REPLACE|WILD_ADD_SLASH|WILD_SILENT|WILD_ESCAPE;
if (p_wic)
use_options += WILD_ICASE;
p2 = ExpandOne(xp, p1,
vim_strnsave(&ccline.cmdbuff[i], xp->xp_pattern_len),
WILD_HOME_REPLACE|WILD_ADD_SLASH|WILD_SILENT|WILD_ESCAPE
|options, type);
use_options, type);
vim_free(p1);
/* longest match: make sure it is not shorter, happens with :help */
if (p2 != NULL && type == WILD_LONGEST)
@@ -3432,6 +3443,7 @@ nextwild(xp, type, options)
* options = WILD_KEEP_ALL: don't remove 'wildignore' entries
* options = WILD_SILENT: don't print warning messages
* options = WILD_ESCAPE: put backslash before special chars
* options = WILD_ICASE: ignore case for files
*
* The variables xp->xp_context and xp->xp_backslash must have been set!
*/
@@ -4365,6 +4377,7 @@ expand_cmdline(xp, str, col, matchcount, matches)
char_u ***matches; /* return: array of pointers to matches */
{
char_u *file_str = NULL;
int options = WILD_ADD_SLASH|WILD_SILENT;
if (xp->xp_context == EXPAND_UNSUCCESSFUL)
{
@@ -4383,9 +4396,11 @@ expand_cmdline(xp, str, col, matchcount, matches)
if (file_str == NULL)
return EXPAND_UNSUCCESSFUL;
if (p_wic)
options += WILD_ICASE;
/* find all files that match the description */
if (ExpandFromContext(xp, file_str, matchcount, matches,
WILD_ADD_SLASH|WILD_SILENT) == FAIL)
if (ExpandFromContext(xp, file_str, matchcount, matches, options) == FAIL)
{
*matchcount = 0;
*matches = NULL;
@@ -4437,7 +4452,7 @@ ExpandFromContext(xp, pat, num_file, file, options)
char_u *pat;
int *num_file;
char_u ***file;
int options;
int options; /* EW_ flags */
{
#ifdef FEAT_CMDL_COMPL
regmatch_T regmatch;
@@ -4491,6 +4506,9 @@ ExpandFromContext(xp, pat, num_file, file, options)
flags |= (EW_FILE | EW_PATH);
else
flags = (flags | EW_DIR) & ~EW_FILE;
if (options & WILD_ICASE)
flags |= EW_ICASE;
/* Expand wildcards, supporting %:h and the like. */
ret = expand_wildcards_eval(&pat, num_file, file, flags);
if (free_pat)
@@ -4758,7 +4776,11 @@ expand_shellcmd(filepat, num_file, file, flagsarg)
|| (pat[1] == '.' && vim_ispathsep(pat[2])))))
path = (char_u *)".";
else
{
path = vim_getenv((char_u *)"PATH", &mustfree);
if (path == NULL)
path = (char_u *)"";
}
/*
* Go over all directories in $PATH. Expand matches in that directory and
+61 -25
View File
@@ -11,14 +11,6 @@
* fileio.c: read from and write to a file
*/
#if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64)
# include "vimio.h" /* for lseek(), must be before vim.h */
#endif
#if defined __EMX__
# include "vimio.h" /* for mktemp(), CJW 1997-12-03 */
#endif
#include "vim.h"
#if defined(__TANDEM) || defined(__MINT__)
@@ -918,7 +910,7 @@ readfile(fname, sfname, from, lines_to_skip, lines_to_read, eap, flags)
{
/* Read the first line (and a bit more). Immediately rewind to
* the start of the file. If the read() fails "len" is -1. */
len = vim_read(fd, firstline, 80);
len = read_eintr(fd, firstline, 80);
lseek(fd, (off_t)0L, SEEK_SET);
for (p = firstline; p < firstline + len; ++p)
if (*p >= 0x80)
@@ -1373,7 +1365,7 @@ retry:
/*
* Read bytes from the file.
*/
size = vim_read(fd, ptr, size);
size = read_eintr(fd, ptr, size);
}
if (size <= 0)
@@ -4000,7 +3992,7 @@ buf_write(buf, fname, sfname, start, end, eap, append, forceit,
#ifdef HAS_BW_FLAGS
write_info.bw_flags = FIO_NOCONVERT;
#endif
while ((write_info.bw_len = vim_read(fd, copybuf,
while ((write_info.bw_len = read_eintr(fd, copybuf,
BUFSIZE)) > 0)
{
if (buf_write_bytes(&write_info) == FAIL)
@@ -4813,7 +4805,7 @@ restore_backup:
#ifdef HAS_BW_FLAGS
write_info.bw_flags = FIO_NOCONVERT;
#endif
while ((write_info.bw_len = vim_read(fd, smallbuf,
while ((write_info.bw_len = read_eintr(fd, smallbuf,
SMBUFSIZE)) > 0)
if (buf_write_bytes(&write_info) == FAIL)
break;
@@ -5334,7 +5326,7 @@ time_differs(t1, t2)
/*
* Call write() to write a number of bytes to the file.
* Also handles encryption and 'encoding' conversion.
* Handles encryption and 'encoding' conversion.
*
* Return FAIL for failure, OK otherwise.
*/
@@ -5706,16 +5698,8 @@ buf_write_bytes(ip)
crypt_encode(buf, len, buf);
#endif
/* Repeat the write(), it may be interrupted by a signal. */
while (len > 0)
{
wlen = vim_write(ip->bw_fd, buf, len);
if (wlen <= 0) /* error! */
return FAIL;
len -= wlen;
buf += wlen;
}
return OK;
wlen = write_eintr(ip->bw_fd, buf, len);
return (wlen < len) ? FAIL : OK;
}
#ifdef FEAT_MBYTE
@@ -6667,8 +6651,8 @@ vim_rename(from, to)
return -1;
}
while ((n = vim_read(fd_in, buffer, BUFSIZE)) > 0)
if (vim_write(fd_out, buffer, n) != n)
while ((n = read_eintr(fd_in, buffer, BUFSIZE)) > 0)
if (write_eintr(fd_out, buffer, n) != n)
{
errmsg = _("E208: Error writing to \"%s\"");
break;
@@ -10342,3 +10326,55 @@ file_pat_to_reg_pat(pat, pat_end, allow_dirs, no_bslash)
}
return reg_pat;
}
#if defined(EINTR) || defined(PROTO)
/*
* Version of read() that retries when interrupted by EINTR (possibly
* by a SIGWINCH).
*/
long
read_eintr(fd, buf, bufsize)
int fd;
void *buf;
size_t bufsize;
{
long ret;
for (;;)
{
ret = vim_read(fd, buf, bufsize);
if (ret >= 0 || errno != EINTR)
break;
}
return ret;
}
/*
* Version of write() that retries when interrupted by EINTR (possibly
* by a SIGWINCH).
*/
long
write_eintr(fd, buf, bufsize)
int fd;
void *buf;
size_t bufsize;
{
long ret = 0;
long wlen;
/* Repeat the write() so long it didn't fail, other than being interrupted
* by a signal. */
while (ret < (long)bufsize)
{
wlen = vim_write(fd, (char *)buf + ret, bufsize - ret);
if (wlen < 0)
{
if (errno != EINTR)
break;
}
else
ret += wlen;
}
return ret;
}
#endif
+80 -50
View File
@@ -3168,6 +3168,7 @@ do_map(maptype, arg, mode, abbrev)
int expr = FALSE;
#endif
int noremap;
char_u *orig_rhs;
keys = arg;
map_table = maphash;
@@ -3266,6 +3267,7 @@ do_map(maptype, arg, mode, abbrev)
}
if (*p != NUL)
*p++ = NUL;
p = skipwhite(p);
rhs = p;
hasarg = (*rhs != NUL);
@@ -3288,6 +3290,7 @@ do_map(maptype, arg, mode, abbrev)
*/
if (haskey)
keys = replace_termcodes(keys, &keys_buf, TRUE, TRUE, special);
orig_rhs = rhs;
if (hasarg)
{
if (STRICMP(rhs, "<nop>") == 0) /* "<Nop>" means nothing */
@@ -3298,7 +3301,7 @@ do_map(maptype, arg, mode, abbrev)
#ifdef FEAT_FKMAP
/*
* when in right-to-left mode and alternate keymap option set,
* When in right-to-left mode and alternate keymap option set,
* reverse the character flow in the rhs in Farsi.
*/
if (p_altkeymap && curwin->w_p_rl)
@@ -3556,6 +3559,8 @@ do_map(maptype, arg, mode, abbrev)
}
vim_free(mp->m_str);
mp->m_str = newstr;
vim_free(mp->m_orig_str);
mp->m_orig_str = vim_strsave(orig_rhs);
mp->m_noremap = noremap;
mp->m_silent = silent;
mp->m_mode = mode;
@@ -3633,10 +3638,12 @@ do_map(maptype, arg, mode, abbrev)
mp->m_keys = vim_strsave(keys);
mp->m_str = vim_strsave(rhs);
mp->m_orig_str = vim_strsave(orig_rhs);
if (mp->m_keys == NULL || mp->m_str == NULL)
{
vim_free(mp->m_keys);
vim_free(mp->m_str);
vim_free(mp->m_orig_str);
vim_free(mp);
retval = 4; /* no mem */
goto theend;
@@ -3682,6 +3689,7 @@ map_free(mpp)
mp = *mpp;
vim_free(mp->m_keys);
vim_free(mp->m_str);
vim_free(mp->m_orig_str);
*mpp = mp->m_next;
vim_free(mp);
}
@@ -3851,12 +3859,57 @@ map_clear_int(buf, mode, local, abbr)
}
}
/*
* Return characters to represent the map mode in an allocated string.
* Returns NULL when out of memory.
*/
char_u *
map_mode_to_chars(mode)
int mode;
{
garray_T mapmode;
ga_init2(&mapmode, 1, 7);
if ((mode & (INSERT + CMDLINE)) == INSERT + CMDLINE)
ga_append(&mapmode, '!'); /* :map! */
else if (mode & INSERT)
ga_append(&mapmode, 'i'); /* :imap */
else if (mode & LANGMAP)
ga_append(&mapmode, 'l'); /* :lmap */
else if (mode & CMDLINE)
ga_append(&mapmode, 'c'); /* :cmap */
else if ((mode & (NORMAL + VISUAL + SELECTMODE + OP_PENDING))
== NORMAL + VISUAL + SELECTMODE + OP_PENDING)
ga_append(&mapmode, ' '); /* :map */
else
{
if (mode & NORMAL)
ga_append(&mapmode, 'n'); /* :nmap */
if (mode & OP_PENDING)
ga_append(&mapmode, 'o'); /* :omap */
if ((mode & (VISUAL + SELECTMODE)) == VISUAL + SELECTMODE)
ga_append(&mapmode, 'v'); /* :vmap */
else
{
if (mode & VISUAL)
ga_append(&mapmode, 'x'); /* :xmap */
if (mode & SELECTMODE)
ga_append(&mapmode, 's'); /* :smap */
}
}
ga_append(&mapmode, NUL);
return (char_u *)mapmode.ga_data;
}
static void
showmap(mp, local)
mapblock_T *mp;
int local; /* TRUE for buffer-local map */
{
int len = 1;
int len = 1;
char_u *mapchars;
if (msg_didout || msg_silent != 0)
{
@@ -3864,49 +3917,15 @@ showmap(mp, local)
if (got_int) /* 'q' typed at MORE prompt */
return;
}
if ((mp->m_mode & (INSERT + CMDLINE)) == INSERT + CMDLINE)
msg_putchar('!'); /* :map! */
else if (mp->m_mode & INSERT)
msg_putchar('i'); /* :imap */
else if (mp->m_mode & LANGMAP)
msg_putchar('l'); /* :lmap */
else if (mp->m_mode & CMDLINE)
msg_putchar('c'); /* :cmap */
else if ((mp->m_mode & (NORMAL + VISUAL + SELECTMODE + OP_PENDING))
== NORMAL + VISUAL + SELECTMODE + OP_PENDING)
msg_putchar(' '); /* :map */
else
mapchars = map_mode_to_chars(mp->m_mode);
if (mapchars != NULL)
{
len = 0;
if (mp->m_mode & NORMAL)
{
msg_putchar('n'); /* :nmap */
++len;
}
if (mp->m_mode & OP_PENDING)
{
msg_putchar('o'); /* :omap */
++len;
}
if ((mp->m_mode & (VISUAL + SELECTMODE)) == VISUAL + SELECTMODE)
{
msg_putchar('v'); /* :vmap */
++len;
}
else
{
if (mp->m_mode & VISUAL)
{
msg_putchar('x'); /* :xmap */
++len;
}
if (mp->m_mode & SELECTMODE)
{
msg_putchar('s'); /* :smap */
++len;
}
}
msg_puts(mapchars);
len = (int)STRLEN(mapchars);
vim_free(mapchars);
}
while (++len <= 3)
msg_putchar(' ');
@@ -3931,8 +3950,7 @@ showmap(mp, local)
msg_putchar(' ');
/* Use FALSE below if we only want things like <Up> to show up as such on
* the rhs, and not M-x etc, TRUE gets both -- webb
*/
* the rhs, and not M-x etc, TRUE gets both -- webb */
if (*mp->m_str == NUL)
msg_puts_attr((char_u *)"<Nop>", hl_attr(HLF_8));
else
@@ -4995,19 +5013,21 @@ check_map_keycodes()
sourcing_name = save_name;
}
#ifdef FEAT_EVAL
#if defined(FEAT_EVAL) || defined(PROTO)
/*
* Check the string "keys" against the lhs of all mappings
* Return pointer to rhs of mapping (mapblock->m_str)
* NULL otherwise
* Check the string "keys" against the lhs of all mappings.
* Return pointer to rhs of mapping (mapblock->m_str).
* NULL when no mapping found.
*/
char_u *
check_map(keys, mode, exact, ign_mod, abbr)
check_map(keys, mode, exact, ign_mod, abbr, mp_ptr, local_ptr)
char_u *keys;
int mode;
int exact; /* require exact match */
int ign_mod; /* ignore preceding modifier */
int abbr; /* do abbreviations */
mapblock_T **mp_ptr; /* return: pointer to mapblock or NULL */
int *local_ptr; /* return: buffer-local mapping or NULL */
{
int hash;
int len, minlen;
@@ -5062,7 +5082,17 @@ check_map(keys, mode, exact, ign_mod, abbr)
minlen = mp->m_keylen - 3;
}
if (STRNCMP(s, keys, minlen) == 0)
{
if (mp_ptr != NULL)
*mp_ptr = mp;
if (local_ptr != NULL)
#ifdef FEAT_LOCALMAP
*local_ptr = local;
#else
*local_ptr = 0;
#endif
return mp->m_str;
}
}
}
}
+6 -1
View File
@@ -510,8 +510,13 @@ EXTERN VimClipboard clip_star; /* PRIMARY selection in X11 */
EXTERN VimClipboard clip_plus; /* CLIPBOARD selection in X11 */
# else
# define clip_plus clip_star /* there is only one clipboard */
# define ONE_CLIPBOARD
# endif
EXTERN int clip_unnamed INIT(= FALSE);
#define CLIP_UNNAMED 1
#define CLIP_UNNAMED_PLUS 2
EXTERN int clip_unnamed INIT(= 0); /* above two values or'ed */
EXTERN int clip_autoselect INIT(= FALSE);
EXTERN int clip_autoselectml INIT(= FALSE);
EXTERN int clip_html INIT(= FALSE);
+10
View File
@@ -109,8 +109,18 @@ gui_start()
#if defined(FEAT_GUI_GTK) || defined(FEAT_GUI_X11)
if (gui.in_use)
{
# ifdef FEAT_EVAL
Window x11_window;
Display *x11_display;
if (gui_get_x11_windis(&x11_window, &x11_display) == OK)
set_vim_var_nr(VV_WINDOWID, (long)x11_window);
# endif
/* Display error messages in a dialog now. */
display_errors();
}
#endif
#if defined(MAY_FORK) && !defined(__QNXNTO__)
+4 -2
View File
@@ -1287,6 +1287,9 @@ gui_mch_dialog(int type, /* type of dialog */
entry = gtk_entry_new();
gtk_widget_show(entry);
/* Make Enter work like pressing OK. */
gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE);
text = CONVERT_TO_UTF8(textfield);
gtk_entry_set_text(GTK_ENTRY(entry), (const char *)text);
CONVERT_TO_UTF8_FREE(text);
@@ -1795,7 +1798,6 @@ find_replace_cb(GtkWidget *widget UNUSED, gpointer data)
char_u *repl_text;
gboolean direction_down;
SharedFindReplace *sfr;
int rc;
flags = (int)(long)data; /* avoid a lint warning here */
@@ -1821,7 +1823,7 @@ find_replace_cb(GtkWidget *widget UNUSED, gpointer data)
repl_text = CONVERT_FROM_UTF8(repl_text);
find_text = CONVERT_FROM_UTF8(find_text);
rc = gui_do_findrepl(flags, find_text, repl_text, direction_down);
gui_do_findrepl(flags, find_text, repl_text, direction_down);
CONVERT_FROM_UTF8_FREE(repl_text);
CONVERT_FROM_UTF8_FREE(find_text);
}
+9 -4
View File
@@ -289,13 +289,13 @@ typedef struct tagNMTTDISPINFOW {
#ifdef FEAT_MENU
static UINT s_menu_id = 100;
#endif
/*
* Use the system font for dialogs and tear-off menus. Remove this line to
* use DLG_FONT_NAME.
*/
# define USE_SYSMENU_FONT
#endif
#define USE_SYSMENU_FONT
#define VIM_NAME "vim"
#define VIM_CLASS "Vim"
@@ -1260,7 +1260,7 @@ gui_mch_prepare(int *argc, char **argv)
/* try and load the user32.dll library and get the entry points for
* multi-monitor-support. */
if ((user32_lib = LoadLibrary("User32.dll")) != NULL)
if ((user32_lib = vimLoadLib("User32.dll")) != NULL)
{
pMonitorFromWindow = (TMonitorFromWindow)GetProcAddress(user32_lib,
"MonitorFromWindow");
@@ -1573,6 +1573,11 @@ gui_mch_init(void)
# endif
#endif
#ifdef FEAT_EVAL
/* set the v:windowid variable */
set_vim_var_nr(VV_WINDOWID, (long)s_hwnd);
#endif
theend:
/* Display any pending error messages */
display_errors();
@@ -4188,7 +4193,7 @@ gui_mch_set_foreground(void)
static void
dyn_imm_load(void)
{
hLibImm = LoadLibrary("imm32.dll");
hLibImm = vimLoadLib("imm32.dll");
if (hLibImm == NULL)
return;
+4 -2
View File
@@ -1810,7 +1810,8 @@ process_message(void)
* mapped we want to use the mapping instead. */
if (vk == VK_F10
&& gui.menu_is_active
&& check_map(k10, State, FALSE, TRUE, FALSE) == NULL)
&& check_map(k10, State, FALSE, TRUE, FALSE,
NULL, NULL) == NULL)
break;
#endif
if (GetKeyState(VK_SHIFT) & 0x8000)
@@ -1924,7 +1925,8 @@ process_message(void)
/* Check for <F10>: Default effect is to select the menu. When <F10> is
* mapped we need to stop it here to avoid strange effects (e.g., for the
* key-up event) */
if (vk != VK_F10 || check_map(k10, State, FALSE, TRUE, FALSE) == NULL)
if (vk != VK_F10 || check_map(k10, State, FALSE, TRUE, FALSE,
NULL, NULL) == NULL)
#endif
DispatchMessage(&msg);
}
+5
View File
@@ -2895,6 +2895,11 @@ gui_mch_wait_for_chars(wtime)
focus = gui.in_focus;
}
#if defined(FEAT_NETBEANS_INTG)
/* Process any queued netbeans messages. */
netbeans_parse_messages();
#endif
/*
* Don't use gui_mch_update() because then we will spin-lock until a
* char arrives, instead we use XtAppProcessEvent() to hang until an
-5
View File
@@ -13,16 +13,11 @@
#if defined(FEAT_CSCOPE) || defined(PROTO)
#include <string.h>
#include <errno.h>
#include <assert.h>
#include <sys/types.h>
#include <sys/stat.h>
#if defined(UNIX)
# include <sys/wait.h>
#else
/* not UNIX, must be WIN32 */
# include "vimio.h"
#endif
#include "if_cscope.h"
+1 -1
View File
@@ -49,7 +49,7 @@ static const char LUAVIM_FREE[] = "luaV_free";
# define symbol_from_dll dlsym
# define close_dll dlclose
#else
# define load_dll LoadLibrary
# define load_dll vimLoadLib
# define symbol_from_dll GetProcAddress
# define close_dll FreeLibrary
#endif

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