From d8fc5c0b999204f47efd7702502b41ead11948a4 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 29 Apr 2006 21:55:22 +0000 Subject: updated for version 7.0f05 --- runtime/autoload/rubycomplete.vim | 260 ++++++-------- runtime/doc/editing.txt | 14 +- runtime/keymap/kana.vim | 727 ++++++++++++++++++++++++++++++++++++++ runtime/syntax/sisu.vim | 99 +++--- src/getchar.c | 32 ++ src/message.c | 6 +- src/normal.c | 12 +- src/window.c | 3 +- 8 files changed, 929 insertions(+), 224 deletions(-) create mode 100644 runtime/keymap/kana.vim 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 -" Info: $Id$ -" URL: http://vim-ruby.rubyforge.org -" Anon CVS: See above site -" Release Coordinator: Doug Kearns +" Language: Ruby +" Maintainer: Mark Guzman +" Info: $Id$ +" URL: http://vim-ruby.rubyforge.org +" Anon CVS: See above site +" Release Coordinator: Doug Kearns " ---------------------------------------------------------------------------- " " 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("")') + 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 . +" Dan Kenigsberg noticed some deficiencies and suggested this one instead. +" +" Maintainer: Rory McCann +" Modified by: Edward L. Fox +" 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 +" +" 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 +" * Converted to Vim format. +" 2003-01-22 +" +" * 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 "" "% 10 Markers: Endnote Identifiers, Pagebreaks etc.: if !exists("sisu_no_identifiers") - syn match sisu_mark_endnote "\~^" - syn match sisu_contain "" - syn match sisu_break "
\|
" - syn match sisu_control "

\|

\|

\|<:p[bn]>" - syn match sisu_html "

\|
" - syn match sisu_marktail "[~-]#" - syn match sisu_html "\|\|\|\|\|
" - 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 "" + syn match sisu_break contains=@NoSpell "
\|
" + syn match sisu_control contains=@NoSpell "

\|

\|

\|<:p[bn]>" + syn match sisu_html "

\|
" + syn match sisu_marktail "[~-]#" + syn match sisu_html contains=@NoSpell "\|\|
\|\|
\|
" + 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 "]" contains=sisu_error +syn match sisu_error contains=sisu_error "[\~/\*!_]{\|}[\~/\*!_]" +syn match sisu_error contains=sisu_error "]" "% 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="" end="" 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="" end="" 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="" end="" oneline -syn region sisu_content_alt contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,@Spell,sisu_mark matchgroup=sisu_html start="" end="" 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="" end="" 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="" end="" 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="" end="" skip="\n" oneline +syn region sisu_control contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_mark matchgroup=sisu_html start="" end="" 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="" end="" 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="" end="" skip="\n" oneline +syn region sisu_identifier contains=sisu_strikeout,sisu_number,sisu_control,sisu_identifier,sisu_error,sisu_mark matchgroup=sisu_html start="" end="" skip="\\\\\|\\'" oneline syn region sisu_identifier contains=sisu_error matchgroup=sisu_html start="" end="" 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 "" +"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]\)>[^()]\{-}\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 @@ -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 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; { -- cgit v1.2.1