0
0
mirror of https://github.com/vim/vim.git synced 2025-09-24 03:44:06 -04:00

updated for version 7.0f05

This commit is contained in:
Bram Moolenaar
2006-04-29 21:55:22 +00:00
parent 8ea9123258
commit d8fc5c0b99
8 changed files with 930 additions and 225 deletions

View File

@@ -96,9 +96,9 @@ function! GetRubyVarType(v)
let ctors = '\(now\|new\|open\|get_instance\)'
endif
let [lnum,lcol] = searchpos(''.a:v.'\>\s*[+\-*/]*=\s*\([^ \t]\+.' . ctors .'\>\|[\[{"''/]\|%r{\)','nb',stopline)
let [lnum,lcol] = searchpos(''.a:v.'\>\s*[+\-*/]*=\s*\([^ \t]\+.' . ctors .'\>\|[\[{"''/]\|%r{\|[A-Za-z0-9@:\-()]\+...\?\)','nb',stopline)
if lnum != 0 && lcol != 0
let str = matchstr(getline(lnum),'=\s*\([^ \t]\+.' . ctors . '\>\|[\[{"''/]\|%r{\)',lcol)
let str = matchstr(getline(lnum),'=\s*\([^ \t]\+.' . ctors . '\>\|[\[{"''/]\|%r{\|[A-Za-z0-9@:\-()]\+...\?\)',lcol)
let str = substitute(str,'^=\s*','','')
call setpos('.',pos)
if str == '"' || str == ''''
@@ -109,6 +109,8 @@ function! GetRubyVarType(v)
return 'Hash'
elseif str == '/' || str == '%r{'
return 'Regexp'
elseif strlen(str) >= 4 && stridx(str,'..') != -1
return 'Range'
elseif strlen(str) > 4
let l = stridx(str,'.')
return str[0:l-1]
@@ -217,6 +219,7 @@ def load_buffer_module(name)
end
def get_buffer_entity(name, vimfun)
return nil if /(\"|\')+/.match( name )
buf = VIM::Buffer.current
nums = eval( VIM::evaluate( vimfun % name ) )
return nil if nums == nil
@@ -234,6 +237,14 @@ def get_buffer_entity(name, vimfun)
return classdef
end
def get_var_type( receiver )
if /(\"|\')+/.match( receiver )
"String"
else
VIM::evaluate("GetRubyVarType('%s')" % receiver)
end
end
def get_buffer_classes()
# this will be a little expensive.
allow_aggressive_load = VIM::evaluate('g:rubycomplete_classes_in_global')
@@ -300,64 +311,55 @@ def get_completions(base)
load_requires
load_rails
input = VIM::evaluate('expand("<cWORD>")')
input += base
input.lstrip!
if input.length == 0
input = VIM::Buffer.current.line
input.strip!
end
message = nil
cpos = VIM::Window.current.cursor[1] - 1
input = input[0..cpos] if cpos != 0
input += base
rip = input.rindex(/\s/,cpos)
if rip
input = input[rip..input.length]
end
asn = /^.*(\+|\-|\*|=|\(|\[)=?(\s*[A-Za-z0-9_:@.-]*)(\s*(\{|\+|\-|\*|\%|\/)?\s*).*/
if asn.match(input)
input = $2
end
input.strip!
message = nil
receiver = nil
candidates = []
case input
when /^(\/[^\/]*\/)\.([^.]*)$/
# Regexp
when /^(\/[^\/]*\/)\.([^.]*)$/ # Regexp
receiver = $1
message = Regexp.quote($2)
candidates = Regexp.instance_methods(true)
select_message(receiver, message, candidates)
when /^([^\]]*\])\.([^.]*)$/
# Array
when /^([^\]]*\])\.([^.]*)$/ # Array
receiver = $1
message = Regexp.quote($2)
candidates = Array.instance_methods(true)
select_message(receiver, message, candidates)
when /^([^\}]*\})\.([^.]*)$/
# Proc or Hash
when /^([^\}]*\})\.([^.]*)$/ # Proc or Hash
receiver = $1
message = Regexp.quote($2)
candidates = Proc.instance_methods(true) | Hash.instance_methods(true)
select_message(receiver, message, candidates)
when /^(:[^:.]*)$/
# Symbol
when /^(:[^:.]*)$/ # Symbol
if Symbol.respond_to?(:all_symbols)
sym = $1
candidates = Symbol.all_symbols.collect{|s| ":" + s.id2name}
candidates.grep(/^#{sym}/)
candidates.delete_if do |c|
c.match( /'/ )
end
candidates.uniq!
candidates.sort!
else
[]
receiver = $1
candidates = Symbol.all_symbols.collect{|s| s.id2name}
candidates.delete_if { |c| c.match( /'/ ) }
end
when /^::([A-Z][^:\.\(]*)$/
# Absolute Constant or class methods
when /^::([A-Z][^:\.\(]*)$/ # Absolute Constant or class methods
receiver = $1
candidates = Object.constants
candidates.grep(/^#{receiver}/).collect{|e| "::" + e}
when /^(((::)?[A-Z][^:.\(]*)+)::?([^:.]*)$/
# Constant or class methods
when /^(((::)?[A-Z][^:.\(]*)+)::?([^:.]*)$/ # Constant or class methods
receiver = $1
message = Regexp.quote($4)
begin
@@ -367,39 +369,30 @@ def get_completions(base)
end
candidates.grep(/^#{message}/).collect{|e| receiver + "::" + e}
when /^(:[^:.]+)\.([^.]*)$/
# Symbol
when /^(:[^:.]+)\.([^.]*)$/ # Symbol
receiver = $1
message = Regexp.quote($2)
candidates = Symbol.instance_methods(true)
select_message(receiver, message, candidates)
when /^([0-9_]+(\.[0-9_]+)?(e[0-9]+)?)\.([^.]*)$/
# Numeric
when /^([0-9_]+(\.[0-9_]+)?(e[0-9]+)?)\.([^.]*)$/ # Numeric
receiver = $1
message = Regexp.quote($4)
begin
candidates = eval(receiver).methods
rescue Exception
candidates
end
select_message(receiver, message, candidates)
when /^(\$[^.]*)$/
when /^(\$[^.]*)$/ #global
candidates = global_variables.grep(Regexp.new(Regexp.quote($1)))
# when /^(\$?(\.?[^.]+)+)\.([^.]*)$/
when /^((\.?[^.]+)+)\.([^.]*)$/
# variable
when /^((\.?[^.]+)+)\.([^.]*)$/ # variable
receiver = $1
message = Regexp.quote($3)
load_buffer_class( receiver )
cv = eval("self.class.constants")
vartype = VIM::evaluate("GetRubyVarType('%s')" % receiver)
vartype = get_var_type( receiver )
if vartype != ''
load_buffer_class( vartype )
@@ -426,25 +419,19 @@ def get_completions(base)
/^(IRB|SLex|RubyLex|RubyToken)/ =~ m.name
candidates.concat m.instance_methods(false)
}
candidates.sort!
candidates.uniq!
end
#identify_type( receiver )
select_message(receiver, message, candidates)
#when /^((\.?[^.]+)+)\.([^.]*)\(\s*\)*$/
#function call
#obj = $1
#func = $3
when /^\(?\s*[A-Za-z0-9:^@.%\/+*\(\)]+\.\.\.?[A-Za-z0-9:^@.%\/+*\(\)]+\s*\)?\.([^.]*)/
message = $1
candidates = Range.instance_methods(true)
when /^\.([^.]*)$/
# unknown(maybe String)
when /^\[(\s*[A-Za-z0-9:^@.%\/+*\(\)\[\]\{\}.\'\"],?)*\].([^.]*)/
message = $2
candidates = Array.instance_methods(true)
receiver = ""
when /^\.([^.]*)$/ # unknown(maybe String)
message = Regexp.quote($1)
candidates = String.instance_methods(true)
select_message(receiver, message, candidates)
else
inclass = eval( VIM::evaluate("IsInClassDef()") )
@@ -460,7 +447,6 @@ def get_completions(base)
begin
candidates = eval( "#{receiver}.instance_methods" )
candidates += get_rails_helpers
select_message(receiver, message, candidates)
rescue Exception
found = nil
end
@@ -470,24 +456,16 @@ def get_completions(base)
if inclass == nil || found == nil
candidates = eval("self.class.constants")
candidates += get_buffer_classes
message = receiver = input
end
end
candidates.delete_if { |x| x == nil }
candidates.uniq!
candidates.sort!
(candidates|ReservedWords).grep(/^#{Regexp.quote(input)}/)
end
end
#print candidates
if message != nil && message.length > 0
rexp = '^%s' % message.downcase
candidates.delete_if do |c|
c.downcase.match( rexp )
$~ == nil
end
end
candidates = candidates.grep(/^#{Regexp.quote(message)}/) if message != nil
outp = ""
# tags = VIM::evaluate("taglist('^%s$')" %
valid = (candidates-Object.instance_methods)
rg = 0..valid.length
@@ -502,24 +480,6 @@ def get_completions(base)
end
end
def select_message(receiver, message, candidates)
#tags = VIM::evaluate("taglist('%s')" % receiver)
#print tags
candidates.grep(/^#{message}/).collect do |e|
case e
when /^[a-zA-Z_]/
receiver + "." + e
when /^[0-9]/
when *Operators
#receiver + " " + e
end
end
candidates.delete_if { |x| x == nil }
candidates.uniq!
candidates.sort!
end
# }}} ruby completion
RUBYEOF
endfunction
@@ -527,4 +487,4 @@ endfunction
let g:rubycomplete_rails_loaded = 0
call s:DefRuby()
" vim:tw=78:sw=4:ts=8:ft=vim:norl:
" vim:tw=78:sw=4:ts=8:et:ft=vim:norl:

View File

@@ -1,4 +1,4 @@
*editing.txt* For Vim version 7.0f. Last change: 2006 Apr 17
*editing.txt* For Vim version 7.0f. Last change: 2006 Apr 29
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -343,12 +343,12 @@ CTRL-^ Edit the alternate file (equivalent to ":e #").
separated by a non-filename (see 'isfname') and
non-numeric character. White space between the
filename, the separator and the number are ignored.
Examples: >
eval.c:10
eval.c @ 20
eval.c (30)
eval.c 40
<
Examples:
eval.c:10 ~
eval.c @ 20 ~
eval.c (30) ~
eval.c 40 ~
*v_gF*
{Visual}[count]gF Same as "v_gf".

727
runtime/keymap/kana.vim Normal file
View File

@@ -0,0 +1,727 @@
" This script was originally created by Rory McCann <ebelular at gmail dot com>.
" Dan Kenigsberg noticed some deficiencies and suggested this one instead.
"
" Maintainer: Rory McCann <ebelular at gmail dot com>
" Modified by: Edward L. Fox <edyfox at gmail dot com>
" Last Change: 2006-04-29 11:14:32
"
"
"
" Kana.kmap (Japanese Phonograms)
"
" Converted from Gaspar Sinai's yudit 2.7.6
" GNU (C) Gaspar Sinai <gsinai@yudit.org>
"
" WARNING
" -------
" This version of Kana.kmap is different from the one that has been used
" with yudit-2.7.2 or earlier. The main difference is that this kmap is
" arranged in such a way that it complies with an authorized Japanese
" transliteration. As a result, backward compatibility is not guaranteed.
"
" NOTE
" ----
" 1. In general, the transliteration is based on Japanese Government's
" Cabinet Notification 1 (Dec. 9, 1954).
"
" Summary:
"
" (1) To transliterate Japanese language, Table 1 should be used
" primarily.
" (2) Table 2 may be used only when existing conventions such as
" international relationship should be respected.
" (3) Other transliteration is acceptable only when neither Table 1
" nor Table 2 gives any specification of the sound in question
"
" For details, refer to
"
" http://xembho.tripod.com/siryo/naikaku_kokuzi.html
"
" 2. The specification instructed by the Cabinet Notification is rather
" inadequate even for daily use. At the present time there are thus
" many unauthorized but widely accepted conventions used together with
" the authorized transliteration. This kmap contains some of them for
" user's convenience (cf. Hiragana 3 and Katakana 3).
"
" 3. For the unicode mapping relevant to this kmap, refer to 3075--30F5 of
"
" http://www.macchiato.com/unicode/charts.html
"
" HISTORY
" -------
" 2005-01-11 <danken@cs.technion.ac.il>
" * Converted to Vim format.
" 2003-01-22 <kazunobu.kuriyama@nifty.com>
"
" * Submitted to gsinai@yudit.org
"
" ============================================================================
scriptencoding utf-8
" ----------------------------------------------------------------------------
" Kigou (Punctuation etc.)
" ----------------------------------------------------------------------------
let b:keymap_name = "kana"
loadkeymap
"0x20 0x3000
,
. 。
,,
xx
@
<
>
<<
>>
{ 「
} 」
{{ 『
}} 』
[.(
).] 】
[
]
[(
)] 〗
[[ 〚
]] 〛
.. ・
-
" ----------------------------------------------------------------------------
" Hiragana 1 --- Table 1, Cabinet Notification No. 1 (Dec. 9, 1954)
" ----------------------------------------------------------------------------
a
i
u
e
o
ka
ki
ku
ke
ko
sa
si
su
se
so
ta
ti
tu
te
to
na
ni
nu
ne
no
ha
hi
hu
he
ho
ma
mi
mu
me
mo
ya
yu
yo
ra
ri
ru
re
ro
wa
ga
gi
gu
ge
go
za
zi
zu
ze
zo
da
de
do
ba
bi
bu
be
bo
pa
pi
pu
pe
po
kya きゃ
kyu きゅ
kyo きょ
sya しゃ
syu しゅ
syo しょ
tya ちゃ
tyu ちゅ
tyo ちょ
nya にゃ
nyu にゅ
nyo にょ
hya ひゃ
hyu ひゅ
hyo ひょ
mya みゃ
myu みゅ
myo みょ
rya りゃ
ryu りゅ
ryo りょ
gya ぎゃ
gyu ぎゅ
gyo ぎょ
zya じゃ
zyu じゅ
zyo じょ
bya びゃ
byu びゅ
byo びょ
pya ぴゃ
pyu ぴゅ
pyo ぴょ
n
n'
" ----------------------------------------------------------------------------
" Hiragana 2 --- Table 2, Cabinet Notification No. 1 (Dec. 9, 1954)
" ----------------------------------------------------------------------------
sha しゃ
shi
shu しゅ
sho しょ
tsu
cha ちゃ
chi
chu ちゅ
cho ちょ
fu
ja じゃ
ji
ju じゅ
jo じょ
di
du
dya ぢゃ
dyu ぢゅ
dyo ぢょ
kwa くゎ
gwa ぐゎ
wo
" ----------------------------------------------------------------------------
" Hiragana 3 --- Conventional transliterations
" ----------------------------------------------------------------------------
" Small Hiragana: The prefix X is never pronounced. It is used as something
" like an escape character.
xa
xi
xu
xe
xo
xtu
xya
xyu
xyo
xwa
" Historic `wi' and `we'
wi
we
" Preceded by a small `tu'
kka っか
kki っき
kku っく
kke っけ
kko っこ
ssa っさ
ssi っし
ssu っす
sse っせ
sso っそ
tta った
tti っち
ttu っつ
tte って
tto っと
hha っは
hhi っひ
hhu っふ
hhe っへ
hho っほ
mma っま
mmi っみ
mmu っむ
mme っめ
mmo っも
yya っや
yyu っゆ
yyo っよ
rra っら
rri っり
rru っる
rre っれ
rro っろ
wwa っわ
gga っが
ggi っぎ
ggu っぐ
gge っげ
ggo っご
zza っざ
zzi っじ
zzu っず
zze っぜ
zzo っぞ
dda っだ
ddi っぢ
ddu っづ
dde っで
ddo っど
bba っば
bbi っび
bbu っぶ
bbe っべ
bbo っぼ
ppa っぱ
ppi っぴ
ppu っぷ
ppe っぺ
ppo っぽ
" Proceded by a small `tu' and followed by a small 'ya', 'yu' or 'yo'
kkya っきゃ
kkyu っきゅ
kkyo っきょ
ssya っしゃ
ssyu っしゅ
ssyo っしょ
ttya っちゃ
ttyu っちゅ
ttyo っちょ
hhya っひゃ
hhyu っひゅ
hhyo っひょ
mmya っみゃ
mmyu っみゅ
mmyo っみょ
rrya っりゃ
rryu っりゅ
rryo っりょ
ggya っぎゃ
ggyu っぎゅ
ggyo っぎょ
zzya っじゃ
zzyu っじゅ
zzyo っじょ
bbya っびゃ
bbyu っびゅ
bbyo っびょ
ppya っぴゃ
ppyu っぴゅ
ppyo っぴょ
" ----------------------------------------------------------------------------
" Katakana 1 --- Table 1, Cabinet Notification No. 1 (Dec. 9, 1954)
" ----------------------------------------------------------------------------
A
I
U
E
O
KA
KI
KU
KE
KO
SA
SI
SU
SE
SO
TA
TI
TU
TE
TO
NA
NI
NU
NE
NO
HA
HI
HU
HE
HO
MA
MI
MU
ME
MO
YA
YU
YO
RA
RI
RU
RE
RO
WA
GA
GI
GU
GE
GO
ZA
ZI
ZU
ZE
ZO
DA
DE
DO
BA
BI
BU
BE
BO
PA
PI
PU
PE
PO
KYA キャ
KYU キュ
KYO キョ
SYA シャ
SYU シュ
SYO ショ
TYA チャ
TYU チュ
TYO チョ
NYA ニャ
NYU ニュ
NYO ニョ
HYA ヒャ
HYU ヒュ
HYO ヒョ
MYA ミャ
MYU ミュ
MYO ミョ
RYA リャ
RYU リュ
RYO リョ
GYA ギャ
GYU ギュ
GYO ギョ
ZYA ジャ
ZYU ジュ
ZYO ジョ
BYA ビャ
BYU ビュ
BYO ビョ
PYA ピャ
PYU ピュ
PYO ピョ
N
N'
" ----------------------------------------------------------------------------
" Katakana 2 --- Table 2, Cabinet Notification No. 1 (Dec. 9, 1954)
" ----------------------------------------------------------------------------
SHA シャ
SHI
SHU シュ
SHO ショ
TSU
CHA チャ
CHI
CHU チュ
CHO チョ
FU
JA ジャ
JI
JU ジュ
JO ジョ
DI
DU
DYA ヂャ
DYU ヂュ
DYO ヂョ
KWA クヮ
GWA グヮ
WO
" ----------------------------------------------------------------------------
" Katakana 3 --- Conventional transliterations
" ----------------------------------------------------------------------------
" Small Katakana: The prefix X is never pronounced. It is used as something
" like an escape character.
XA
XI
XU
XE
XO
XTU
XYA
XYU
XYO
XWA
" Used only for counting someone or something
XKA
XKE
" Historic `wi' and `we'
WI
WE
" Used for the sound `v' of European languages
VA ヴァ
VI ヴィ
VU
VE ヴェ
VO ヴォ
VYU ヴュ
" Preceded by a small `tu'
KKA ッカ
KKI ッキ
KKU ック
KKE ッケ
KKO ッコ
SSA ッサ
SSI ッシ
SSU ッス
SSE ッセ
SSO ッソ
TTA ッタ
TTI ッチ
TTU ッツ
TTE ッテ
TTO ット
HHA ッハ
HHI ッヒ
HHU ッフ
HHE ッヘ
HHO ッホ
MMA ッマ
MMI ッミ
MMU ッム
MME ッメ
MMO ッモ
YYA ッヤ
YYU ッユ
YYO ッヨ
RRA ッラ
RRI ッリ
RRU ッル
RRE ッレ
RRO ッロ
WWA ッワ
GGA ッガ
GGI ッギ
GGU ッグ
GGE ッゲ
GGO ッゴ
ZZA ッザ
ZZI ッジ
ZZU ッズ
ZZE ッゼ
ZZO ッゾ
DDA ッダ
DDI ッヂ
DDU ッヅ
DDE ッデ
DDO ッド
BBA ッバ
BBI ッビ
BBU ッブ
BBE ッベ
BBO ッボ
PPA ッパ
PPI ッピ
PPU ップ
PPE ッペ
PPO ッポ
" Proceded by a small `tu' and followed by a small 'ya', 'yu' or 'yo'
KKYA ッキャ
KKYU ッキュ
KKYO ッキョ
SSYA ッシャ
SSYU ッシュ
SSYO ッショ
TTYA ッチャ
TTYU ッチュ
TTYO ッチョ
HHYA ッヒャ
HHYU ッヒュ
HHYO ッヒョ
MMYA ッミャ
MMYU ッミュ
MMYO ッミョ
RRYA ッリャ
RRYU ッリュ
RRYO ッリョ
GGYA ッギャ
GGYU ッギュ
GGYO ッギョ
ZZYA ッジャ
ZZYU ッジュ
ZZYO ッジョ
BBYA ッビャ
BBYU ッビュ
BBYO ッビョ
PPYA ッピャ
PPYU ッピュ
PPYO ッピョ

View File

@@ -13,19 +13,20 @@ syn match sisu_error contains=sisu_link,sisu_error_wspace "<![^ei]\S\+!>"
"% 10 Markers: Endnote Identifiers, Pagebreaks etc.:
if !exists("sisu_no_identifiers")
syn match sisu_mark_endnote "\~^"
syn match sisu_contain "</\?sub>"
syn match sisu_break "<br>\|<br />"
syn match sisu_control "<p>\|</p>\|<p />\|<:p[bn]>"
syn match sisu_contain contains=@NoSpell "</\?sub>"
syn match sisu_break contains=@NoSpell "<br>\|<br />"
syn match sisu_control contains=@NoSpell "<p>\|</p>\|<p />\|<:p[bn]>"
syn match sisu_html "<center>\|</center>"
syn match sisu_marktail "[~-]#"
syn match sisu_html "<td>\|<td \|<tr>\|</td>\|</tr>\|<table>\|<table \|</table>"
syn match sisu_html contains=@NoSpell "<td>\|<td \|<tr>\|</td>\|</tr>\|<table>\|<table \|</table>"
syn match sisu_control "\""
syn match sisu_underline "\(^\| \)_[a-zA-Z0-9]\+_\([ .,]\|$\)"
syn match sisu_number "[0-9a-f]\{32\}\|[0-9a-f]\{64\}"
syn match sisu_number contains=@NoSpell "[0-9a-f]\{32\}\|[0-9a-f]\{64\}"
syn match sisu_link contains=@NoSpell "\(http://\|\.\.\/\)\S\+"
"metaverse specific
syn match sisu_ocn "<\~\d\+;\w\d\+;\w\d\+>"
syn match sisu_ocn contains=@NoSpell "<\~\d\+;\w\d\+;\w\d\+>"
syn match sisu_marktail "<\~#>"
syn match sisu_markpara "<:i[12]>"
syn match sisu_markpara contains=@NoSpell "<:i[12]>"
syn match sisu_link " \*\~\S\+"
syn match sisu_action "^<:insert\d\+>"
syn match sisu_contain "<:e>"
@@ -34,12 +35,11 @@ endif
syn match sisu_number "\<\(0x\x\+\|0b[01]\+\|0\o\+\|0\.\d\+\|0\|[1-9][\.0-9_]*\)\>"
syn match sisu_number "?\(\\M-\\C-\|\\c\|\\C-\|\\M-\)\=\(\\\o\{3}\|\\x\x\{2}\|\\\=\w\)"
"% 8 Tuned Error - is error if not already matched
syn match sisu_error "[\~/\*!_]{\|}[\~/\*!_]" contains=sisu_error
syn match sisu_error "<a href\|</a>]" contains=sisu_error
syn match sisu_error contains=sisu_error "[\~/\*!_]{\|}[\~/\*!_]"
syn match sisu_error contains=sisu_error "<a href\|</a>]"
"% 7 Simple Enclosed Markup:
" Simple Markup:
"% url/link
syn region sisu_link contains=sisu_error,@NoSpell matchgroup=sisu_link start="\(http://\|\.\.\/\)" end="\(\s\|$\)"
syn region sisu_link contains=sisu_error,sisu_error_wspace matchgroup=sisu_action start="^<<\s*|[a-zA-Z0-9^._-]\+|@|[a-zA-Z0-9^._-]\+|"rs=s+2 end="$"
"% header
syn region sisu_header_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break matchgroup=sisu_header start="^0\~\(\S\+\|[^-]\)" end="$"
@@ -47,30 +47,30 @@ syn region sisu_header_content contains=sisu_error,sisu_error_wspace,sisu_conten
syn region sisu_header_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break matchgroup=sisu_header start="^@\S\+:[+-]\?\s"rs=e-1 end="$"
syn region sisu_header_content contains=sisu_error,sisu_error_wspace,sisu_content_alt,sisu_link,sisu_linked,sisu_break matchgroup=sisu_header start="^@\(tags\?\|date\):\s\+"rs=e-1 end="\n$"
"% headings
syn region sisu_heading contains=sisu_mark_endnote,sisu_content_endnote,sisu_marktail,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_ocn,sisu_error,sisu_error_wspace,@Spell matchgroup=sisu_structure start="^\([1-8]\|:\?[A-C]\)\~\(\S\+\|[^-]\)" end="$"
syn region sisu_heading contains=sisu_mark_endnote,sisu_content_endnote,sisu_marktail,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_ocn,sisu_error,sisu_error_wspace matchgroup=sisu_structure start="^\([1-8]\|:\?[A-C]\)\~\(\S\+\|[^-]\)" end="$"
"% grouped text
syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,@Spell matchgroup=sisu_contain start="table{.\+" end="}table"
syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,@Spell matchgroup=sisu_contain start="{t\~h}" end="$$"
syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,@Spell matchgroup=sisu_contain start="^\(alt\|group\|poem\){" end="^}\(alt\|group\|poem\)"
syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="table{.\+" end="}table"
syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="{t\~h}" end="$$"
syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="^\(alt\|group\|poem\){" end="^}\(alt\|group\|poem\)"
syn region sisu_content_alt contains=sisu_error matchgroup=sisu_contain start="^code{" end="^}code"
"% endnotes
syn region sisu_content_endnote contains=@Spell,sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break matchgroup=sisu_mark_endnote start="\~{" end="}\~" skip="\n"
syn region sisu_content_endnote contains=sisu_strikeout,sisu_number,sisu_control,sisu_link,sisu_identifier,sisu_error,sisu_error_wspace,@Spell,sisu_mark,sisu_break matchgroup=sisu_mark_endnote start="\^\~" end="\n\n"
syn region sisu_content_endnote contains=sisu_link,sisu_strikeout,sisu_underline,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break matchgroup=sisu_mark_endnote start="\~{" end="}\~" skip="\n"
syn region sisu_content_endnote contains=sisu_strikeout,sisu_number,sisu_control,sisu_link,sisu_identifier,sisu_error,sisu_error_wspace,sisu_mark,sisu_break matchgroup=sisu_mark_endnote start="\^\~" end="\n\n"
"% images
syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,@Spell matchgroup=sisu_link start="{" end="}\(\(http://\|\.\./\)\S\+\|image\)" oneline
syn region sisu_linked contains=sisu_fontface,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_link start="{" end="}\(\(http://\|\.\./\)\S\+\|image\)" oneline
"% some line operations
syn region sisu_control contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_error,sisu_error_wspace,@Spell matchgroup=sisu_control start="\(\(^\| \)!_ \|<:b>\)" end="$"
syn region sisu_normal contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_linked,sisu_error,sisu_error_wspace,@Spell matchgroup=sisu_markpara start="^_\([12*]\|[12]\*\) " end="$"
syn region sisu_normal contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_linked,sisu_error,sisu_error_wspace,@Spell matchgroup=sisu_markpara start="^\(#[ 1]\|_# \)" end="$"
syn region sisu_comment contains=@Spell matchgroup=sisu_comment start="^%\{1,2\} " end="$"
syn region sisu_control contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_error,sisu_error_wspace matchgroup=sisu_control start="\(\(^\| \)!_ \|<:b>\)" end="$"
syn region sisu_normal contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^_\([12*]\|[12]\*\) " end="$"
syn region sisu_normal contains=sisu_strikeout,sisu_identifier,sisu_content_endnote,sisu_mark_endnote,sisu_link,sisu_linked,sisu_error,sisu_error_wspace matchgroup=sisu_markpara start="^\(#[ 1]\|_# \)" end="$"
syn region sisu_comment matchgroup=sisu_comment start="^%\{1,2\} " end="$"
"% font face curly brackets
syn region sisu_control contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,@Spell matchgroup=sisu_fontface start="\*{" end="}\*"
syn region sisu_control contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,@Spell matchgroup=sisu_fontface start="!{" end="}!"
syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,@Spell matchgroup=sisu_fontface start="_{" end="}_"
syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,@Spell matchgroup=sisu_fontface start="/{" end="}/"
syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,@Spell matchgroup=sisu_fontface start="+{" end="}+"
syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,@Spell matchgroup=sisu_fontface start="\^{" end="}\^"
syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,@Spell matchgroup=sisu_fontface start=",{" end="},"
syn region sisu_control contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\*{" end="}\*"
syn region sisu_control contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="!{" end="}!"
syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="_{" end="}_"
syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="/{" end="}/"
syn region sisu_underline contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="+{" end="}+"
syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start="\^{" end="}\^"
syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_fontface start=",{" end="},"
syn region sisu_strikeout contains=sisu_error matchgroup=sisu_fontface start="-{" end="}-"
syn region sisu_html contains=sisu_error contains=sisu_strikeout matchgroup=sisu_contain start="<a href=\".\{-}\">" end="</a>" oneline
"% single words bold italicise etc. "workon
@@ -78,18 +78,18 @@ syn region sisu_control contains=sisu_error matchgroup=sisu_control start="\([ (
syn region sisu_identifier contains=sisu_error matchgroup=sisu_content_alt start="\([ ]\|^\)/[^{ \|\n\\]"hs=e-1 end="/\[ \.\]" skip="[a-zA-Z0-9']" oneline
"% misc
syn region sisu_identifier contains=sisu_error matchgroup=sisu_fontface start="\^[^ {\|\n\\]"rs=s+1 end="\^[ ,.;:'})\\\n]" skip="[a-zA-Z0-9']" oneline
"% metaverse html
syn region sisu_number contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,@Spell,sisu_mark matchgroup=sisu_html start="<b>" end="</b>" skip="\n" oneline
syn region sisu_number contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,@Spell,sisu_mark matchgroup=sisu_html start="<em>" end="</em>" oneline
syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,@Spell,sisu_mark matchgroup=sisu_html start="<i>" end="</i>" skip="\n" oneline
syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,@Spell,sisu_mark matchgroup=sisu_html start="<u>" end="</u>" skip="\n" oneline
syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,@Spell,sisu_mark matchgroup=sisu_html start="<ins>" end="</ins>" skip="\\\\\|\\'" oneline
"% metaverse html (flagged as errors for filetype sisu)
syn region sisu_control contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_mark matchgroup=sisu_html start="<b>" end="</b>" skip="\n" oneline
syn region sisu_control contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_mark matchgroup=sisu_html start="<em>" end="</em>" skip="\n" oneline
syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_mark matchgroup=sisu_html start="<i>" end="</i>" skip="\n" oneline
syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_mark matchgroup=sisu_html start="<u>" end="</u>" skip="\n" oneline
syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_mark matchgroup=sisu_html start="<ins>" end="</ins>" skip="\\\\\|\\'" oneline
syn region sisu_identifier contains=sisu_error matchgroup=sisu_html start="<del>" end="</del>" oneline
"% metaverse <:>
syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,@Spell matchgroup=sisu_contain start="<:Table.\{-}>" end="<:Table[-_]end>"
syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="<:Table.\{-}>" end="<:Table[-_]end>"
syn region sisu_content_alt contains=sisu_error matchgroup=sisu_contain start="<:code>" end="<:code[-_]end>"
syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,@Spell matchgroup=sisu_contain start="<:alt>" end="<:alt[-_]end>"
syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,@Spell matchgroup=sisu_contain start="<:poem>" end="<:poem[-_]end>"
syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="<:alt>" end="<:alt[-_]end>"
syn region sisu_content_alt contains=sisu_mark_endnote,sisu_content_endnote,sisu_link,sisu_mark,sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error matchgroup=sisu_contain start="<:poem>" end="<:poem[-_]end>"
"% 6 Expensive Mode
" Expensive Mode:
if !exists("sisu_no_expensive")
@@ -118,6 +118,7 @@ syn match sisu_error contains=sisu_error "{\~^\S\+"
syn match sisu_error contains=sisu_error "[_/\*!^]{[ .,:;?><]*}[_/\*!^]"
syn match sisu_error contains=sisu_error "[^ (\"'(\[][_/\*!]{\|}[_/\*!][a-zA-Z0-9)\]\"']"
syn match sisu_error contains=sisu_error "<dir>"
"errors for filetype sisu, though not error in 'metaverse':
syn match sisu_error contains=sisu_error,sisu_match,sisu_strikeout,sisu_contain,sisu_content_alt,sisu_mark,sisu_break,sisu_number "<[a-zA-Z\/]\+>"
syn match sisu_error "/\?<\([biu]\)>[^(</\1>)]\{-}\n\n"
"% 3 Error Exceptions?

View File

@@ -1032,6 +1032,38 @@ ins_typebuf(str, noremap, offset, nottyped, silent)
return OK;
}
/*
* Put character "c" back into the typeahead buffer.
* Can be used for a character obtained by vgetc() that needs to be put back.
*/
void
ins_char_typebuf(c)
int c;
{
#ifdef FEAT_MBYTE
char_u buf[MB_MAXBYTES];
#else
char_u buf[4];
#endif
if (IS_SPECIAL(c))
{
buf[0] = K_SPECIAL;
buf[1] = K_SECOND(c);
buf[2] = K_THIRD(c);
buf[3] = NUL;
}
else
{
#ifdef FEAT_MBYTE
buf[(*mb_char2bytes)(c, buf)] = NUL;
#else
buf[0] = c;
buf[1] = NUL;
#endif
}
(void)ins_typebuf(buf, REMAP_YES, 0, !KeyTyped, FALSE);
}
/*
* Return TRUE if the typeahead buffer was changed (while waiting for a
* character to arrive). Happens when a message was received from a client or

View File

@@ -1004,13 +1004,9 @@ wait_return(redraw)
#endif
if (vim_strchr((char_u *)"\r\n ", c) == NULL && c != Ctrl_C)
{
char_u buf[2];
/* Put the character back in the typeahead buffer. Don't use the
* stuff buffer, because lmaps wouldn't work. */
buf[0] = c;
buf[1] = NUL;
ins_typebuf(buf, REMAP_YES, 0, !KeyTyped, FALSE);
ins_char_typebuf(c);
do_redraw = TRUE; /* need a redraw even though there is
typeahead */
}

View File

@@ -648,23 +648,13 @@ normal_cmd(oap, toplevel)
&& VIsual_select
&& (vim_isprintc(c) || c == NL || c == CAR || c == K_KENTER))
{
# ifdef FEAT_MBYTE
char_u buf[MB_MAXBYTES + 1];
buf[(*mb_char2bytes)(c, buf)] = NUL;
# else
char_u buf[2];
buf[0] = c;
buf[1] = NUL;
# endif
/* Fake a "c"hange command. When "restart_edit" is set (e.g., because
* 'insertmode' is set) fake a "d"elete command, Insert mode will
* restart automatically.
* Insert the typed character in the typeahead buffer, so that it will
* be mapped in Insert mode. Required for ":lmap" to work. May cause
* mapping a character from ":vnoremap"... */
(void)ins_typebuf(buf, REMAP_YES, 0, !KeyTyped, FALSE);
ins_char_typebuf(c);
if (restart_edit != 0)
c = 'd';
else

View File

@@ -47,7 +47,6 @@ static void frame_fix_width __ARGS((win_T *wp));
static int win_alloc_firstwin __ARGS((win_T *oldwin));
#if defined(FEAT_WINDOWS) || defined(PROTO)
static tabpage_T *alloc_tabpage __ARGS((void));
static void free_tabpage __ARGS((tabpage_T *tp));
static int leave_tabpage __ARGS((buf_T *new_curbuf));
static void enter_tabpage __ARGS((tabpage_T *tp, buf_T *old_curbuf));
static void frame_fix_height __ARGS((win_T *wp));
@@ -3184,7 +3183,7 @@ alloc_tabpage()
return tp;
}
static void
void
free_tabpage(tp)
tabpage_T *tp;
{