vim-patch:0c0734d527a1

Update runtime files
0c0734d527

Omit rand(), srand() documentation.
Patch v8.1.2342 is not ported yet.
This commit is contained in:
Jan Edmund Lazo 2021-04-24 16:52:46 -04:00
parent d1231d4f8e
commit 348f72524d
No known key found for this signature in database
GPG Key ID: 64915E6E9F735B15
13 changed files with 547 additions and 378 deletions

View File

@ -944,7 +944,7 @@ A jump table for the options with a short description can be found at |Q_op|.
(mostly used in |Normal-mode| or |Cmdline-mode|). (mostly used in |Normal-mode| or |Cmdline-mode|).
esc hitting <Esc> in |Normal-mode|. esc hitting <Esc> in |Normal-mode|.
ex In |Visual-mode|, hitting |Q| results in an error. ex In |Visual-mode|, hitting |Q| results in an error.
hangul Error occurred when using hangul input. hangul Ignored.
insertmode Pressing <Esc> in 'insertmode'. insertmode Pressing <Esc> in 'insertmode'.
lang Calling the beep module for Lua/Mzscheme/TCL. lang Calling the beep module for Lua/Mzscheme/TCL.
mess No output available for |g<|. mess No output available for |g<|.
@ -5288,12 +5288,11 @@ A jump table for the options with a short description can be found at |Q_op|.
of this option). of this option).
The default is ">". For Unix, if the 'shell' option is "csh" or The default is ">". For Unix, if the 'shell' option is "csh" or
"tcsh" during initializations, the default becomes ">&". If the "tcsh" during initializations, the default becomes ">&". If the
'shell' option is "sh", "ksh", "mksh", "pdksh", "zsh", 'shell' option is "sh", "ksh", "mksh", "pdksh", "zsh", "zsh-beta",
"zsh-beta","bash" or "fish", the default becomes ">%s 2>&1". This "bash" or "fish", the default becomes ">%s 2>&1". This means that
means that stderr is also included. For Win32, the Unix checks are stderr is also included. For Win32, the Unix checks are done and
done and additionally "cmd" is checked for, which makes the default additionally "cmd" is checked for, which makes the default ">%s 2>&1".
">%s 2>&1". Also, the same names with ".exe" appended are checked Also, the same names with ".exe" appended are checked for.
for.
The initialization of this option is done after reading the vimrc The initialization of this option is done after reading the vimrc
and the other initializations, so that when the 'shell' option is set and the other initializations, so that when the 'shell' option is set
there, the 'shellredir' option changes automatically unless it was there, the 'shellredir' option changes automatically unless it was
@ -5898,7 +5897,9 @@ A jump table for the options with a short description can be found at |Q_op|.
a S Argument list status as in default title. ({current} of {max}) a S Argument list status as in default title. ({current} of {max})
Empty if the argument file count is zero or one. Empty if the argument file count is zero or one.
{ NF Evaluate expression between '%{' and '}' and substitute result. { NF Evaluate expression between '%{' and '}' and substitute result.
Note that there is no '%' before the closing '}'. Note that there is no '%' before the closing '}'. The
expression cannot contain a '}' character, call a function to
work around that. See |stl-%{| below.
( - Start of item group. Can be used for setting the width and ( - Start of item group. Can be used for setting the width and
alignment of a section. Must be followed by %) somewhere. alignment of a section. Must be followed by %) somewhere.
) - End of item group. No width fields allowed. ) - End of item group. No width fields allowed.
@ -5961,13 +5962,13 @@ A jump table for the options with a short description can be found at |Q_op|.
:set statusline=...%(\ [%M%R%H]%)... :set statusline=...%(\ [%M%R%H]%)...
< Beware that an expression is evaluated each and every time the status < Beware that an expression is evaluated each and every time the status
line is displayed. line is displayed.
*g:actual_curbuf* *g:actual_curwin* *stl-%{* *g:actual_curbuf* *g:actual_curwin*
The current buffer and current window will be set temporarily to that While evaluationg %{} the current buffer and current window will be
of the window (and buffer) whose statusline is currently being drawn. set temporarily to that of the window (and buffer) whose statusline is
The expression will evaluate in this context. The variable currently being drawn. The expression will evaluate in this context.
"g:actual_curbuf" is set to the `bufnr()` number of the real current The variable "g:actual_curbuf" is set to the `bufnr()` number of the
buffer and "g:actual_curwin" to the |window-ID| of the real current real current buffer and "g:actual_curwin" to the |window-ID| of the
window. These values are strings. real current window. These values are strings.
The 'statusline' option will be evaluated in the |sandbox| if set from The 'statusline' option will be evaluated in the |sandbox| if set from
a modeline, see |sandbox-option|. a modeline, see |sandbox-option|.
@ -7050,6 +7051,8 @@ A jump table for the options with a short description can be found at |Q_op|.
fail (and make sure not to exit Vim until the write was successful). fail (and make sure not to exit Vim until the write was successful).
See |backup-table| for another explanation. See |backup-table| for another explanation.
When the 'backupskip' pattern matches, a backup is not made anyway. When the 'backupskip' pattern matches, a backup is not made anyway.
Depending on 'backupcopy' the backup is a new file or the original
file renamed (and a new file is written).
*'writedelay'* *'wd'* *'writedelay'* *'wd'*
'writedelay' 'wd' number (default 0) 'writedelay' 'wd' number (default 0)

View File

@ -366,7 +366,7 @@ sign_define({list})
The one argument {list} can be used to define a list of signs. The one argument {list} can be used to define a list of signs.
Each list item is a dictionary with the above items in {dict} Each list item is a dictionary with the above items in {dict}
and a 'name' item for the sign name. and a "name" item for the sign name.
Returns 0 on success and -1 on failure. When the one argument Returns 0 on success and -1 on failure. When the one argument
{list} is used, then returns a List of values one for each {list} is used, then returns a List of values one for each

View File

@ -2739,10 +2739,10 @@ To set a user-defined list of code block syntax highlighting: >
To assign multiple code block types to a single syntax, define To assign multiple code block types to a single syntax, define
`rst_syntax_code_list` as a mapping: > `rst_syntax_code_list` as a mapping: >
let rst_syntax_code_list = { let rst_syntax_code_list = {
\ 'cpp' = ['cpp', 'c++'], \ 'cpp': ['cpp', 'c++'],
\ 'bash' = ['bash', 'sh'], \ 'bash': ['bash', 'sh'],
... ...
} \ }
To use color highlighting for emphasis text: > To use color highlighting for emphasis text: >
let rst_use_emphasis_colors = 1 let rst_use_emphasis_colors = 1

View File

@ -41,11 +41,11 @@ the commands and options used for it. Use these two commands:
Press CTRL-O to jump back (repeat to go further back). Press CTRL-O to jump back (repeat to go further back).
Many links are in vertical bars, like this: |bars|. The bars themselves may 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 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. 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. 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|. 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 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 use |hl-Ignore|, using the same color for the text as the background. You can
@ -69,7 +69,7 @@ For more info see |vimrc|.
*01.3* Using the Vim tutor *tutor* *vimtutor* *01.3* Using the Vim tutor *tutor* *vimtutor*
Instead of reading the text (boring!) you can use :Tutor to learn your first Instead of reading the text (boring!) you can use :Tutor to learn your first
Vim commands. This is a 30 minute tutorial that teaches the most basic Vim Vim commands. This is a 30-minute tutorial that teaches the most basic Vim
functionality hands-on. functionality hands-on.
To start the tutorial, execute > To start the tutorial, execute >

View File

@ -253,11 +253,11 @@ restores the character.
g intelligent turtle ~ g intelligent turtle ~
The next u command restores the next-to-last character deleted: The next "u" command restores the next-to-last character deleted:
ng intelligent turtle ~ ng intelligent turtle ~
The next u command gives you the u, and so on: The next "u" command gives you the u, and so on:
ung intelligent turtle ~ ung intelligent turtle ~
oung intelligent turtle ~ oung intelligent turtle ~
@ -364,7 +364,7 @@ To exit, use the "ZZ" command. This command writes the file and exits.
Unlike many other editors, Vim does not automatically make a backup Unlike many other editors, Vim does not automatically make a backup
file. If you type "ZZ", your changes are committed and there's no file. If you type "ZZ", your changes are committed and there's no
turning back. You can configure the Vim editor to produce backup turning back. You can configure the Vim editor to produce backup
files, see |07.4|. files; see |07.4|.
DISCARDING CHANGES DISCARDING CHANGES
@ -387,7 +387,7 @@ message and refuse to exit:
E37: No write since last change (use ! to override) ~ E37: No write since last change (use ! to override) ~
By specifying the override, you are in effect telling Vim, "I know that what By specifying the override, you are in effect telling Vim, "I know that what
I'm doing looks stupid, but I'm a big boy and really want to do this." I'm doing looks stupid, but I really want to do this."
If you want to continue editing with Vim: The ":e!" command reloads the If you want to continue editing with Vim: The ":e!" command reloads the
original version of the file. original version of the file.
@ -540,7 +540,7 @@ Summary: *help-summary* >
command argument %: > command argument %: >
:help c_% :help c_%
8) Ex-commands always start with ":", so to go to the :s command help: > 8) Ex-commands always start with ":", so to go to the ":s" command help: >
:help :s :help :s
9) Commands specifically for debugging start with ">". To go to the help 9) Commands specifically for debugging start with ">". To go to the help
@ -550,22 +550,23 @@ Summary: *help-summary* >
10) Key combinations. They usually start with a single letter indicating 10) Key combinations. They usually start with a single letter indicating
the mode for which they can be used. E.g.: > the mode for which they can be used. E.g.: >
:help i_CTRL-X :help i_CTRL-X
< takes you to the family of Ctrl-X commands for insert mode which can be < takes you to the family of CTRL-X commands for insert mode which can be
used to auto complete different things. Note, that certain keys will used to auto-complete different things. Note, that certain keys will
always be written the same, e.g. Control will always be CTRL. always be written the same, e.g. Control will always be CTRL.
For normal mode commands there is no prefix and the topic is available at For normal mode commands there is no prefix and the topic is available at
:h CTRL-<Letter>. E.g. > :h CTRL-<Letter>. E.g. >
:help CTRL-W :help CTRL-W
< In contrast > < In contrast >
:help c_CTRL-R :help c_CTRL-R
< will describe what the Ctrl-R does when entering commands in the Command < will describe what the CTRL-R does when entering commands in the Command
line and > line and >
:help v_Ctrl-A :help v_CTRL-A
< talks about incrementing numbers in visual mode and > < talks about incrementing numbers in visual mode and >
:help g_CTRL-A :help g_CTRL-A
< talks about the g<C-A> command (e.g. you have to press "g" then <Ctrl-A>). < talks about the "g<C-A>" command (e.g. you have to press "g" then
Here the "g" stand for the normal command "g" which always expects a second <CTRL-A>). Here the "g" stand for the normal command "g" which always
key before doing something similar to the commands starting with "z" expects a second key before doing something similar to the commands
starting with "z"
11) Regexp items always start with /. So to get help for the "\+" quantifier 11) Regexp items always start with /. So to get help for the "\+" quantifier
in Vim regexes: > in Vim regexes: >
@ -636,15 +637,16 @@ Summary: *help-summary* >
< Also if you want to access a certain chapter in the help, the chapter < Also if you want to access a certain chapter in the help, the chapter
number can be accessed directly like this: > number can be accessed directly like this: >
:help 10.1 :help 10.1
< goes to chapter 10.1 in |usr_10.txt| and talks about recording macros. < which goes to chapter 10.1 in |usr_10.txt| and talks about recording
macros.
19) Highlighting groups. Always start with hl-groupname. E.g. > 19) Highlighting groups. Always start with hl-groupname. E.g. >
:help hl-WarningMsg :help hl-WarningMsg
< talks about the WarningMsg highlighting group. < talks about the WarningMsg highlighting group.
20) Syntax highlighting is namespaced to :syn-topic e.g. > 20) Syntax highlighting is namespaced to :syn-topic. E.g. >
:help :syn-conceal :help :syn-conceal
< talks about the conceal argument for the :syn command. < talks about the conceal argument for the ":syn" command.
21) Quickfix commands usually start with :c while location list commands 21) Quickfix commands usually start with :c while location list commands
usually start with :l usually start with :l
@ -677,7 +679,7 @@ Summary: *help-summary* >
< takes you exactly to the description of the swap error message and > < takes you exactly to the description of the swap error message and >
:help W10 :help W10
< talks about the warning "Changing a readonly file". < talks about the warning "Changing a readonly file".
Sometimes however, those error codes are not described, but rather are Sometimes, however, those error codes are not described, but rather are
listed at the Vim command that usually causes this. So: > listed at the Vim command that usually causes this. So: >
:help E128 :help E128
< takes you to the |:function| command < takes you to the |:function| command

View File

@ -81,8 +81,8 @@ The "$" command moves the cursor to the end of a line. If your keyboard has
an <End> key it will do the same thing. an <End> key it will do the same thing.
The "^" command moves to the first non-blank character of the line. The "0" The "^" command moves to the first non-blank character of the line. The "0"
command (zero) moves to the very first character of the line. The <Home> key command (zero) moves to the very first character of the line, and the <Home>
does the same thing. In a picture: key does the same thing. In a picture:
^ ^
<------------ <------------
@ -222,7 +222,8 @@ you can see? This figure shows the three commands you can use:
L --> | text sample text | L --> | text sample text |
+---------------------------+ +---------------------------+
Hints: "H" stands for Home, "M" for Middle and "L" for Last. Hints: "H" stands for Home, "M" for Middle and "L" for Last. Alternatively,
"H" for high, "M" for Middle and "L" for low.
============================================================================== ==============================================================================
*03.6* Telling where you are *03.6* Telling where you are
@ -299,22 +300,22 @@ To scroll one line at a time use CTRL-E (scroll up) and CTRL-Y (scroll down).
Think of CTRL-E to give you one line Extra. (If you use MS-Windows compatible Think of CTRL-E to give you one line Extra. (If you use MS-Windows compatible
key mappings CTRL-Y will redo a change instead of scroll.) key mappings CTRL-Y will redo a change instead of scroll.)
To scroll forward by a whole screen (except for two lines) use CTRL-F. The To scroll forward by a whole screen (except for two lines) use CTRL-F. To
other way is backward, CTRL-B is the command to use. Fortunately CTRL-F is scroll backwards, use CTRL-B. These should be easy to remember: F for
Forward and CTRL-B is Backward, that's easy to remember. Forwards and B for Backwards.
A common issue is that after moving down many lines with "j" your cursor is at A common issue is that after moving down many lines with "j" your cursor is at
the bottom of the screen. You would like to see the context of the line with the bottom of the screen. You would like to see the context of the line with
the cursor. That's done with the "zz" command. the cursor. That's done with the "zz" command.
+------------------+ +------------------+ +------------------+ +------------------+
| some text | | some text | | earlier text | | earlier text |
| some text | | some text | | earlier text | | earlier text |
| some text | | some text | | earlier text | | earlier text |
| some text | zz --> | line with cursor | | earlier text | zz --> | line with cursor |
| some text | | some text | | earlier text | | later text |
| some text | | some text | | earlier text | | later text |
| line with cursor | | some text | | line with cursor | | later text |
+------------------+ +------------------+ +------------------+ +------------------+
The "zt" command puts the cursor line at the top, "zb" at the bottom. There The "zt" command puts the cursor line at the top, "zb" at the bottom. There
@ -354,7 +355,7 @@ The "?" command works like "/" but searches backwards: >
The "N" command repeats the last search the opposite direction. Thus using The "N" command repeats the last search the opposite direction. Thus using
"N" after a "/" command searches backwards, using "N" after "?" searches "N" after a "/" command searches backwards, using "N" after "?" searches
forward. forwards.
IGNORING CASE IGNORING CASE
@ -458,8 +459,8 @@ essential ones:
:set nowrapscan :set nowrapscan
This stops the search at the end of the file. Or, when you are searching This stops the search at the end of the file. Or, when you are searching
backwards, at the start of the file. The 'wrapscan' option is on by default, backwards, it stops the search at the start of the file. The 'wrapscan'
thus searching wraps around the end of the file. option is on by default, thus searching wraps around the end of the file.
> >
:set noincsearch :set noincsearch
@ -481,7 +482,8 @@ Vim. Example: >
Go:set hlsearch<Esc> Go:set hlsearch<Esc>
"G" moves to the end of the file. "o" starts a new line, where you type the "G" moves to the end of the file. "o" starts a new line, where you type the
":set" command. You end insert mode with <Esc>. Then write the file: > ":set" command. You end insert mode with <Esc>. Then write and close the
file: >
ZZ ZZ
@ -495,8 +497,8 @@ Regular expressions are an extremely powerful and compact way to specify a
search pattern. Unfortunately, this power comes at a price, because regular search pattern. Unfortunately, this power comes at a price, because regular
expressions are a bit tricky to specify. expressions are a bit tricky to specify.
In this section we mention only a few essential ones. More about search In this section we mention only a few essential ones. More about search
patterns and commands in chapter 27 |usr_27.txt|. You can find the full patterns and commands can be found in chapter 27 |usr_27.txt|. You can find
explanation here: |pattern|. the full explanation here: |pattern|.
BEGINNING AND END OF A LINE BEGINNING AND END OF A LINE
@ -522,9 +524,9 @@ And with "/^the" we find this one:
the solder holding one of the chips melted and the ~ the solder holding one of the chips melted and the ~
xxx xxx
You can try searching with "/^the$", it will only match a single line You can try searching with "/^the$"; it will only match a single line
consisting of "the". White space does matter here, thus if a line contains a consisting entirely of "the". White space does matter here, thus if a line
space after the word, like "the ", the pattern will not match. contains a space after the word, like "the ", the pattern will not match.
MATCHING ANY SINGLE CHARACTER MATCHING ANY SINGLE CHARACTER
@ -559,20 +561,20 @@ where you came from, use this command: >
This ` is a backtick or open single-quote character. This ` is a backtick or open single-quote character.
If you use the same command a second time you will jump back again. That's If you use the same command a second time you will jump back again. That's
because the ` command is a jump itself, and the position from before this jump because the "`" command is a jump itself, and the position from before this
is remembered. jump is remembered.
Generally, every time you do a command that can move the cursor further than Generally, every time you do a command that can move the cursor further than
within the same line, this is called a jump. This includes the search within the same line, this is called a jump. This includes the search
commands "/" and "n" (it doesn't matter how far away the match is). But not commands "/" and "n" (it doesn't matter how far away the match is). But not
the character searches with "fx" and "tx" or the word movements "w" and "e". the character searches with "fx" and "tx" or the word movements "w" and "e".
Also, "j" and "k" are not considered to be a jump. Even when you use a Also, "j" and "k" are not considered to be a jump, even when you use a
count to make them move the cursor quite a long way away. count to make them move the cursor quite a long way away.
The `` command jumps back and forth, between two points. The CTRL-O command The "``" command jumps back and forth, between two points. The CTRL-O command
jumps to older positions (Hint: O for older). CTRL-I then jumps back to newer jumps to older positions (Hint: O for older). CTRL-I then jumps back to newer
positions (Hint: I is just next to O on the keyboard). Consider this sequence positions (Hint: for many common keyboard layouts, I is just next to O).
of commands: > Consider this sequence of commands: >
33G 33G
/^The /^The
@ -610,9 +612,9 @@ Thus to move to the a mark:
> >
`a `a
The command 'mark (single quotation mark, or apostrophe) moves you to the The command "'mark" (single quotation mark, or apostrophe) moves you to the
beginning of the line containing the mark. This differs from the `mark beginning of the line containing the mark. This differs from the "`mark"
command, which moves you to marked column. command, which also moves you to the marked column.
The marks can be very useful when working on two related parts in a file. The marks can be very useful when working on two related parts in a file.
Suppose you have some text near the start of the file you need to look at, Suppose you have some text near the start of the file you need to look at,

View File

@ -33,7 +33,7 @@ using a count: "4x" deletes four characters.
move word command. In fact, the "d" command may be followed by any motion move word command. In fact, the "d" command may be followed by any motion
command, and it deletes from the current location to the place where the command, and it deletes from the current location to the place where the
cursor winds up. cursor winds up.
The "4w" command, for example, moves the cursor over four words. The d4w The "4w" command, for example, moves the cursor over four words. The "d4w"
command deletes four words. command deletes four words.
To err is human. To really foul up you need a computer. ~ To err is human. To really foul up you need a computer. ~
@ -91,14 +91,14 @@ This "c2wbe<Esc>" contains these bits:
be insert this text be insert this text
<Esc> back to Normal mode <Esc> back to Normal mode
If you have paid attention, you will have noticed something strange: The space You will have noticed something strange: The space before "human" isn't
before "human" isn't deleted. There is a saying that for every problem there deleted. There is a saying that for every problem there is an answer that is
is an answer that is simple, clear, and wrong. That is the case with the simple, clear, and wrong. That is the case with the example used here for the
example used here for the "cw" command. The c operator works just like the "cw" command. The c operator works just like the d operator, with one
d operator, with one exception: "cw". It actually works like "ce", change to exception: "cw". It actually works like "ce", change to end of word. Thus
end of word. Thus the space after the word isn't included. This is an the space after the word isn't included. This is an exception that dates back
exception that dates back to the old Vi. Since many people are used to it to the old Vi. Since many people are used to it now, the inconsistency has
now, the inconsistency has remained in Vim. remained in Vim.
MORE CHANGES MORE CHANGES
@ -114,7 +114,7 @@ Insert mode and append new text.
SHORTCUTS SHORTCUTS
Some operator-motion commands are used so often that they have been given a Some operator-motion commands are used so often that they have been given a
single letter command: single-letter command:
x stands for dl (delete character under the cursor) x stands for dl (delete character under the cursor)
X stands for dh (delete character left of the cursor) X stands for dh (delete character left of the cursor)
@ -138,6 +138,7 @@ REPLACING WITH ONE CHARACTER
The "r" command is not an operator. It waits for you to type a character, and The "r" command is not an operator. It waits for you to type a character, and
will replace the character under the cursor with it. You could do the same will replace the character under the cursor with it. You could do the same
with "cl" or with the "s" command, but with "r" you don't have to press <Esc> with "cl" or with the "s" command, but with "r" you don't have to press <Esc>
to get back out of insert mode.
there is somerhing grong here ~ there is somerhing grong here ~
rT rt rw rT rt rw
@ -164,7 +165,7 @@ The "." command is one of the most simple yet powerful commands in Vim. It
repeats the last change. For instance, suppose you are editing an HTML file repeats the last change. For instance, suppose you are editing an HTML file
and want to delete all the <B> tags. You position the cursor on the first < and want to delete all the <B> tags. You position the cursor on the first <
and delete the <B> with the command "df>". You then go to the < of the next and delete the <B> with the command "df>". You then go to the < of the next
</B> and kill it using the "." command. The "." command executes the last </B> and delete it using the "." command. The "." command executes the last
change command (in this case, "df>"). To delete another tag, position the change command (in this case, "df>"). To delete another tag, position the
cursor on the < and use the "." command. cursor on the < and use the "." command.
@ -176,8 +177,8 @@ cursor on the < and use the "." command.
f< find next < -------------> f< find next < ------------->
. repeat df> --> . repeat df> -->
The "." command works for all changes you make, except for the "u" (undo), The "." command works for all changes you make, except for "u" (undo), CTRL-R
CTRL-R (redo) and commands that start with a colon (:). (redo) and commands that start with a colon (:).
Another example: You want to change the word "four" to "five". It appears Another example: You want to change the word "four" to "five". It appears
several times in your text. You can do this quickly with this sequence of several times in your text. You can do this quickly with this sequence of
@ -269,8 +270,8 @@ where they open a new line below or above the cursor.
============================================================================== ==============================================================================
*04.5* Moving text *04.5* Moving text
When you delete something with the "d", "x", or another command, the text is When you delete something with "d", "x", or another command, the text is
saved. You can paste it back by using the p command. (The Vim name for saved. You can paste it back by using the "p" command. (The Vim name for
this is put). this is put).
Take a look at how this works. First you will delete an entire line, by Take a look at how this works. First you will delete an entire line, by
putting the cursor on the line you want to delete and typing "dd". Now you putting the cursor on the line you want to delete and typing "dd". Now you
@ -362,11 +363,11 @@ Use "y$" to yank to the end of the line.
If you are using the GUI version of Vim (gvim), you can find the "Copy" item If you are using the GUI version of Vim (gvim), you can find the "Copy" item
in the "Edit" menu. First select some text with Visual mode, then use the in the "Edit" menu. First select some text with Visual mode, then use the
Edit/Copy menu. The selected text is now copied to the clipboard. You can Edit/Copy menu item. The selected text is now copied to the clipboard. You
paste the text in other programs. In Vim itself too. can paste the text in other programs. In Vim itself too.
If you have copied text to the clipboard in another application, you can paste If you have copied text to the clipboard in another application, you can paste
it in Vim with the Edit/Paste menu. This works in Normal mode and Insert it in Vim with the Edit/Paste menu item. This works in Normal mode and Insert
mode. In Visual mode the selected text is replaced with the pasted text. mode. In Visual mode the selected text is replaced with the pasted text.
The "Cut" menu item deletes the text before it's put on the clipboard. The The "Cut" menu item deletes the text before it's put on the clipboard. The
@ -385,7 +386,7 @@ To put text from the clipboard back into the text: >
"*p "*p
This only works on versions of Vim that include clipboard support. More about This only works on versions of Vim that include clipboard support. More about
the clipboard in section |09.3| and here: |clipboard|. the clipboard can be found in section |09.3| and here: |clipboard|.
============================================================================== ==============================================================================
*04.8* Text objects *04.8* Text objects
@ -401,8 +402,8 @@ to do this: "daw".
The "d" of "daw" is the delete operator. "aw" is a text object. Hint: "aw" The "d" of "daw" is the delete operator. "aw" is a text object. Hint: "aw"
stands for "A Word". Thus "daw" is "Delete A Word". To be precise, the white stands for "A Word". Thus "daw" is "Delete A Word". To be precise, the white
space after the word is also deleted (the white space before the word at the space after the word is also deleted (or the white space before the word if at
end of the line). the end of the line).
Using text objects is the third way to make changes in Vim. We already had Using text objects is the third way to make changes in Vim. We already had
operator-motion and Visual mode. Now we add operator-text object. operator-motion and Visual mode. Now we add operator-text object.
@ -429,11 +430,11 @@ sentence "Another line.":
some text. ~ some text. ~
"cis" consists of the "c" (change) operator and the "is" text object. This "cis" consists of the "c" (change) operator and the "is" text object. This
stands for "Inner Sentence". There is also the "as" (a sentence) object. The stands for "Inner Sentence". There is also the "as" ("A Sentence") object.
difference is that "as" includes the white space after the sentence and "is" The difference is that "as" includes the white space after the sentence and
doesn't. If you would delete a sentence, you want to delete the white space "is" doesn't. If you would delete a sentence, you want to delete the white
at the same time, thus use "das". If you want to type new text the white space at the same time, thus use "das". If you want to type new text the
space can remain, thus you use "cis". white space can remain, thus you use "cis".
You can also use text objects in Visual mode. It will include the text object You can also use text objects in Visual mode. It will include the text object
in the Visual selection. Visual mode continues, thus you can do this several in the Visual selection. Visual mode continues, thus you can do this several
@ -470,13 +471,13 @@ character.
*04.10* Conclusion *04.10* Conclusion
The operators, movement commands and text objects give you the possibility to The operators, movement commands and text objects give you the possibility to
make lots of combinations. Now that you know how it works, you can use N make lots of combinations. Now that you know how they work, you can use N
operators with M movement commands to make N * M commands! operators with M movement commands to make N * M commands!
You can find a list of operators here: |operator| You can find a list of operators here: |operator|.
For example, there are many other ways to delete pieces of text. Here are a For example, there are many other ways to delete pieces of text. Here are a
few often used ones: few common ones:
x delete character under the cursor (short for "dl") x delete character under the cursor (short for "dl")
X delete character before the cursor (short for "dh") X delete character before the cursor (short for "dh")
@ -492,14 +493,14 @@ If you use "c" instead of "d" they become change commands. And with "y" you
yank the text. And so forth. yank the text. And so forth.
There are a few often used commands to make changes that didn't fit somewhere There are a few common commands to make changes that didn't fit somewhere
else: else:
~ change case of the character under the cursor, and move the ~ Change case of the character under the cursor, and move the
cursor to the next character. This is not an operator (unless cursor to the next character. This is not an operator (unless
'tildeop' is set), thus you can't use it with a motion 'tildeop' is set), thus you can't use it with a motion
command. It does work in Visual mode and changes case for command. It does work in Visual mode, where it changes case
all the selected text then. for all the selected text.
I Start Insert mode after moving the cursor to the first I Start Insert mode after moving the cursor to the first
non-blank in the line. non-blank in the line.

View File

@ -370,7 +370,8 @@ into "barfoo".
was specified in this example. This is different from ":substitute", which was specified in this example. This is different from ":substitute", which
works on one line without a range. works on one line without a range.
The command isn't perfect, since it also matches lines where "//" appears The command isn't perfect, since it also matches lines where "//" appears
halfway in a line, and the substitution will also take place before the "//". halfway through a line, and the substitution will also take place before the
"//".
Just like with ":substitute", any pattern can be used. When you learn more Just like with ":substitute", any pattern can be used. When you learn more
complicated patterns later, you can use them here. complicated patterns later, you can use them here.
@ -634,9 +635,9 @@ using it. To check the current value of 'textwidth': >
:set textwidth :set textwidth
Now lines will be broken to take only up to 78 characters. However, when you Now lines will be broken to take only up to 78 characters. However, when you
insert text halfway through a line or delete a few words, the line will get insert text halfway through a line, or when you delete a few words, the lines
too long or too short as Vim won't automatically reformat the text. To tell will get too long or too short. Vim doesn't automatically reformat the text.
Vim to format the current paragraph: To tell Vim to format the current paragraph: >
gqap gqap

View File

@ -5,7 +5,7 @@
" UTF-8) should work. " UTF-8) should work.
scriptencoding utf-8 scriptencoding utf-8
let b:keymap_name = "oto" let b:keymap_name = "oty"
highlight lCursor guibg=red guifg=NONE highlight lCursor guibg=red guifg=NONE
" map F8 to toggle keymap (Ctrl-^ not present on keyboard) " map F8 to toggle keymap (Ctrl-^ not present on keyboard)
@ -22,7 +22,10 @@ I 𐰄 10C04 OLD TURKIC LETTER YENISEI I
04 𐰄 10C04 OLD TURKIC LETTER YENISEI I 04 𐰄 10C04 OLD TURKIC LETTER YENISEI I
E 𐰅 10C05 OLD TURKIC LETTER YENISEI E E 𐰅 10C05 OLD TURKIC LETTER YENISEI E
05 𐰅 10C05 OLD TURKIC LETTER YENISEI E 05 𐰅 10C05 OLD TURKIC LETTER YENISEI E
OE 𐰈 10C08 OLD TURKIC LETTER YENISEI OE OO 𐰆 10C06 OLD TURKIC LETTER ORKHON O
U 𐰆 10C06 OLD TURKIC LETTER ORKHON O
06 𐰆 10C06 OLD TURKIC LETTER ORKHON O
E 𐰈 10C08 OLD TURKIC LETTER YENISEI OE
UE 𐰈 10C08 OLD TURKIC LETTER YENISEI OE UE 𐰈 10C08 OLD TURKIC LETTER YENISEI OE
08 𐰈 10C08 OLD TURKIC LETTER YENISEI OE 08 𐰈 10C08 OLD TURKIC LETTER YENISEI OE
ab 𐰊 10C0A OLD TURKIC LETTER YENISEI AB ab 𐰊 10C0A OLD TURKIC LETTER YENISEI AB
@ -42,6 +45,10 @@ g2 𐰐 10C10 OLD TURKIC LETTER YENISEI AEG
ad 𐰒 10C12 OLD TURKIC LETTER YENISEI AD ad 𐰒 10C12 OLD TURKIC LETTER YENISEI AD
d1 𐰒 10C12 OLD TURKIC LETTER YENISEI AD d1 𐰒 10C12 OLD TURKIC LETTER YENISEI AD
12 𐰒 10C12 OLD TURKIC LETTER YENISEI AD 12 𐰒 10C12 OLD TURKIC LETTER YENISEI AD
aed 𐰓 10C13 OLD TURKIC LETTER ORKHON AED
ed 𐰓 10C13 OLD TURKIC LETTER ORKHON AED
d2 𐰓 10C13 OLD TURKIC LETTER ORKHON AED
13 𐰓 10C13 OLD TURKIC LETTER ORKHON AED
ez 𐰕 10C15 OLD TURKIC LETTER YENISEI EZ ez 𐰕 10C15 OLD TURKIC LETTER YENISEI EZ
z 𐰕 10C15 OLD TURKIC LETTER YENISEI EZ z 𐰕 10C15 OLD TURKIC LETTER YENISEI EZ
15 𐰕 10C15 OLD TURKIC LETTER YENISEI EZ 15 𐰕 10C15 OLD TURKIC LETTER YENISEI EZ
@ -65,6 +72,19 @@ al 𐰟 10C1F OLD TURKIC LETTER YENISEI AL
l 𐰟 10C1F OLD TURKIC LETTER YENISEI AL l 𐰟 10C1F OLD TURKIC LETTER YENISEI AL
l1 𐰟 10C1F OLD TURKIC LETTER YENISEI AL l1 𐰟 10C1F OLD TURKIC LETTER YENISEI AL
1f 𐰟 10C1F OLD TURKIC LETTER YENISEI AL 1f 𐰟 10C1F OLD TURKIC LETTER YENISEI AL
ael 𐰠 10C20 OLD TURKIC LETTER ORKHON AEL
el 𐰠 10C20 OLD TURKIC LETTER ORKHON AEL
l2 𐰠 10C20 OLD TURKIC LETTER ORKHON AEL
20 𐰠 10C20 OLD TURKIC LETTER ORKHON AEL
elt 𐰡 10C21 OLD TURKIC LETTER ORKHON ELT
lt 𐰡 10C21 OLD TURKIC LETTER ORKHON ELT
21 𐰡 10C21 OLD TURKIC LETTER ORKHON ELT
em 𐰢 10C22 OLD TURKIC LETTER ORKHON EM
m 𐰢 10C22 OLD TURKIC LETTER ORKHON EM
22 𐰢 10C22 OLD TURKIC LETTER ORKHON EM
an 𐰣 10C23 OLD TURKIC LETTER ORKHON AN
n1 𐰣 10C23 OLD TURKIC LETTER ORKHON AN
23 𐰣 10C23 OLD TURKIC LETTER ORKHON AN
aen 𐰥 10C25 OLD TURKIC LETTER YENISEI AEN aen 𐰥 10C25 OLD TURKIC LETTER YENISEI AEN
en 𐰥 10C25 OLD TURKIC LETTER YENISEI AEN en 𐰥 10C25 OLD TURKIC LETTER YENISEI AEN
n2 𐰥 10C25 OLD TURKIC LETTER YENISEI AEN n2 𐰥 10C25 OLD TURKIC LETTER YENISEI AEN
@ -84,6 +104,14 @@ ng 𐰬 10C2C OLD TURKIC LETTER YENISEI ANG
aeng 𐰮 10C2E OLD TURKIC LETTER YENISEI AENG aeng 𐰮 10C2E OLD TURKIC LETTER YENISEI AENG
eng 𐰮 10C2E OLD TURKIC LETTER YENISEI AENG eng 𐰮 10C2E OLD TURKIC LETTER YENISEI AENG
2e 𐰮 10C2E OLD TURKIC LETTER YENISEI AENG 2e 𐰮 10C2E OLD TURKIC LETTER YENISEI AENG
ep 𐰯 10C2F OLD TURKIC LETTER ORKHON EP
p 𐰯 10C2F OLD TURKIC LETTER ORKHON EP
2f 𐰯 10C2F OLD TURKIC LETTER ORKHON EP
op 𐰰 10C30 OLD TURKIC LETTER ORKHON OP
up 𐰰 10C30 OLD TURKIC LETTER ORKHON OP
30 𐰰 10C30 OLD TURKIC LETTER ORKHON OP
ic 𐰱 10C31 OLD TURKIC LETTER ORKHON IC
31 𐰱 10C31 OLD TURKIC LETTER ORKHON IC
ec 𐰳 10C33 OLD TURKIC LETTER YENISEI EC ec 𐰳 10C33 OLD TURKIC LETTER YENISEI EC
c 𐰳 10C33 OLD TURKIC LETTER YENISEI EC c 𐰳 10C33 OLD TURKIC LETTER YENISEI EC
33 𐰳 10C33 OLD TURKIC LETTER YENISEI EC 33 𐰳 10C33 OLD TURKIC LETTER YENISEI EC
@ -100,6 +128,17 @@ ar 𐰻 10C3B OLD TURKIC LETTER YENISEI AR
r 𐰻 10C3B OLD TURKIC LETTER YENISEI AR r 𐰻 10C3B OLD TURKIC LETTER YENISEI AR
r1 𐰻 10C3B OLD TURKIC LETTER YENISEI AR r1 𐰻 10C3B OLD TURKIC LETTER YENISEI AR
3b 𐰻 10C3B OLD TURKIC LETTER YENISEI AR 3b 𐰻 10C3B OLD TURKIC LETTER YENISEI AR
aer 𐰼 10C3C OLD TURKIC LETTER ORKHON AER
er 𐰼 10C3C OLD TURKIC LETTER ORKHON AER
r2 𐰼 10C3C OLD TURKIC LETTER ORKHON AER
3c 𐰼 10C3C OLD TURKIC LETTER ORKHON AER
as 𐰽 10C3D OLD TURKIC LETTER ORKHON AS
s1 𐰽 10C3D OLD TURKIC LETTER ORKHON AS
3d 𐰽 10C3D OLD TURKIC LETTER ORKHON AS
aes 𐰾 10C3E OLD TURKIC LETTER ORKHON AES
es 𐰾 10C3E OLD TURKIC LETTER ORKHON AES
s2 𐰾 10C3E OLD TURKIC LETTER ORKHON AES
3e 𐰾 10C3E OLD TURKIC LETTER ORKHON AES
ash 𐱀 10C40 OLD TURKIC LETTER YENISEI ASH ash 𐱀 10C40 OLD TURKIC LETTER YENISEI ASH
sh1 𐱀 10C40 OLD TURKIC LETTER YENISEI ASH sh1 𐱀 10C40 OLD TURKIC LETTER YENISEI ASH
40 𐱀 10C40 OLD TURKIC LETTER YENISEI ASH 40 𐱀 10C40 OLD TURKIC LETTER YENISEI ASH
@ -113,3 +152,8 @@ aet 𐱆 10C46 OLD TURKIC LETTER YENISEI AET
et 𐱆 10C46 OLD TURKIC LETTER YENISEI AET et 𐱆 10C46 OLD TURKIC LETTER YENISEI AET
t2 𐱆 10C46 OLD TURKIC LETTER YENISEI AET t2 𐱆 10C46 OLD TURKIC LETTER YENISEI AET
46 𐱆 10C46 OLD TURKIC LETTER YENISEI AET 46 𐱆 10C46 OLD TURKIC LETTER YENISEI AET
ot 𐱇 10C47 OLD TURKIC LETTER ORKHON OT
ut 𐱇 10C47 OLD TURKIC LETTER ORKHON OT
47 𐱇 10C47 OLD TURKIC LETTER ORKHON OT
bash 𐱈 10C48 OLD TURKIC LETTER ORKHON BASH
48 𐱈 10C48 OLD TURKIC LETTER ORKHON BASH

View File

@ -1,6 +1,6 @@
" Vim syntax support file " Vim syntax support file
" Maintainer: Ben Fritz <fritzophrenic@gmail.com> " Maintainer: Ben Fritz <fritzophrenic@gmail.com>
" Last Change: 2018 Nov 11 " Last Change: 2019 Nov 13
" "
" Additional contributors: " Additional contributors:
" "
@ -20,8 +20,13 @@
" this file uses line continuations " this file uses line continuations
let s:cpo_sav = &cpo let s:cpo_sav = &cpo
let s:ls = &ls let s:ls = &ls
let s:ei_sav = &eventignore
set cpo&vim set cpo&vim
" HTML filetype can take a while to load/highlight if the destination file
" already exists.
set eventignore+=FileType
let s:end=line('$') let s:end=line('$')
" Font " Font
@ -37,6 +42,14 @@ endif
let s:settings = tohtml#GetUserSettings() let s:settings = tohtml#GetUserSettings()
if s:settings.use_xhtml
let s:html5 = 0
elseif s:settings.use_css && !s:settings.no_pre
let s:html5 = 1
else
let s:html5 = 0
endif
if !exists('s:FOLDED_ID') if !exists('s:FOLDED_ID')
let s:FOLDED_ID = hlID("Folded") | lockvar s:FOLDED_ID let s:FOLDED_ID = hlID("Folded") | lockvar s:FOLDED_ID
let s:FOLD_C_ID = hlID("FoldColumn") | lockvar s:FOLD_C_ID let s:FOLD_C_ID = hlID("FoldColumn") | lockvar s:FOLD_C_ID
@ -69,9 +82,10 @@ if !empty(s:settings.prevent_copy)
endif endif
endif endif
" When not in gui we can only guess the colors. " When gui colors are not supported, we can only guess the colors.
" TODO - is this true anymore? " TODO - is this true anymore? Is there a way to ask the terminal what colors
if has("gui_running") " each number means or read them from some file?
if &termguicolors || has("gui_running")
let s:whatterm = "gui" let s:whatterm = "gui"
else else
let s:whatterm = "cterm" let s:whatterm = "cterm"
@ -352,6 +366,12 @@ if s:settings.use_css
\ ] \ ]
else else
" New method: use generated content in the CSS. The only thing needed here
" is a span with no content, with an attribute holding the desired text.
"
" Old method: use an <input> element when text is unsectable. This is still
" used in conditional comments for Internet Explorer, where the new method
" doesn't work.
" "
" Wrap the <input> in a <span> to allow fixing the stupid bug in some fonts " Wrap the <input> in a <span> to allow fixing the stupid bug in some fonts
" which cause browsers to display a 1px gap between lines when these " which cause browsers to display a 1px gap between lines when these
@ -369,16 +389,26 @@ if s:settings.use_css
" to use strchars(), because HTML specifies that the maxlength parameter " to use strchars(), because HTML specifies that the maxlength parameter
" uses the number of unique codepoints for its limit. " uses the number of unique codepoints for its limit.
let wrapperfunc_lines += [ let wrapperfunc_lines += [
\ ' if a:make_unselectable', \ ' if a:make_unselectable',
\ ' return "<span ".a:extra_attrs."class=\"" . l:style_name .'.diffstyle.'"\">'. \ ' return "<span ".a:extra_attrs."class=\"" . l:style_name .'.diffstyle.'"\"'
\ '<input'.s:unselInputType.' class=\"" . l:style_name .'.diffstyle.'"\"'. \ ]
\ ' value=\"".substitute(a:unformatted,''\s\+$'',"","")."\"'. if s:settings.use_input_for_pc !=# 'all'
\ ' onselect=''this.blur(); return false;'''. let wrapperfunc_lines[-1] .= ' " . "data-" . l:style_name . "-content=\"".a:text."\"'
\ ' onmousedown=''this.blur(); return false;'''. endif
\ ' onclick=''this.blur(); return false;'''. let wrapperfunc_lines[-1] .= '>'
\ ' readonly=''readonly'''. if s:settings.use_input_for_pc !=# 'none'
\ ' size=\"".strwidth(a:unformatted)."\"'. let wrapperfunc_lines[-1] .=
\ (s:settings.use_xhtml ? '/' : '').'></span>"', \ '<input'.s:unselInputType.' class=\"" . l:style_name .'.diffstyle.'"\"'.
\ ' value=\"".substitute(a:unformatted,''\s\+$'',"","")."\"'.
\ ' onselect=''this.blur(); return false;'''.
\ ' onmousedown=''this.blur(); return false;'''.
\ ' onclick=''this.blur(); return false;'''.
\ ' readonly=''readonly'''.
\ ' size=\"".strwidth(a:unformatted)."\"'.
\ (s:settings.use_xhtml ? '/' : '').'>'
endif
let wrapperfunc_lines[-1] .= '</span>"'
let wrapperfunc_lines += [
\ ' else', \ ' else',
\ ' return "<span ".a:extra_attrs."class=\"" . l:style_name .'. diffstyle .'"\">".a:text."</span>"' \ ' return "<span ".a:extra_attrs."class=\"" . l:style_name .'. diffstyle .'"\">".a:text."</span>"'
\ ] \ ]
@ -501,27 +531,63 @@ else
endfun endfun
endif endif
if s:settings.prevent_copy =~# 'f' if s:settings.prevent_copy =~# 'f'
" Note the <input> elements for fill spaces will have a single space for if s:settings.use_input_for_pc ==# 'none'
" content, to allow active cursor CSS selection to work. " Simply space-pad to the desired width inside the generated content (note
" " that the FoldColumn definition includes a whitespace:pre rule)
" Wrap the whole thing in a span for the 1px padding workaround for gaps. function! s:FoldColumn_build(char, len, numfill, char2, class, click)
function! s:FoldColumn_build(char, len, numfill, char2, class, click) return "<a href='#' class='".a:class."' onclick='".a:click."' data-FoldColumn-content='".
let l:input_open = "<input readonly='readonly'".s:unselInputType. \ repeat(a:char, a:len).a:char2.repeat(' ', a:numfill).
\ " onselect='this.blur(); return false;'". \ "'></a>"
\ " onmousedown='this.blur(); ".a:click." return false;'". endfun
\ " onclick='return false;' size='". function! s:FoldColumn_fill()
\ string(a:len + (empty(a:char2) ? 0 : 1) + a:numfill) . return s:HtmlFormat(repeat(' ', s:foldcolumn), s:FOLD_C_ID, 0, "", 1)
\ "' " endfun
let l:common_attrs = "class='FoldColumn' value='" else
let l:input_close = (s:settings.use_xhtml ? "' />" : "'>") " Note the <input> elements for fill spaces will have a single space for
return "<span class='".a:class."'>". " content, to allow active cursor CSS selection to work.
\ l:input_open.l:common_attrs.repeat(a:char, a:len). "
\ (!empty(a:char2) ? a:char2 : ""). " Wrap the whole thing in a span for the 1px padding workaround for gaps.
\ l:input_close . "</span>" "
endfun " Build the function line by line containing only what is needed for the
function! s:FoldColumn_fill() " options in use for maximum code sharing with minimal branch logic for
return s:FoldColumn_build('', s:foldcolumn, 0, '', 'FoldColumn', '') " greater speed.
endfun "
" Note, 'exec' commands do not recognize line continuations, so must
" concatenate lines rather than continue them.
let build_fun_lines = [
\ 'function! s:FoldColumn_build(char, len, numfill, char2, class, click)',
\ ' let l:input_open = "<input readonly=''readonly''".s:unselInputType.'.
\ ' " onselect=''this.blur(); return false;''".'.
\ ' " onmousedown=''this.blur(); ".a:click." return false;''".'.
\ ' " onclick=''return false;'' size=''".'.
\ ' string(a:len + (empty(a:char2) ? 0 : 1) + a:numfill) .'.
\ ' "'' "',
\ ' let l:common_attrs = "class=''FoldColumn'' value=''"',
\ ' let l:input_close = (s:settings.use_xhtml ? "'' />" : "''>")'
\ ]
if s:settings.use_input_for_pc ==# 'fallback'
let build_fun_lines += [
\ ' let l:gen_content_link ='.
\ ' "<a href=''#'' class=''FoldColumn'' onclick=''".a:click."'' data-FoldColumn-content=''".'.
\ ' repeat(a:char, a:len).a:char2.repeat('' '', a:numfill).'.
\ ' "''></a>"'
\ ]
endif
let build_fun_lines += [
\ ' return "<span class=''".a:class."''>".'.
\ ' l:input_open.l:common_attrs.repeat(a:char, a:len).(a:char2).'.
\ ' l:input_close.'.
\ (s:settings.use_input_for_pc ==# 'fallback' ? 'l:gen_content_link.' : "").
\ ' "</span>"',
\ 'endfun'
\ ]
" create the function we built line by line above
exec join(build_fun_lines, "\n")
function! s:FoldColumn_fill()
return s:FoldColumn_build(' ', s:foldcolumn, 0, '', 'FoldColumn', '')
endfun
endif
else else
" For normal fold columns, simply space-pad to the desired width (note that " For normal fold columns, simply space-pad to the desired width (note that
" the FoldColumn definition includes a whitespace:pre rule) " the FoldColumn definition includes a whitespace:pre rule)
@ -755,7 +821,11 @@ call extend(s:lines, [
" include encoding as close to the top as possible, but only if not already " 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 (to avoid haggling over content type)
if s:settings.encoding != "" && !s:settings.use_xhtml if s:settings.encoding != "" && !s:settings.use_xhtml
call add(s:lines, "<meta http-equiv=\"content-type\" content=\"text/html; charset=" . s:settings.encoding . '"' . s:tag_close) if s:html5
call add(s:lines, '<meta charset="' . s:settings.encoding . '"' . s:tag_close)
else
call add(s:lines, "<meta http-equiv=\"content-type\" content=\"text/html; charset=" . s:settings.encoding . '"' . s:tag_close)
endif
endif endif
call extend(s:lines, [ call extend(s:lines, [
\ ("<title>".expand("%:p:~")."</title>"), \ ("<title>".expand("%:p:~")."</title>"),
@ -766,6 +836,7 @@ call add(s:lines, '<meta name="syntax" content="'.s:current_syntax.'"'.s:tag_clo
call add(s:lines, '<meta name="settings" content="'. call add(s:lines, '<meta name="settings" content="'.
\ join(filter(keys(s:settings),'s:settings[v:val]'),','). \ join(filter(keys(s:settings),'s:settings[v:val]'),',').
\ ',prevent_copy='.s:settings.prevent_copy. \ ',prevent_copy='.s:settings.prevent_copy.
\ ',use_input_for_pc='.s:settings.use_input_for_pc.
\ '"'.s:tag_close) \ '"'.s:tag_close)
call add(s:lines, '<meta name="colorscheme" content="'. call add(s:lines, '<meta name="colorscheme" content="'.
\ (exists('g:colors_name') \ (exists('g:colors_name')
@ -773,19 +844,21 @@ call add(s:lines, '<meta name="colorscheme" content="'.
\ : 'none'). '"'.s:tag_close) \ : 'none'). '"'.s:tag_close)
if s:settings.use_css if s:settings.use_css
call extend(s:lines, [
\ "<style" . (s:html5 ? "" : " type=\"text/css\"") . ">",
\ s:settings.use_xhtml ? "" : "<!--"])
let s:ieonly = []
if s:settings.dynamic_folds if s:settings.dynamic_folds
if s:settings.hover_unfold if s:settings.hover_unfold
" if we are doing hover_unfold, use css 2 with css 1 fallback for IE6 " if we are doing hover_unfold, use css 2 with css 1 fallback for IE6
call extend(s:lines, [ call extend(s:lines, [
\ "<style type=\"text/css\">",
\ s:settings.use_xhtml ? "" : "<!--",
\ ".FoldColumn { text-decoration: none; white-space: pre; }", \ ".FoldColumn { text-decoration: none; white-space: pre; }",
\ "", \ "",
\ "body * { margin: 0; padding: 0; }", "", \ "body * { margin: 0; padding: 0; }", "",
\ ".open-fold > .Folded { display: none; }", \ ".open-fold > span.Folded { display: none; }",
\ ".open-fold > .fulltext { display: inline; }", \ ".open-fold > .fulltext { display: inline; }",
\ ".closed-fold > .fulltext { display: none; }", \ ".closed-fold > .fulltext { display: none; }",
\ ".closed-fold > .Folded { display: inline; }", \ ".closed-fold > span.Folded { display: inline; }",
\ "", \ "",
\ ".open-fold > .toggle-open { display: none; }", \ ".open-fold > .toggle-open { display: none; }",
\ ".open-fold > .toggle-closed { display: inline; }", \ ".open-fold > .toggle-closed { display: inline; }",
@ -794,65 +867,60 @@ if s:settings.use_css
\ "", "", \ "", "",
\ '/* opening a fold while hovering won''t be supported by IE6 and other', \ '/* opening a fold while hovering won''t be supported by IE6 and other',
\ "similar browsers, but it should fail gracefully. */", \ "similar browsers, but it should fail gracefully. */",
\ ".closed-fold:hover > .fulltext { display: inline; }", \ ".closed-fold:hover > .fulltext { display: inline; }",
\ ".closed-fold:hover > .toggle-filler { display: none; }", \ ".closed-fold:hover > .toggle-filler { display: none; }",
\ ".closed-fold:hover > .Folded { display: none; }", \ ".closed-fold:hover > .Folded { display: none; }"])
\ s:settings.use_xhtml ? "" : '-->', " TODO: IE6 is REALLY old and I can't even test it anymore. Maybe we
\ '</style>']) " should remove this? Leave it in for now, it was working at one point,
" TODO: IE7 doesn't *actually* support XHTML, maybe we should remove this. " and doesn't affect any modern browsers. Even newer IE versions should
" But if it's served up as tag soup, maybe the following will work, so " support the above code and ignore the following.
" leave it in for now. let s:ieonly = [
call extend(s:lines, [
\ "<!--[if lt IE 7]><style type=\"text/css\">", \ "<!--[if lt IE 7]><style type=\"text/css\">",
\ ".open-fold .Folded { display: none; }",
\ ".open-fold .fulltext { display: inline; }", \ ".open-fold .fulltext { display: inline; }",
\ ".open-fold span.Folded { display: none; }",
\ ".open-fold .toggle-open { display: none; }", \ ".open-fold .toggle-open { display: none; }",
\ ".closed-fold .toggle-closed { display: inline; }", \ ".open-fold .toggle-closed { display: inline; }",
\ "", \ "",
\ ".closed-fold .fulltext { display: none; }", \ ".closed-fold .fulltext { display: none; }",
\ ".closed-fold .Folded { display: inline; }", \ ".closed-fold span.Folded { display: inline; }",
\ ".closed-fold .toggle-open { display: inline; }", \ ".closed-fold .toggle-open { display: inline; }",
\ ".closed-fold .toggle-closed { display: none; }", \ ".closed-fold .toggle-closed { display: none; }",
\ "</style>", \ "</style>",
\ "<![endif]-->", \ "<![endif]-->",
\]) \]
else else
" if we aren't doing hover_unfold, use CSS 1 only " if we aren't doing hover_unfold, use CSS 1 only
call extend(s:lines, [ call extend(s:lines, [
\ "<style type=\"text/css\">",
\ s:settings.use_xhtml ? "" :"<!--",
\ ".FoldColumn { text-decoration: none; white-space: pre; }", \ ".FoldColumn { text-decoration: none; white-space: pre; }",
\ ".open-fold .Folded { display: none; }",
\ ".open-fold .fulltext { display: inline; }", \ ".open-fold .fulltext { display: inline; }",
\ ".open-fold span.Folded { display: none; }",
\ ".open-fold .toggle-open { display: none; }", \ ".open-fold .toggle-open { display: none; }",
\ ".closed-fold .toggle-closed { display: inline; }", \ ".open-fold .toggle-closed { display: inline; }",
\ "", \ "",
\ ".closed-fold .fulltext { display: none; }", \ ".closed-fold .fulltext { display: none; }",
\ ".closed-fold .Folded { display: inline; }", \ ".closed-fold span.Folded { display: inline; }",
\ ".closed-fold .toggle-open { display: inline; }", \ ".closed-fold .toggle-open { display: inline; }",
\ ".closed-fold .toggle-closed { display: none; }", \ ".closed-fold .toggle-closed { display: none; }",
\ s:settings.use_xhtml ? "" : '-->',
\ '</style>'
\]) \])
endif endif
else endif
" if we aren't doing any dynamic folding, no need for any special rules " else we aren't doing any dynamic folding, no need for any special rules
call extend(s:lines, [
\ "<style type=\"text/css\">", call extend(s:lines, [
\ s:settings.use_xhtml ? "" : "<!--",
\ s:settings.use_xhtml ? "" : '-->', \ s:settings.use_xhtml ? "" : '-->',
\ "</style>", \ "</style>",
\]) \])
endif call extend(s:lines, s:ieonly)
unlet s:ieonly
endif endif
let s:uses_script = s:settings.dynamic_folds || s:settings.line_ids || !empty(s:settings.prevent_copy) let s:uses_script = s:settings.dynamic_folds || s:settings.line_ids
" insert script tag if needed " insert script tag if needed
if s:uses_script if s:uses_script
call extend(s:lines, [ call extend(s:lines, [
\ "", \ "",
\ "<script type='text/javascript'>", \ "<script" . (s:html5 ? "" : " type='text/javascript'") . ">",
\ s:settings.use_xhtml ? '//<![CDATA[' : "<!--"]) \ s:settings.use_xhtml ? '//<![CDATA[' : "<!--"])
endif endif
@ -924,65 +992,6 @@ if s:settings.line_ids
\ ]) \ ])
endif endif
" Small text columns like the foldcolumn and line number column need a weird
" hack to work around Webkit's and (in versions prior to 9) IE's lack of support
" for the 'ch' unit without messing up Opera, which also doesn't support it but
" works anyway.
"
" The problem is that without the 'ch' unit, it is not possible to specify a
" size of an <input> in terms of character widths. Only Opera seems to do the
" "sensible" thing and make the <input> sized to fit exactly as many characters
" as specified by its "size" attribute, but the spec actually says "at least
" wide enough to fit 'size' characters", so the other browsers are technically
" correct as well.
"
" Anyway, this leads to two diffculties:
" 1. The foldcolumn is made up of multiple elements side-by-side with
" different sizes, each of which has their own extra padding added. Thus, a
" column made up of one item of size 1 and another of size 2 would not
" necessarily be equal in size to another line's foldcolumn with a single
" item of size 3.
" 2. The extra padding added to the <input> elements adds up to make the
" foldcolumn and line number column too wide, especially in Webkit
" browsers.
"
" So, the full workaround is:
" 1. Define a default size in em, equal to the number of characters in the
" input element, in case javascript is disabled and the browser does not
" support the 'ch' unit. Unfortunately this makes Opera no longer work
" properly without javascript. 1em per character is much too wide but it
" looks better in webkit browsers than unaligned columns.
" 2. Insert the following javascript to run at page load, which checks for the
" width of a single character (in an extraneous page element inserted
" before the page title, and set to hidden) and compares it to the width of
" another extra <input> element with only one character. If the width
" matches, the script does nothing more, but if not, it will figure out the
" fraction of an em unit which would correspond with a ch unit if there
" were one, and set the containing element (<pre> or <div>) to a class with
" pre-defined rules which is closest to that fraction of an em. Rules are
" defined from 0.05 em to 1em per ch.
if !empty(s:settings.prevent_copy)
call extend(s:lines, [
\ '',
\ '/* simulate a "ch" unit by asking the browser how big a zero character is */',
\ 'function FixCharWidth() {',
\ ' /* get the hidden element which gives the width of a single character */',
\ ' var goodWidth = document.getElementById("oneCharWidth").clientWidth;',
\ ' /* get all input elements, we''ll filter on class later */',
\ ' var inputTags = document.getElementsByTagName("input");',
\ ' var ratio = 5;',
\ ' var inputWidth = document.getElementById("oneInputWidth").clientWidth;',
\ ' var emWidth = document.getElementById("oneEmWidth").clientWidth;',
\ ' if (inputWidth > goodWidth) {',
\ ' while (ratio < 100*goodWidth/emWidth && ratio < 100) {',
\ ' ratio += 5;',
\ ' }',
\ ' document.getElementById("vimCodeElement'.s:settings.id_suffix.'").className = "em"+ratio;',
\ ' }',
\ '}'
\ ])
endif
" insert script closing tag if needed " insert script closing tag if needed
if s:uses_script if s:uses_script
call extend(s:lines, [ call extend(s:lines, [
@ -992,18 +1001,9 @@ if s:uses_script
\ ]) \ ])
endif endif
call extend(s:lines, ["</head>"]) call extend(s:lines, ["</head>",
if !empty(s:settings.prevent_copy) \ "<body".(s:settings.line_ids ? " onload='JumpToLine();'" : "").">"])
call extend(s:lines,
\ ["<body onload='FixCharWidth();".(s:settings.line_ids ? " JumpToLine();" : "")."'>",
\ "<!-- hidden divs used by javascript to get the width of a char -->",
\ "<div id='oneCharWidth'>0</div>",
\ "<div id='oneInputWidth'><input size='1' value='0'".s:tag_close."</div>",
\ "<div id='oneEmWidth' style='width: 1em;'></div>"
\ ])
else
call extend(s:lines, ["<body".(s:settings.line_ids ? " onload='JumpToLine();'" : "").">"])
endif
if s:settings.no_pre if s:settings.no_pre
" if we're not using CSS we use a font tag which can't have a div inside " if we're not using CSS we use a font tag which can't have a div inside
if s:settings.use_css if s:settings.use_css
@ -1035,14 +1035,68 @@ if !s:settings.no_progress
let s:progressbar={} let s:progressbar={}
" Progessbar specific functions " Progessbar specific functions
func! s:SetProgbarColor()
if hlID("TOhtmlProgress") != 0
hi! link TOhtmlProgress_auto TOhtmlProgress
elseif hlID("TOhtmlProgress_auto")==0 ||
\ !exists("s:last_colors_name") || !exists("g:colors_name") ||
\ g:colors_name != s:last_colors_name
let s:last_colors_name = exists("g:colors_name") ? g:colors_name : "none"
let l:diffatr = synIDattr(hlID("DiffDelete"), "reverse", s:whatterm) ? "fg#" : "bg#"
let l:stlatr = synIDattr(hlID("StatusLine"), "reverse", s:whatterm) ? "fg#" : "bg#"
let l:progbar_color = synIDattr(hlID("DiffDelete"), l:diffatr, s:whatterm)
let l:stl_color = synIDattr(hlID("StatusLine"), l:stlatr, s:whatterm)
if "" == l:progbar_color
let l:progbar_color = synIDattr(hlID("DiffDelete"), "reverse", s:whatterm) ? s:fgc : s:bgc
endif
if "" == l:stl_color
let l:stl_color = synIDattr(hlID("StatusLine"), "reverse", s:whatterm) ? s:fgc : s:bgc
endif
if l:progbar_color == l:stl_color
if s:whatterm == 'cterm'
if l:progbar_color >= (&t_Co/2)
let l:progbar_color-=1
else
let l:progbar_color+=1
endif
else
let l:rgb = map(matchlist(l:progbar_color, '#\zs\x\x\ze\(\x\x\)\(\x\x\)')[:2], 'str2nr(v:val, 16)')
let l:avg = (l:rgb[0] + l:rgb[1] + l:rgb[2])/3
if l:avg >= 128
let l:avg_new = l:avg
while l:avg - l:avg_new < 0x15
let l:rgb = map(l:rgb, 'v:val * 3 / 4')
let l:avg_new = (l:rgb[0] + l:rgb[1] + l:rgb[2])/3
endwhile
else
let l:avg_new = l:avg
while l:avg_new - l:avg < 0x15
let l:rgb = map(l:rgb, 'min([max([v:val, 4]) * 5 / 4, 255])')
let l:avg_new = (l:rgb[0] + l:rgb[1] + l:rgb[2])/3
endwhile
endif
let l:progbar_color = printf("#%02x%02x%02x", l:rgb[0], l:rgb[1], l:rgb[2])
endif
echomsg "diff detected progbar color set to" l:progbar_color
endif
exe "hi TOhtmlProgress_auto" s:whatterm."bg=".l:progbar_color
endif
endfun
func! s:ProgressBar(title, max_value, winnr) func! s:ProgressBar(title, max_value, winnr)
let pgb=copy(s:progressbar) let pgb=copy(s:progressbar)
let pgb.title = a:title.' ' let pgb.title = a:title.' '
let pgb.max_value = a:max_value let pgb.max_value = a:max_value
let pgb.winnr = a:winnr let pgb.winnr = a:winnr
let pgb.cur_value = 0 let pgb.cur_value = 0
let pgb.items = { 'title' : { 'color' : 'Statusline' }, let pgb.items = { 'title' : { 'color' : 'Statusline' },
\'bar' : { 'color' : 'Statusline' , 'fillcolor' : 'DiffDelete' , 'bg' : 'Statusline' } , \'bar' : { 'color' : 'Statusline' , 'fillcolor' : 'TOhtmlProgress_auto' , 'bg' : 'Statusline' } ,
\'counter' : { 'color' : 'Statusline' } } \'counter' : { 'color' : 'Statusline' } }
let pgb.last_value = 0 let pgb.last_value = 0
let pgb.needs_redraw = 0 let pgb.needs_redraw = 0
@ -1134,6 +1188,8 @@ if !s:settings.no_progress
" to process folds we make two passes through each line " to process folds we make two passes through each line
let s:pgb = s:ProgressBar("Processing folds:", line('$')*2, s:orgwin) let s:pgb = s:ProgressBar("Processing folds:", line('$')*2, s:orgwin)
endif endif
call s:SetProgbarColor()
endif endif
" First do some preprocessing for dynamic folding. Do this for the entire file " First do some preprocessing for dynamic folding. Do this for the entire file
@ -1577,28 +1633,44 @@ while s:lnum <= s:end
let s:tabidx = 0 let s:tabidx = 0
let s:tabwidth = 0 let s:tabwidth = 0
while s:idx >= 0 while s:idx >= 0
while s:startcol+s:idx > s:tabwidth + s:tablist[s:tabidx] if s:startcol + s:idx == 1
let s:tabwidth += s:tablist[s:tabidx] let s:i = s:tablist[0]
if s:tabidx < len(s:tablist)-1
let s:tabidx = s:tabidx+1
endif
endwhile
if has("multi_byte_encoding")
if s:startcol + s:idx == 1
let s:i = s:tablist[s:tabidx]
else
if s:idx == 0
let s:prevc = matchstr(s:line, '.\%' . (s:startcol + s:idx + s:offset) . 'c')
else
let s:prevc = matchstr(s:expandedtab, '.\%' . (s:idx + 1) . 'c')
endif
let s:vcol = virtcol([s:lnum, s:startcol + s:idx + s:offset - len(s:prevc)])
let s:i = s:tablist[s:tabidx] - (s:vcol - s:tabwidth)
endif
let s:offset -= s:i - 1
else else
let s:i = s:tablist[s:tabidx] - ((s:idx + s:startcol - 1) - s:tabwidth) " Get the character, which could be multiple bytes, which falls
" immediately before the found tab. Extract it by matching a
" character just prior to the column where the tab matches.
" We'll use this to get the byte index of the character
" immediately preceding the tab, so we can then look up the
" virtual column that character appears in, to determine how
" much of the current tabstop has been used up.
if s:idx == 0
" if the found tab is the first character in the text being
" processed, we need to get the character prior to the text,
" given by startcol.
let s:prevc = matchstr(s:line, '.\%' . (s:startcol + s:offset) . 'c')
else
" Otherwise, the byte index of the tab into s:expandedtab is
" given by s:idx.
let s:prevc = matchstr(s:expandedtab, '.\%' . (s:idx + 1) . 'c')
endif
let s:vcol = virtcol([s:lnum, s:startcol + s:idx + s:offset - len(s:prevc)])
" find the tabstop interval to use for the tab we just found. Keep
" adding tabstops (which could be variable) until we would exceed
" the virtual screen position of the start of the found tab.
while s:vcol >= s:tabwidth + s:tablist[s:tabidx]
let s:tabwidth += s:tablist[s:tabidx]
if s:tabidx < len(s:tablist)-1
let s:tabidx = s:tabidx+1
endif
endwhile
let s:i = s:tablist[s:tabidx] - (s:vcol - s:tabwidth)
endif endif
" update offset to keep the index within the line corresponding to
" actual tab characters instead of replaced spaces; s:idx reflects
" replaced spaces in s:expandedtab, s:offset cancels out all but
" the tab character itself.
let s:offset -= s:i - 1
let s:expandedtab = substitute(s:expandedtab, '\t', repeat(' ', s:i), '') let s:expandedtab = substitute(s:expandedtab, '\t', repeat(' ', s:i), '')
let s:idx = stridx(s:expandedtab, "\t") let s:idx = stridx(s:expandedtab, "\t")
endwhile endwhile
@ -1674,12 +1746,10 @@ call append(line('$'), "<!-- vim: set foldmethod=manual : -->")
" Now, when we finally know which, we define the colors and styles " Now, when we finally know which, we define the colors and styles
if s:settings.use_css if s:settings.use_css
1;/<style type="text/+1 1;/<style\>/+1
endif endif
" Normal/global attributes " Normal/global attributes
" For Netscape 4, set <body> attributes too, though, strictly speaking, it's
" incorrect.
if s:settings.use_css if s:settings.use_css
if s:settings.no_pre if s:settings.no_pre
call append('.', "body { color: " . s:fgc . "; background-color: " . s:bgc . "; font-family: ". s:htmlfont ."; }") call append('.', "body { color: " . s:fgc . "; background-color: " . s:bgc . "; font-family: ". s:htmlfont ."; }")
@ -1702,61 +1772,111 @@ if s:settings.use_css
" if we use any input elements for unselectable content, make sure they look " if we use any input elements for unselectable content, make sure they look
" like normal text " like normal text
if !empty(s:settings.prevent_copy) if !empty(s:settings.prevent_copy)
call append('.', 'input { border: none; margin: 0; padding: 0; font-family: '.s:htmlfont.'; }') if s:settings.use_input_for_pc !=# "none"
+ call append('.', 'input { border: none; margin: 0; padding: 0; font-family: '.s:htmlfont.'; }')
" ch units for browsers which support them, em units for a somewhat
" reasonable fallback. Also make sure the special elements for size
" calculations aren't seen.
call append('.', [
\ "input[size='1'] { width: 1em; width: 1ch; }",
\ "input[size='2'] { width: 2em; width: 2ch; }",
\ "input[size='3'] { width: 3em; width: 3ch; }",
\ "input[size='4'] { width: 4em; width: 4ch; }",
\ "input[size='5'] { width: 5em; width: 5ch; }",
\ "input[size='6'] { width: 6em; width: 6ch; }",
\ "input[size='7'] { width: 7em; width: 7ch; }",
\ "input[size='8'] { width: 8em; width: 8ch; }",
\ "input[size='9'] { width: 9em; width: 9ch; }",
\ "input[size='10'] { width: 10em; width: 10ch; }",
\ "input[size='11'] { width: 11em; width: 11ch; }",
\ "input[size='12'] { width: 12em; width: 12ch; }",
\ "input[size='13'] { width: 13em; width: 13ch; }",
\ "input[size='14'] { width: 14em; width: 14ch; }",
\ "input[size='15'] { width: 15em; width: 15ch; }",
\ "input[size='16'] { width: 16em; width: 16ch; }",
\ "input[size='17'] { width: 17em; width: 17ch; }",
\ "input[size='18'] { width: 18em; width: 18ch; }",
\ "input[size='19'] { width: 19em; width: 19ch; }",
\ "input[size='20'] { width: 20em; width: 20ch; }",
\ "#oneCharWidth, #oneEmWidth, #oneInputWidth { padding: 0; margin: 0; position: absolute; left: -999999px; visibility: hidden; }"
\ ])
+21
for w in range(5, 100, 5)
let base = 0.01 * w
call append('.', join(map(range(1,20), "'.em'.w.' input[size='''.v:val.'''] { width: '.string(v:val*base).'em; }'")))
+ +
endfor " ch units for browsers which support them, em units for a somewhat
if s:settings.prevent_copy =~# 'f' " reasonable fallback.
" Make the cursor show active fold columns as active areas, and empty fold for w in range(1, 20, 1)
" columns as not interactive. call append('.', [
call append('.', ['input.FoldColumn { cursor: pointer; }', \ "input[size='".w."'] { width: ".w."em; width: ".w."ch; }"
\ 'input.FoldColumn[value=""] { cursor: default; }' \ ])
\ ]) +
+2 endfor
endif endif
" make line number column show as non-interactive if not selectable
if s:settings.prevent_copy =~# 'n' if s:settings.use_input_for_pc !=# 'all'
call append('.', 'input.LineNr { cursor: default; }') let s:unselectable_styles = []
+ if s:settings.prevent_copy =~# 'f'
call add(s:unselectable_styles, 'FoldColumn')
endif
if s:settings.prevent_copy =~# 'n'
call add(s:unselectable_styles, 'LineNr')
endif
if s:settings.prevent_copy =~# 't' && !s:settings.ignore_folding
call add(s:unselectable_styles, 'Folded')
endif
if s:settings.prevent_copy =~# 'd'
call add(s:unselectable_styles, 'DiffDelete')
endif
if s:settings.use_input_for_pc !=# 'none'
call append('.', [
\ '/* Note: IE does not support @supports conditionals, but also does not fully support',
\ ' "content:" with custom content, so we *want* the check to fail */',
\ '@supports ( content: attr(data-custom-content) ) {'
\ ])
+3
endif
" The line number column inside the foldtext is styled just like the fold
" text in Vim, but it should use the prevent_copy settings of line number
" rather than fold text. Apply the prevent_copy styles to foldtext
" specifically for line numbers, which always come after the fold column,
" or at the beginning of the line.
if s:settings.prevent_copy =~# 'n' && !s:settings.ignore_folding
call append('.', [
\ ' .FoldColumn + .Folded, .Folded:first-child { user-select: none; }',
\ ' .FoldColumn + [data-Folded-content]::before, [data-Folded-content]:first-child::before { content: attr(data-Folded-content); }',
\ ' .FoldColumn + [data-Folded-content]::before, [data-Folded-content]:first-child::before { padding-bottom: 1px; display: inline-block; /* match the 1-px padding of standard items with background */ }',
\ ' .FoldColumn + span[data-Folded-content]::before, [data-Folded-content]:first-child::before { cursor: default; }',
\ ])
+4
endif
for s:style_name in s:unselectable_styles
call append('.', [
\ ' .'.s:style_name.' { user-select: none; }',
\ ' [data-'.s:style_name.'-content]::before { content: attr(data-'.s:style_name.'-content); }',
\ ' [data-'.s:style_name.'-content]::before { padding-bottom: 1px; display: inline-block; /* match the 1-px padding of standard items with background */ }',
\ ' span[data-'.s:style_name.'-content]::before { cursor: default; }',
\ ])
+4
endfor
if s:settings.use_input_for_pc !=# 'none'
call append('.', [
\ ' input { display: none; }',
\ '}'
\ ])
+2
endif
unlet s:unselectable_styles
endif endif
" make fold text and line number column within fold text show as
" non-interactive if not selectable " Fix mouse cursor shape for the fallback <input> method of uncopyable text
if (s:settings.prevent_copy =~# 'n' || s:settings.prevent_copy =~# 't') && !s:settings.ignore_folding if s:settings.use_input_for_pc !=# 'none'
call append('.', 'input.Folded { cursor: default; }') if s:settings.prevent_copy =~# 'f'
+ " Make the cursor show active fold columns as active areas, and empty fold
" columns as not interactive.
call append('.', ['input.FoldColumn { cursor: pointer; }',
\ 'input.FoldColumn[value="'.repeat(' ', s:foldcolumn).'"] { cursor: default; }'
\ ])
+2
if s:settings.use_input_for_pc !=# 'all'
call append('.', [
\ 'a[data-FoldColumn-content="'.repeat(' ', s:foldcolumn).'"] { cursor: default; }'
\ ])
+1
end
endif
" make line number column show as non-interactive if not selectable
if s:settings.prevent_copy =~# 'n'
call append('.', 'input.LineNr { cursor: default; }')
+
endif
" make fold text and line number column within fold text show as
" non-interactive if not selectable
if (s:settings.prevent_copy =~# 'n' || s:settings.prevent_copy =~# 't') && !s:settings.ignore_folding
call append('.', 'input.Folded { cursor: default; }')
+
endif
" make diff filler show as non-interactive if not selectable
if s:settings.prevent_copy =~# 'd'
call append('.', 'input.DiffDelete { cursor: default; }')
+
endif
endif endif
endif endif
else else
" For Netscape 4, set <body> attributes too, though, strictly speaking, it's
" incorrect.
execute '%s:<body\([^>]*\):<body bgcolor="' . s:bgc . '" text="' . s:fgc . '"\1>\r<font face="'. s:htmlfont .'"' execute '%s:<body\([^>]*\):<body bgcolor="' . s:bgc . '" text="' . s:fgc . '"\1>\r<font face="'. s:htmlfont .'"'
endif endif
@ -1779,8 +1899,8 @@ endif
" The DTD " The DTD
if s:settings.use_xhtml if s:settings.use_xhtml
exe "normal! gg$a\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">" exe "normal! gg$a\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">"
elseif s:settings.use_css && !s:settings.no_pre elseif s:html5
exe "normal! gg0i<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n" exe "normal! gg0i<!DOCTYPE html>\n"
else else
exe "normal! gg0i<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n" exe "normal! gg0i<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n"
endif endif
@ -1823,6 +1943,7 @@ exec 'resize' s:old_winheight
let &l:winfixheight = s:old_winfixheight let &l:winfixheight = s:old_winfixheight
let &ls=s:ls let &ls=s:ls
let &eventignore=s:ei_sav
" Save a little bit of memory (worth doing?) " Save a little bit of memory (worth doing?)
unlet s:htmlfont s:whitespace unlet s:htmlfont s:whitespace
@ -1831,7 +1952,7 @@ unlet s:old_magic s:old_more s:old_fen s:old_winheight
unlet! s:old_isprint unlet! s:old_isprint
unlet s:whatterm s:stylelist s:diffstylelist s:lnum s:end s:margin s:fgc s:bgc s:old_winfixheight unlet s:whatterm s:stylelist s:diffstylelist s:lnum s:end s:margin s:fgc s:bgc s:old_winfixheight
unlet! s:col s:id s:attr s:len s:line s:new s:expandedtab s:concealinfo s:diff_mode unlet! s:col s:id s:attr s:len s:line s:new s:expandedtab s:concealinfo s:diff_mode
unlet! s:orgwin s:newwin s:orgbufnr s:idx s:i s:offset s:ls s:origwin_stl unlet! s:orgwin s:newwin s:orgbufnr s:idx s:i s:offset s:ls s:ei_sav s:origwin_stl
unlet! s:newwin_stl s:current_syntax unlet! s:newwin_stl s:current_syntax
if !v:profiling if !v:profiling
delfunc s:HtmlColor delfunc s:HtmlColor

View File

@ -1,17 +1,17 @@
" Vim syntax file " Vim syntax file
" Language: Fortran 2008 (and older: Fortran 2003, 95, 90, and 77) " Language: Fortran 2008 (and older: Fortran 2003, 95, 90, and 77)
" Version: 100 " Version: 101
" Last Change: 2016 Oct. 29 " Last Change: 2019 Nov. 26
" Maintainer: Ajit J. Thakkar <ajit@unb.ca>; <http://www2.unb.ca/~ajit/> " Maintainer: Ajit J. Thakkar <ajit@unb.ca>; <http://www2.unb.ca/~ajit/>
" Usage: For instructions, do :help fortran-syntax from Vim " Usage: For instructions, do :help fortran-syntax from Vim
" Credits: " Credits:
" Version 0.1 (April 2000) for Fortran 95 was based on the Fortran 77 syntax file by " Version 0.1 for Fortran 95 was created (April 2000) by Ajit Thakkar from the
" Mario Eusebio and Preben Guldberg. Since then, useful suggestions and contributions " Fortran 77 syntax file by Mario Eusebio and Preben Guldberg.
" have been made, in chronological order, by: " Since then, useful suggestions and contributions have been made, in order, by:
" Andrej Panjkov, Bram Moolenaar, Thomas Olsen, Michael Sternberg, Christian Reile, " Andrej Panjkov, Bram Moolenaar, Thomas Olsen, Michael Sternberg, Christian Reile,
" Walter Dieudonné, Alexander Wagner, Roman Bertle, Charles Rendleman, " Walter Dieudonné, Alexander Wagner, Roman Bertle, Charles Rendleman,
" Andrew Griffiths, Joe Krahn, Hendrik Merx, Matt Thompson, Jan Hermann, " Andrew Griffiths, Joe Krahn, Hendrik Merx, Matt Thompson, Jan Hermann,
" Stefano Zaghi, Vishnu V. Krishnan and Judicaël Grasset " Stefano Zaghi, Vishnu V. Krishnan, Judicaël Grasset, and Takuma Yoshida
if exists("b:current_syntax") if exists("b:current_syntax")
finish finish
@ -92,9 +92,9 @@ else
syn match fortranConstructName "^\s*\zs\a\w*\ze\s*:" syn match fortranConstructName "^\s*\zs\a\w*\ze\s*:"
endif endif
if exists("fortran_more_precise") if exists("fortran_more_precise")
syn match fortranConstructName "\(\<end\s*do\s\+\)\@<=\a\w*" syn match fortranConstructName "\(\<end\s*do\s\+\)\@11<=\a\w*"
syn match fortranConstructName "\(\<end\s*if\s\+\)\@<=\a\w*" syn match fortranConstructName "\(\<end\s*if\s\+\)\@11<=\a\w*"
syn match fortranConstructName "\(\<end\s*select\s\+\)\@<=\a\w*" syn match fortranConstructName "\(\<end\s*select\s\+\)\@15<=\a\w*"
endif endif
syn match fortranUnitHeader "\<end\>" syn match fortranUnitHeader "\<end\>"
@ -185,8 +185,8 @@ syn match fortranLabelNumber display "^ \d\s"ms=s+4,me=e-1
if exists("fortran_more_precise") if exists("fortran_more_precise")
" Numbers as targets " Numbers as targets
syn match fortranTarget display "\(\<if\s*(.\+)\s*\)\@<=\(\d\+\s*,\s*\)\{2}\d\+\>" syn match fortranTarget display "\(\<if\s*(.\+)\s*\)\@<=\(\d\+\s*,\s*\)\{2}\d\+\>"
syn match fortranTarget display "\(\<do\s\+\)\@<=\d\+\>" syn match fortranTarget display "\(\<do\s\+\)\@<11=\d\+\>"
syn match fortranTarget display "\(\<go\s*to\s*(\=\)\@<=\(\d\+\s*,\s*\)*\d\+\>" syn match fortranTarget display "\(\<go\s*to\s*(\=\)\@<11=\(\d\+\s*,\s*\)*\d\+\>"
endif endif
syn keyword fortranTypeR external syn keyword fortranTypeR external
@ -274,7 +274,7 @@ syn match fortranType "\<elemental\>"
syn match fortranType "\<pure\>" syn match fortranType "\<pure\>"
syn match fortranType "\<impure\>" syn match fortranType "\<impure\>"
if exists("fortran_more_precise") if exists("fortran_more_precise")
syn match fortranConstructName "\(\<end\s*forall\s\+\)\@<=\a\w*\>" syn match fortranConstructName "\(\<end\s*forall\s\+\)\@<15=\a\w*\>"
endif endif
if b:fortran_dialect == "f08" if b:fortran_dialect == "f08"
@ -375,7 +375,8 @@ syn match cPreProc "^\s*#\s*\(define\|ifdef\)\>.*"
syn match cPreProc "^\s*#\s*\(elif\|if\)\>.*" syn match cPreProc "^\s*#\s*\(elif\|if\)\>.*"
syn match cPreProc "^\s*#\s*\(ifndef\|undef\)\>.*" syn match cPreProc "^\s*#\s*\(ifndef\|undef\)\>.*"
syn match cPreCondit "^\s*#\s*\(else\|endif\)\>.*" syn match cPreCondit "^\s*#\s*\(else\|endif\)\>.*"
syn region cIncluded contained start=+"[^(]+ skip=+\\\\\|\\"+ end=+"+ contains=fortranLeftMargin,fortranContinueMark,fortranSerialNumber syn region cIncluded contained start=+"[^("]+ skip=+\\\\\|\\"+ end=+"+ contains=fortranLeftMargin,fortranContinueMark,fortranSerialNumber
"syn region cIncluded contained start=+"[^("]+ skip=+\\\\\|\\"+ end=+"+
syn match cIncluded contained "<[^>]*>" syn match cIncluded contained "<[^>]*>"
syn match cInclude "^\s*#\s*include\>\s*["<]" contains=cIncluded syn match cInclude "^\s*#\s*include\>\s*["<]" contains=cIncluded

View File

@ -1,7 +1,7 @@
" Vim syntax file " Vim syntax file
" Language: Vim help file " Language: Vim help file
" Maintainer: Bram Moolenaar (Bram@vim.org) " Maintainer: Bram Moolenaar (Bram@vim.org)
" Last Change: 2019 May 12 " Last Change: 2019 Nov 26
" Quit when a (custom) syntax file was already loaded " Quit when a (custom) syntax file was already loaded
if exists("b:current_syntax") if exists("b:current_syntax")
@ -85,6 +85,7 @@ syn match helpSpecial "\[group]"
syn match helpNormal "\[\(readonly\|fifo\|socket\|converted\|crypted\)]" syn match helpNormal "\[\(readonly\|fifo\|socket\|converted\|crypted\)]"
syn match helpSpecial "CTRL-." syn match helpSpecial "CTRL-."
syn match helpSpecial "CTRL-SHIFT-."
syn match helpSpecial "CTRL-Break" syn match helpSpecial "CTRL-Break"
syn match helpSpecial "CTRL-PageUp" syn match helpSpecial "CTRL-PageUp"
syn match helpSpecial "CTRL-PageDown" syn match helpSpecial "CTRL-PageDown"

View File

@ -339,8 +339,7 @@ msgstr "E512: Kapatma başarısız oldu"
msgid "E513: write error, conversion failed (make 'fenc' empty to override)" msgid "E513: write error, conversion failed (make 'fenc' empty to override)"
msgstr "" msgstr ""
"E513: Yazma hatası, dönüştürme başarısız (yoksaymak için kodlamayı boş " "E513: Yazma hatası, dönüştürme başarısız (yoksaymak için 'fenc'i boş bırakın)"
"bırakın)"
#, c-format #, c-format
msgid "" msgid ""
@ -519,7 +518,7 @@ msgstr "çerçeve en yüksek düzeyde: %d"
#, c-format #, c-format
msgid "Breakpoint in \"%s%s\" line %ld" msgid "Breakpoint in \"%s%s\" line %ld"
msgstr "Kesme noktası şurada: \"%s%s\", %ld. satır" msgstr "\"%s%s\" içinde kesme noktası, %ld. satır"
#, c-format #, c-format
msgid "E161: Breakpoint not found: %s" msgid "E161: Breakpoint not found: %s"
@ -598,7 +597,6 @@ msgstr ""
msgid "E100: No other buffer in diff mode" msgid "E100: No other buffer in diff mode"
msgstr "E100: Karşılaştırma kipinde başka hiçbir arabellek yok" msgstr "E100: Karşılaştırma kipinde başka hiçbir arabellek yok"
#, c-format #, c-format
msgid "E102: Can't find buffer \"%s\"" msgid "E102: Can't find buffer \"%s\""
msgstr "E102: Arabellek \"%s\" bulunamıyor" msgstr "E102: Arabellek \"%s\" bulunamıyor"
@ -1172,14 +1170,14 @@ msgstr[0] "%ld değiştirme/%ld satırda"
msgstr[1] "%ld değiştirme/%ld satırda" msgstr[1] "%ld değiştirme/%ld satırda"
msgid "E147: Cannot do :global recursive with a range" msgid "E147: Cannot do :global recursive with a range"
msgstr "E147: :global özyinelemesi bir erim ile yapılamaz" msgstr "E147: :global özyineli bir erim ile yapılamaz"
msgid "E148: Regular expression missing from global" msgid "E148: Regular expression missing from global"
msgstr "E148: Düzenli ifadeler genelden kayıp" msgstr "E148: Düzenli ifadeler eksik"
#, c-format #, c-format
msgid "Pattern found in every line: %s" msgid "Pattern found in every line: %s"
msgstr "Dizgi her satırda bulundu: %s" msgstr "Dizginin bulunduğu her satır: %s"
#, c-format #, c-format
msgid "Pattern not found: %s" msgid "Pattern not found: %s"
@ -1272,7 +1270,7 @@ msgid "Executing: %s"
msgstr "Çalıştırılıyor: %s" msgstr "Çalıştırılıyor: %s"
msgid "E169: Command too recursive" msgid "E169: Command too recursive"
msgstr "E169: Komut çok özyinelemeli" msgstr "E169: Komut çok özyineli"
#, c-format #, c-format
msgid "E605: Exception not caught: %s" msgid "E605: Exception not caught: %s"
@ -1374,7 +1372,7 @@ msgid "Window position: X %d, Y %d"
msgstr "Pencere konumu: X %d, Y %d" msgstr "Pencere konumu: X %d, Y %d"
msgid "E188: Obtaining window position not implemented for this platform" msgid "E188: Obtaining window position not implemented for this platform"
msgstr "E188: Pencere konumunu alma özelliği bu sistemde mevcut değil" msgstr "E188: Pencere konumunu alma özelliği bu platformda mevcut değil"
msgid "E466: :winpos requires two number arguments" msgid "E466: :winpos requires two number arguments"
msgstr "E466: :winpos iki adet sayı değişken gerektirir" msgstr "E466: :winpos iki adet sayı değişken gerektirir"
@ -1807,7 +1805,7 @@ msgid "E222: Add to read buffer"
msgstr "E222: Okuma arabelleğine ekle" msgstr "E222: Okuma arabelleğine ekle"
msgid "E223: recursive mapping" msgid "E223: recursive mapping"
msgstr "E223: Özyinelemeli eşlemleme" msgstr "E223: Özyineli eşlemleme"
msgid "E851: Failed to create a new process for the GUI" msgid "E851: Failed to create a new process for the GUI"
msgstr "E851: Grafik arabirim için yeni bir işlem yaratılamadı" msgstr "E851: Grafik arabirim için yeni bir işlem yaratılamadı"
@ -2040,7 +2038,7 @@ msgstr "E253: Yazıtipi seti adı: %s"
#, c-format #, c-format
msgid "Font0: %s" msgid "Font0: %s"
msgstr "Font0: %s" msgstr "Yazıtipi0: %s"
#, c-format #, c-format
msgid "Font%d: %s" msgid "Font%d: %s"
@ -2048,11 +2046,11 @@ msgstr "Yazıtipi%d: %s"
#, c-format #, c-format
msgid "Font%d width is not twice that of font0" msgid "Font%d width is not twice that of font0"
msgstr "Yazıtipi%d genişliği font0 genişliğinin iki katı olmalıdır" msgstr "Yazıtipi%d genişliği yazıtipi0 genişliğinin iki katı olmalıdır"
#, c-format #, c-format
msgid "Font0 width: %d" msgid "Font0 width: %d"
msgstr "Font0 genişliği: %d" msgstr "Yazıtipi0 genişliği: %d"
#, c-format #, c-format
msgid "Font%d width: %d" msgid "Font%d width: %d"
@ -2185,7 +2183,7 @@ msgid "Print job sent."
msgstr "Yazdırma işi gönderildi" msgstr "Yazdırma işi gönderildi"
msgid "E679: recursive loop loading syncolor.vim" msgid "E679: recursive loop loading syncolor.vim"
msgstr "E679: syncolor.vim yüklenirken özyinelemeli döngü" msgstr "E679: syncolor.vim yüklenirken özyineli döngü"
#, c-format #, c-format
msgid "E411: highlight group not found: %s" msgid "E411: highlight group not found: %s"
@ -2354,7 +2352,7 @@ msgstr "E469: Geçersiz cscopequickfix bayrağı %c, %c için"
#, c-format #, c-format
msgid "E259: no matches found for cscope query %s of %s" msgid "E259: no matches found for cscope query %s of %s"
msgstr "E259: cscope sorguse %s/%s için eşleşme bulunamadı" msgstr "E259: cscope sorgusu %s/%s için eşleşme bulunamadı"
msgid "cscope commands:\n" msgid "cscope commands:\n"
msgstr "cscope komutları:\n" msgstr "cscope komutları:\n"
@ -2519,7 +2517,7 @@ msgstr ""
"E887: Üzgünüm, bu komut etkin değil, Python'un site birimi yüklenemedi." "E887: Üzgünüm, bu komut etkin değil, Python'un site birimi yüklenemedi."
msgid "E659: Cannot invoke Python recursively" msgid "E659: Cannot invoke Python recursively"
msgstr "E659: Python özyinelemeli olarak çalıştırılamıyor" msgstr "E659: Python özyineli olarak çalıştırılamıyor"
msgid "E837: This Vim cannot execute :py3 after using :python" msgid "E837: This Vim cannot execute :py3 after using :python"
msgstr "E837: Bu Vim :python komutundan sonra :py3 komutunu çalıştıramaz" msgstr "E837: Bu Vim :python komutundan sonra :py3 komutunu çalıştıramaz"
@ -2803,13 +2801,12 @@ msgstr "Sonrasında değişken eksik:"
msgid "Garbage after option argument" msgid "Garbage after option argument"
msgstr "Seçenek değişkeninden sonra anlamsız veri" msgstr "Seçenek değişkeninden sonra anlamsız veri"
msgid "Invalid argument for" msgid "Invalid argument for"
msgstr "Şunun için geçersiz değişken:" msgstr "Şunun için geçersiz değişken:"
#, c-format #, c-format
msgid "%d files to edit\n" msgid "%d files to edit\n"
msgstr "düzenlenecek %d dosya\n" msgstr "%d dosya düzenleniyor\n"
msgid "netbeans is not supported with this GUI\n" msgid "netbeans is not supported with this GUI\n"
msgstr "NetBeans bu grafik arabirimde desteklenmiyor\n" msgstr "NetBeans bu grafik arabirimde desteklenmiyor\n"
@ -2892,7 +2889,7 @@ msgid ""
msgstr "" msgstr ""
"\n" "\n"
"BÜYÜK/küçük harfin yoksayıldığı yerde bayrağı BÜYÜK harfli yapmak " "BÜYÜK/küçük harfin yoksayıldığı yerde bayrağı BÜYÜK harfli yapmak "
"içinbaşına / koyun" "için başına / koyun"
msgid "" msgid ""
"\n" "\n"
@ -3091,7 +3088,7 @@ msgid "--servername <name>\tSend to/become the Vim server <name>"
msgstr "--servername <ad>\t<ad> Vim sunucusuna gönder veya sunucu ol" msgstr "--servername <ad>\t<ad> Vim sunucusuna gönder veya sunucu ol"
msgid "--startuptime <file>\tWrite startup timing messages to <file>" msgid "--startuptime <file>\tWrite startup timing messages to <file>"
msgstr "--startuptime <dsy>\tBaşlangıç zamanlama iletilerini <dosya>'ya yaz" msgstr "--startuptime <dsy>\tBaşlangıç zamanlama iletilerini <dsy>'ya yaz"
msgid "-i <viminfo>\t\tUse <viminfo> instead of .viminfo" msgid "-i <viminfo>\t\tUse <viminfo> instead of .viminfo"
msgstr "-i <viminfo>\t\t.viminfo yerine <viminfo> kullan" msgstr "-i <viminfo>\t\t.viminfo yerine <viminfo> kullan"
@ -3216,11 +3213,11 @@ msgstr ": Gönderme başarısız oldu.\n"
#, c-format #, c-format
msgid "E224: global abbreviation already exists for %s" msgid "E224: global abbreviation already exists for %s"
msgstr "E224: %s için genel kısaltma hâlihazırda var" msgstr "E224: %s için global kısaltma hâlihazırda var"
#, c-format #, c-format
msgid "E225: global mapping already exists for %s" msgid "E225: global mapping already exists for %s"
msgstr "E225: %s için genel eşlemleme hâlihazırda var " msgstr "E225: %s için global eşlemleme hâlihazırda var "
#, c-format #, c-format
msgid "E226: abbreviation already exists for %s" msgid "E226: abbreviation already exists for %s"
@ -3505,7 +3502,6 @@ msgstr ""
"Bu .swp dosyasını silmeniz iyi olur.\n" "Bu .swp dosyasını silmeniz iyi olur.\n"
"\n" "\n"
msgid "Swap files found:" msgid "Swap files found:"
msgstr "Takas dosyası bulundu:" msgstr "Takas dosyası bulundu:"
@ -3878,14 +3874,14 @@ msgstr "Sayı girin ve <Enter>'a basın (boş iptal eder): "
#, c-format #, c-format
msgid "%ld more line" msgid "%ld more line"
msgid_plural "%ld more lines" msgid_plural "%ld more lines"
msgstr[0] "%ld fazla satır" msgstr[0] "%ld daha fazla satır"
msgstr[1] "%ld fazla satır" msgstr[1] "%ld daha fazla satır"
#, c-format #, c-format
msgid "%ld line less" msgid "%ld line less"
msgid_plural "%ld fewer lines" msgid_plural "%ld fewer lines"
msgstr[0] "%ld az satır" msgstr[0] "%ld daha az satır"
msgstr[1] "%ld az satır" msgstr[1] "%ld daha az satır"
msgid " (Interrupted)" msgid " (Interrupted)"
msgstr " (Yarıda kesildi)" msgstr " (Yarıda kesildi)"
@ -4583,7 +4579,7 @@ msgid "E70: Empty %s%%[]"
msgstr "E70: Boş %s%%[]" msgstr "E70: Boş %s%%[]"
msgid "E956: Cannot use pattern recursively" msgid "E956: Cannot use pattern recursively"
msgstr "E956: Dizgi özyinelemeli olarak kullanılamıyor" msgstr "E956: Dizgi özyineli olarak kullanılamıyor"
#, c-format #, c-format
msgid "E554: Syntax error in %s{...}" msgid "E554: Syntax error in %s{...}"
@ -4745,7 +4741,6 @@ msgstr[1] "%ld satır kopyalandı%s"
msgid "E353: Nothing in register %s" msgid "E353: Nothing in register %s"
msgstr "E353: Yazmaç %s boş" msgstr "E353: Yazmaç %s boş"
msgid "" msgid ""
"E883: search pattern and expression register may not contain two or more " "E883: search pattern and expression register may not contain two or more "
"lines" "lines"
@ -5335,11 +5330,11 @@ msgstr "E765: 'spellfile' içinde %d girdi yok"
#, c-format #, c-format
msgid "Word '%.*s' removed from %s" msgid "Word '%.*s' removed from %s"
msgstr "Sözcük '%.*s', %s içinden çıkartıldı" msgstr "Sözcük '%.*s' %s içinden çıkartıldı"
#, c-format #, c-format
msgid "Word '%.*s' added to %s" msgid "Word '%.*s' added to %s"
msgstr "Sözcük '%.*s', %s dosyasına eklendi" msgstr "Sözcük '%.*s' %s dosyasına eklendi"
msgid "E763: Word characters differ between spell files" msgid "E763: Word characters differ between spell files"
msgstr "E763: Sözcük karakterleri yazım dosyaları arasında ayrımlı" msgstr "E763: Sözcük karakterleri yazım dosyaları arasında ayrımlı"
@ -5356,7 +5351,7 @@ msgstr "Üzgünüm, yalnızca %ld öneri"
#, c-format #, c-format
msgid "Change \"%.*s\" to:" msgid "Change \"%.*s\" to:"
msgstr "\"%.*s\", şuna değiştirilecek:" msgstr "\"%.*s\" şuna değiştirilecek:"
#, c-format #, c-format
msgid " < \"%.*s\"" msgid " < \"%.*s\""
@ -5656,7 +5651,7 @@ msgid ""
"--- Terminal keys ---" "--- Terminal keys ---"
msgstr "" msgstr ""
"\n" "\n"
"--- Uçbirim anahtarları ---" "--- Uçbirim düğmeleri ---"
msgid "Cannot open $VIMRUNTIME/rgb.txt" msgid "Cannot open $VIMRUNTIME/rgb.txt"
msgstr "$VIMRUNTIME/rgb.txt açılamıyor" msgstr "$VIMRUNTIME/rgb.txt açılamıyor"
@ -6402,7 +6397,7 @@ msgid ""
"# global variables:\n" "# global variables:\n"
msgstr "" msgstr ""
"\n" "\n"
"# genel değişkenler:\n" "# global değişkenler:\n"
msgid "" msgid ""
"\n" "\n"
@ -6558,7 +6553,6 @@ msgstr "E370: %s kitaplığı yüklenemedi"
msgid "Sorry, this command is disabled: the Perl library could not be loaded." msgid "Sorry, this command is disabled: the Perl library could not be loaded."
msgstr "Üzgünüm, bu komut etkin değil: Perl kitaplığı yüklenemedi." msgstr "Üzgünüm, bu komut etkin değil: Perl kitaplığı yüklenemedi."
msgid "Edit with &multiple Vims" msgid "Edit with &multiple Vims"
msgstr "Birden &fazla Vim ile düzenle" msgstr "Birden &fazla Vim ile düzenle"
@ -6566,7 +6560,7 @@ msgid "Edit with single &Vim"
msgstr "Tek bir &Vim ile düzenle" msgstr "Tek bir &Vim ile düzenle"
msgid "Diff with Vim" msgid "Diff with Vim"
msgstr "Ayrımları Vim ile gözet" msgstr "Vim kullanarak karşılaştır"
msgid "Edit with &Vim" msgid "Edit with &Vim"
msgstr "&Vim ile düzenle" msgstr "&Vim ile düzenle"
@ -6580,7 +6574,6 @@ msgstr "Mevcut Vim ile düzenle - "
msgid "Edits the selected file(s) with Vim" msgid "Edits the selected file(s) with Vim"
msgstr "Seçili dosyaları Vim ile düzenler" msgstr "Seçili dosyaları Vim ile düzenler"
msgid "gvimext.dll error" msgid "gvimext.dll error"
msgstr "gvimext.dll hatası" msgstr "gvimext.dll hatası"
@ -6994,7 +6987,7 @@ msgid "E919: Directory not found in '%s': \"%s\""
msgstr "E919: '%s' içinde dizin bulunamadı: \"%s\"" msgstr "E919: '%s' içinde dizin bulunamadı: \"%s\""
msgid "E952: Autocommand caused recursive behavior" msgid "E952: Autocommand caused recursive behavior"
msgstr "E952: Otokomut özyineleme davranışına neden oldu" msgstr "E952: Otokomut özyineli davranışa neden oldu"
msgid "E328: Menu only exists in another mode" msgid "E328: Menu only exists in another mode"
msgstr "E328: Menü yalnızca başka bir kipte mevcut" msgstr "E328: Menü yalnızca başka bir kipte mevcut"
@ -7170,11 +7163,11 @@ msgstr "pencereler arasında gezinirken hata"
#, c-format #, c-format
msgid "unable to unset global option %s" msgid "unable to unset global option %s"
msgstr "%s genel seçenek ayarı kapatılamıyor" msgstr "%s global seçenek ayarı kapatılamıyor"
#, c-format #, c-format
msgid "unable to unset option %s which does not have global value" msgid "unable to unset option %s which does not have global value"
msgstr "genel bir değeri olmayan %s seçenek ayarı kapatılamıyor" msgstr "global değeri olmayan %s seçenek ayarı kapatılamıyor"
msgid "attempt to refer to deleted tab page" msgid "attempt to refer to deleted tab page"
msgstr "silinmiş sekme sayfasına başvurma denemesi" msgstr "silinmiş sekme sayfasına başvurma denemesi"