summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/autoload/rubycomplete.vim260
-rw-r--r--runtime/doc/editing.txt14
-rw-r--r--runtime/keymap/kana.vim727
-rw-r--r--runtime/syntax/sisu.vim99
-rw-r--r--src/getchar.c32
-rw-r--r--src/message.c6
-rw-r--r--src/normal.c12
-rw-r--r--src/window.c3
8 files changed, 929 insertions, 224 deletions
diff --git a/runtime/autoload/rubycomplete.vim b/runtime/autoload/rubycomplete.vim
index 53dc869d6..9cde21494 100644
--- a/runtime/autoload/rubycomplete.vim
+++ b/runtime/autoload/rubycomplete.vim
@@ -1,10 +1,10 @@
" Vim completion script
-" Language: Ruby
-" Maintainer: Mark Guzman <segfault@hasno.info>
-" Info: $Id$
-" URL: http://vim-ruby.rubyforge.org
-" Anon CVS: See above site
-" Release Coordinator: Doug Kearns <dougkearns@gmail.com>
+" Language: Ruby
+" Maintainer: Mark Guzman <segfault@hasno.info>
+" Info: $Id$
+" URL: http://vim-ruby.rubyforge.org
+" Anon CVS: See above site
+" Release Coordinator: Doug Kearns <dougkearns@gmail.com>
" ----------------------------------------------------------------------------
"
" Ruby IRB/Complete author: Keiju ISHITSUKA(keiju@ishitsuka.com)
@@ -71,7 +71,7 @@ function! IsInClassDef()
let ret = 'nil'
let pos = line('.')
- if snum < pos && pos < enum
+ if snum < pos && pos < enum
let ret = snum . '..' . enum
endif
@@ -79,43 +79,45 @@ function! IsInClassDef()
endfunction
function! GetRubyVarType(v)
- let stopline = 1
- let vtp = ''
- let pos = getpos('.')
- let [lnum,lcol] = searchpos('^\s*#\s*@var\s*'.a:v.'\>\s\+[^ \t]\+\s*$','nb',stopline)
- if lnum != 0 && lcol != 0
- call setpos('.',pos)
- let str = getline(lnum)
- let vtp = substitute(str,'^\s*#\s*@var\s*'.a:v.'\>\s\+\([^ \t]\+\)\s*$','\1','')
- return vtp
- endif
- call setpos('.',pos)
+ let stopline = 1
+ let vtp = ''
+ let pos = getpos('.')
+ let [lnum,lcol] = searchpos('^\s*#\s*@var\s*'.a:v.'\>\s\+[^ \t]\+\s*$','nb',stopline)
+ if lnum != 0 && lcol != 0
+ call setpos('.',pos)
+ let str = getline(lnum)
+ let vtp = substitute(str,'^\s*#\s*@var\s*'.a:v.'\>\s\+\([^ \t]\+\)\s*$','\1','')
+ return vtp
+ endif
+ call setpos('.',pos)
if g:rubycomplete_rails == 1 && g:rubycomplete_rails_loaded == 1
let ctors = '\(now\|new\|open\|get_instance\|find\|create\)'
else
let ctors = '\(now\|new\|open\|get_instance\)'
endif
- let [lnum,lcol] = searchpos(''.a:v.'\>\s*[+\-*/]*=\s*\([^ \t]\+.' . ctors .'\>\|[\[{"''/]\|%r{\)','nb',stopline)
- if lnum != 0 && lcol != 0
- let str = matchstr(getline(lnum),'=\s*\([^ \t]\+.' . ctors . '\>\|[\[{"''/]\|%r{\)',lcol)
- let str = substitute(str,'^=\s*','','')
- call setpos('.',pos)
- if str == '"' || str == ''''
- return 'String'
- elseif str == '['
- return 'Array'
- elseif str == '{'
- return 'Hash'
+ 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{\|[A-Za-z0-9@:\-()]\+...\?\)',lcol)
+ let str = substitute(str,'^=\s*','','')
+ call setpos('.',pos)
+ if str == '"' || str == ''''
+ return 'String'
+ elseif str == '['
+ return 'Array'
+ elseif str == '{'
+ return 'Hash'
elseif str == '/' || str == '%r{'
return 'Regexp'
- elseif strlen(str) > 4
+ elseif strlen(str) >= 4 && stridx(str,'..') != -1
+ return 'Range'
+ elseif strlen(str) > 4
let l = stridx(str,'.')
- return str[0:l-1]
- end
- return ''
- endif
- call setpos('.',pos)
+ return str[0:l-1]
+ end
+ return ''
+ endif
+ call setpos('.',pos)
return ''
endfunction
@@ -142,7 +144,7 @@ function! rubycomplete#Complete(findstart, base)
return idx
"findstart = 0 when we need to return the list of completions
else
- let g:rubycomplete_completions = []
+ let g:rubycomplete_completions = []
execute "ruby get_completions('" . a:base . "')"
return g:rubycomplete_completions
endif
@@ -206,34 +208,43 @@ def load_buffer_class(name)
mixre = /.*\n\s*include\s*(.*)\s*\n/.match( classdef )
load_buffer_module( $2 ) if mixre != nil
- eval classdef
+ eval classdef
end
def load_buffer_module(name)
classdef = get_buffer_entity(name, 'GetBufferRubyModule("%s")')
return if classdef == nil
- eval classdef
+ eval classdef
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
+ return nil if nums == nil
return nil if nums.min == nums.max && nums.min == 0
-
+
cur_line = VIM::Buffer.current.line_number
classdef = ""
nums.each do |x|
if x != cur_line
- ln = buf[x]
+ ln = buf[x]
classdef += "%s\n" % ln
end
end
-
+
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')
@@ -246,7 +257,7 @@ def get_buffer_classes()
rg.each do |x|
if /^\s*class\s*([A-Za-z0-9_-]*)(\s*<\s*([A-Za-z0-9_:-]*))?\s*/.match( buf[x] )
- ret.push $1
+ ret.push $1
end
end
@@ -256,10 +267,10 @@ end
def load_rails()
allow_rails = VIM::evaluate('g:rubycomplete_rails')
return if allow_rails != '1'
-
+
buf_path = VIM::evaluate('expand("%:p")')
file_name = VIM::evaluate('expand("%:t")')
- path = buf_path.gsub( file_name, '' )
+ path = buf_path.gsub( file_name, '' )
path.gsub!( /\\/, "/" )
pup = [ "./", "../", "../../", "../../../", "../../../../" ]
pok = nil
@@ -267,25 +278,25 @@ def load_rails()
pup.each do |sup|
tpok = "%s%sconfig" % [ path, sup ]
if File.exists?( tpok )
- pok = tpok
- break
+ pok = tpok
+ break
end
end
-
+
return if pok == nil
bootfile = pok + "/boot.rb"
envfile = pok + "/environment.rb"
if File.exists?( bootfile ) && File.exists?( envfile )
begin
- require bootfile
+ require bootfile
require envfile
require 'console_app'
require 'console_with_helpers'
- VIM::command('let g:rubycomplete_rails_loaded = 1')
+ VIM::command('let g:rubycomplete_rails_loaded = 1')
rescue
print "Error loading rails environment"
- end
+ end
end
end
@@ -293,71 +304,62 @@ def get_rails_helpers
allow_rails = VIM::evaluate('g:rubycomplete_rails')
rails_loaded = VIM::evaluate('g:rubycomplete_rails_loaded')
return [] if allow_rails != '1' || rails_loaded != '1'
- return RailsWords
+ return RailsWords
end
def get_completions(base)
load_requires
load_rails
- input = VIM::evaluate('expand("<cWORD>")')
+ input = VIM::Buffer.current.line
+ cpos = VIM::Window.current.cursor[1] - 1
+ input = input[0..cpos] if cpos != 0
input += base
- input.lstrip!
- if input.length == 0
- input = VIM::Buffer.current.line
- input.strip!
+
+ rip = input.rindex(/\s/,cpos)
+ if rip
+ input = input[rip..input.length]
end
- message = nil
+ 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 /^(\$[^.]*)$/
- candidates = global_variables.grep(Regexp.new(Regexp.quote($1)))
+ 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,31 +419,25 @@ 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()") )
if inclass != nil
- classdef = "%s\n" % VIM::Buffer.current[ inclass.min ]
+ classdef = "%s\n" % VIM::Buffer.current[ inclass.min ]
found = /^\s*class\s*([A-Za-z0-9_-]*)(\s*<\s*([A-Za-z0-9_:-]*))?\s*\n$/.match( classdef )
if found != nil
@@ -460,36 +447,27 @@ def get_completions(base)
begin
candidates = eval( "#{receiver}.instance_methods" )
candidates += get_rails_helpers
- select_message(receiver, message, candidates)
rescue Exception
found = nil
end
end
end
-
+
if inclass == nil || found == nil
candidates = eval("self.class.constants")
candidates += get_buffer_classes
- candidates.uniq!
- candidates.sort!
- (candidates|ReservedWords).grep(/^#{Regexp.quote(input)}/)
+ message = receiver = 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.delete_if { |x| x == nil }
+ candidates.uniq!
+ candidates.sort!
+ candidates = candidates.grep(/^#{Regexp.quote(message)}/) if message != nil
outp = ""
-
- # tags = VIM::evaluate("taglist('^%s$')" %
valid = (candidates-Object.instance_methods)
-
+
rg = 0..valid.length
rg.step(150) do |x|
stpos = 0+x
@@ -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:
diff --git a/runtime/doc/editing.txt b/runtime/doc/editing.txt
index aa8c4f4e1..02f646c0b 100644
--- a/runtime/doc/editing.txt
+++ b/runtime/doc/editing.txt
@@ -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".
diff --git a/runtime/keymap/kana.vim b/runtime/keymap/kana.vim
new file mode 100644
index 000000000..644b0ab44
--- /dev/null
+++ b/runtime/keymap/kana.vim
@@ -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 ッピョ
+
+
diff --git a/runtime/syntax/sisu.vim b/runtime/syntax/sisu.vim
index 399b7a4ee..bfc11bb0a 100644
--- a/runtime/syntax/sisu.vim
+++ b/runtime/syntax/sisu.vim
@@ -12,34 +12,34 @@ endif
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_html "<center>\|</center>"
- syn match sisu_marktail "[~-]#"
- syn match sisu_html "<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_mark_endnote "\~^"
+ 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 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 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_marktail "<\~#>"
- syn match sisu_markpara "<:i[12]>"
- syn match sisu_link " \*\~\S\+"
- syn match sisu_action "^<:insert\d\+>"
- syn match sisu_contain "<:e>"
+ syn match sisu_ocn contains=@NoSpell "<\~\d\+;\w\d\+;\w\d\+>"
+ syn match sisu_marktail "<\~#>"
+ syn match sisu_markpara contains=@NoSpell "<:i[12]>"
+ syn match sisu_link " \*\~\S\+"
+ syn match sisu_action "^<:insert\d\+>"
+ syn match sisu_contain "<:e>"
endif
"% 9 URLs Numbers: and ASCII Codes
-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\)"
+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")
@@ -97,7 +97,7 @@ else " not Expensive
syn region sisu_content_alt matchgroup=sisu_control start="^\s*def\s" matchgroup=NONE end="[?!]\|\>" skip="\.\|\(::\)" oneline
endif " Expensive?
"% 5 Headers: and Headings (Document Instructions)
-syn match sisu_control contains=sisu_error,sisu_error_wspace "4\~! \S\+"
+syn match sisu_control contains=sisu_error,sisu_error_wspace "4\~! \S\+"
syn region sisu_markpara contains=sisu_error,sisu_error_wspace start="^=begin" end="^=end.*$"
"% 4 Errors?
syn match sisu_error_wspace contains=sisu_error_wspace "^\s\+"
@@ -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?
diff --git a/src/getchar.c b/src/getchar.c
index 7b1cf875c..3b9d42014 100644
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -1033,6 +1033,38 @@ ins_typebuf(str, noremap, offset, nottyped, silent)
}
/*
+ * 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
* from feedkeys().
diff --git a/src/message.c b/src/message.c
index 08810ad82..c67d47d98 100644
--- a/src/message.c
+++ b/src/message.c
@@ -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 */
}
diff --git a/src/normal.c b/src/normal.c
index 966bb3219..db6c66a59 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -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
diff --git a/src/window.c b/src/window.c
index 8c031bf62..718ce2e8c 100644
--- a/src/window.c
+++ b/src/window.c
@@ -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;
{