.
なんだかやっぱり、漠然とした不安がある。
なんだかやっぱり、漠然とした不安がある。
いいかげんどうにかしたいので必死で調べてるんだけどうまくいかない。ちなみに使いにくいのであんまり補完使ってない。
という挙動にしたいだけなんだけど、なんでできないんだろ。ソロでマッチしている場合必ず確定してしまう。
だめだまったくだめだ。
<C-R>=Fun()<CR>
して自力で complete() よべばいいのかなぁとおもったけど、どうやって補完リストとってくればいいのかわからない。
なんでこんな素朴な挙動ができないのかなぁ……
てか complete() もソロマッチだと勝手に補完しやがるな
表示するだけってないのかなほんとに
ソロマッチの insert は諦めた。ほんとどうやってやるんだ……
補完のヒット率をあげるために dict を充実させるようにしようとおもった。で、これもずっと疑問だったんだけど、css とか、キーワードにハイフンを含めたりできるやつの補完ってどう書けばいいんだろう。emacs は記号として認識する範囲を指定する変数があったと思うけど、vim にはないのかな。ヘルプざっとみてるけど、なんか見つけかたが全くわからない。
iskeyword か。
CSS は ftplugin/css.vim で
set iskeyword+=-してみた
gem にしました。
sudo gem install resh
でインストールできます。--template resh のように書くことができるようになりますが、rubygems を読みこんでいないとテンプレート読みこみに失敗するので、RUBYOPT="-rubygems" をつける必要があります。ただし ~/.gemrc の rdoc: とか、RDocTask の書いたりするぶんには、既に rubygems が読みこみされたコンテキストで require が発生するので問題ないです。つまり直接 rdoc コマンドを叩かない限りだいたい大丈夫
人間ってだめすぎるな
-- この行以下は無視されます -- M .zshrc
ってでたとき、下の無視されますのところを削除するとそのファイルはこのチャンジセットではコミットしない、みたいな機能があった気がするんだけど、今日ためしてみたらできなかった (TortoiseSVN のコミット画面のチェックボックスみたいなイメージ)。なんだろ。
コメントをもらった。
http://subtech.g.hatena.ne.jp/cho45/20071009#c1191925480
できた! できた! 神すぎる!!!
でもってすこし変更して小文字入力時に常にメニュー出すように (word_complete.vim は捨てた)
set completeopt=menuone,preview function! CompleteWithoutInsert() return "¥<C-n>¥<C-r>=pumvisible() ? ¥"¥¥<C-P>¥¥<C-N>¥¥<C-P>¥": ¥"¥"¥<CR>" endfunction inoremap <expr> <C-n> pumvisible() ? "¥<C-n>" : CompleteWithoutInsert() " 小文字入力で常にメニューだす let letter = "a" while letter <=# "z" execute 'inoremap <expr> ' letter ' "' . letter . '" . (pumvisible() ? "" : CompleteWithoutInsert())' let letter = nr2char(char2nr(letter) + 1) endwhile inoremap <expr> <CR> pumvisible() ? "¥<C-Y>¥<CR>" : "¥<CR>" inoremap . .<ESC>a inoremap ( (<ESC>a inoremap [ [<ESC>a set lazyredraw
なんかこのコードははてなコード記法でハイライトおかしくなるみたいだ。vimcolor だからかな
たまに生で code block 書くときにめんどかった。TAB で移動はつかわないし
$X("//textarea").forEach(function (t) {
t.addEventListener("keypress", function (e) {
if (e.keyCode == 9) {
e.stopPropagation();
e.preventDefault();
var s = t.selectionStart;
var content = t.value;
var str = "\t";
var newstr = content.substring(0, s) + str + content.substring(s, content.length);
t.value = newstr;
var pos = s + str.length;
t.setSelectionRange(pos, pos);
}
}, true);
});
が近い人とはうまがあいやすい。
class Pathname
def self.home
new(ENV["HOME"])
end
endENV["HOME"] って大文字ばっかりでつかれる。
http://vim.sourceforge.net/scripts/script.php?script_id=73
ちょっと使ってみたのだけど、ときどきすごく重くなったり、挙動不審だったりして微妙……便利なんだけどなぁ……SELECT モードから戻らなかったりする。
使い続けるかもう少し様子見
http://lab.lowreal.net/gems/
scp で特定のディレクトリに投げつける Raketask を書いて ( http://coderepos.org/share/changeset/427 )、更新された gem の rdoc を生成して gem index を更新するスクリプトを叩く。
#!/usr/bin/env ruby
puts "Content-Type: text/plain"
puts
$stderr = $stdout
require "pp"
require "pathname"
require "rubygems"
require "rubygems/doc_manager"
begin
class Gem::Format
def extract_to(dir)
dir = Pathname.new(dir)
self.file_entries.each do |info,content|
path = Pathname.new(info["path"])
if path.absolute?
raise "Damedayo"
end
f = dir + path
f.parent.mkpath
f.open("wb") do |o|
o.write content
end
end
end
end
Gem::DocManager.configured_args = ["--template", "/Users/cho45/coderepos/lang/ruby/rdoc/generators/template/html/resh/resh.rb"]
Gem::DocManager.configured_args = ["--template", "resh", "--line-numbers"]
load "/usr/bin/index_gem_repository.rb"
path = Pathname.new("/srv/www/lab.lowreal.net/public/gems")
options = {
:directory => path.to_s,
:verbose => true,
:quick => true,
}
prev = (path + "quick/index").read.split(/¥n/) rescue []
#prev = []
indexer = Indexer.new(options)
indexer.build_index
diff = (path + "quick/index").read.split(/¥n/) - prev
diff.each do |gem|
puts gem
g = path + "gems/#{gem}.gem"
gem = Gem::Format.from_file_by_path(g.to_s)
dir = path+"gems/#{gem.spec.full_name}"
dir.rmtree rescue nil
gem.extract_to(dir)
#gem.spec.loaded_from = "docs"
spec = gem.spec
spec.instance_eval { @path = path }
def spec.installation_path
@path.to_s
end
p spec.full_gem_path
doc_manager = Gem::DocManager.new(gem.spec)
doc_manager.generate_rdoc
end
rescue Exception => e
puts e
puts e.backtrace
endブラウザでアクセスしたときに表示されるインデックスはてきとうに gem spec よんで表示してるだけ
なんかなにをしようとしていたか忘れた……ねむくなってきた。ついでにお腹痛い。Win 環境でもシームレスにつかえるようにするにはどうしたらいいのかなぁ。URI::File.path(path) を定義して URI 化とかかなぁ。でもあんま意味ない気がしてきた。
require "uri"
require "pathname"
# file scheme syntax:
# file://<host>/<path>
class URI::FILE < URI::Generic
DEFAULT_PORT = nil
COMPONENT = [:scheme, :host, :path].freeze
def self.build(args)
tmp = Util::make_components_hash(self, args)
super(tmp)
end
def initialize(*args)
super(*args)
@pathname = Pathname.new(@path)
# delegate
(@pathname.methods - self.methods).each do |m|
instance_eval <<-EOS
def #{m}(*args, &block)
r = @pathname.__send__(:#{m}, *args, &block)
if r.class == Pathname
@path = r.to_s
self
else
r
end
end
EOS
end
end
def to_s
"#{scheme}://#{host}#{path}"
end
alias :to_str :to_s
def set_path=(s)
@pathname = Pathname.new(s)
@path = s
end
def set_host(s)
@host = s
if !s.nil? && !s.empty?
raise NotImplementedError, "Host is not supported"
else
@host = nil
end
end
def check_host(s)
if s.empty? || HOST =~ s
true
else
raise InvalidComponentError, "bad component(expected host component): #{v}"
end
end
@@schemes['FILE'] = URI::FILE
end
if $0 == __FILE__
require "test/unit"
class TC_URI_FILE < Test::Unit::TestCase
def setup
end
def test_windows
uri = URI("file:///c:/Windows")
assert_equal nil, uri.host
assert_equal nil, uri.port
assert_equal "/c:/Windows", uri.path
assert_equal "file", uri.scheme
assert_equal "file:///c:/Windows", uri.to_s
uri = URI("file:///c:")
assert_equal nil, uri.host
assert_equal nil, uri.port
assert_equal "/c:", uri.path
assert_equal "file", uri.scheme
assert_equal "file:///c:", uri.to_s
uri = URI("file:///c:/Documents%20and%20Settings/")
assert_equal nil, uri.host
assert_equal nil, uri.port
assert_equal "/c:/Documents%20and%20Settings/", uri.path
assert_equal "file", uri.scheme
assert_equal "file:///c:/Documents%20and%20Settings/", uri.to_s
end
def test_delegate
uri = URI("file:///Users/cho45")
assert_equal URI("file:///Users"), uri.parent
assert_equal false, uri.root?
uri = URI("file:///c:/Documents%20and%20Settings/cho45")
assert_equal URI("file:///c:/Documents%20and%20Settings"), uri.parent
end
def test_inteface
assert_equal URI("file:///path/to"), URI::FILE.build(["", "/path/to"])
uri = URI("file:///Users/cho45")
uri.path = "/hoge/hoge"
assert_equal URI("file:///hoge/hoge"), uri
uri = URI("file:///Users/cho45/tmp/")
assert_equal URI("file:///Users/cho45/tmp/test"), uri + "test"
end
def test_with_host
assert_raise(NotImplementedError) do
URI::FILE.build(["host", "/path/to"])
end
assert_raise(NotImplementedError) do
uri = URI("file://host/Users/cho45")
end
end
end
end
昨日の夕方2時間寝たいがいずっと PC つかいっぱのせいか、左腕に違和感がある。腱鞘炎フラグ?
とりあえず冷やしてみた。というか寝ようよおれ……
確実、とは言えないけどだいたいうまくいくほうほう
# てきとうに doc.rb とでもつける
require "rubygems"
require "rubygems/doc_manager"
class Gem::DocManager
alias :origi_initialize :initialize
def initialize(*args)
origi_initialize(*args)
def @spec.has_rdoc
true
end
def @spec.rdoc_options
t = super
p t
[] # --exclude . とか排除
end
end
endsudo ruby -rdoc `which gem` rdoc --no-ri --config-file ~/.gemrc --backtrace capistrano
-r で上の読みこんだ上で gem を実行する。capistrano は rdoc あるのになんで生成されないんだろ。あと rails は rdoc 生成しようとすると ruby が暴走する。なぞい。
./configure --prefix=/usr/local/vim7 --enable-multibyte --enable-rubyinterp --enable-gpm --enable-cscope --with-features=huge --enable-fontset --disable-gui --without-x --disable-xim --enable-pythoninterp --enable-perlinterp
http://cutagem.rubyforge.org/ - Cut a Gem をリリースしました。
sudo gem install cutagem
昨日
*newgem を使ってない。
最近つかってない。Rakefile はカスタマイズがすぐできるように Hoe を使わないようにしてる。(Rakefile が何やってるか全然わからなくなるのがいやだ。task が生で書いてあってほしい。こういうのは DRY よりコピペのほうがやりやすいと思う。Hoe からコピペしてるタスクはある)なので、newgem が生成する Rakefile は使えなくて、あと History.txt じゃなくて ChangeLog にしくて (RDoc 書くっていう意味では間違ってるんだけど、ChangeLog のほうが数倍書きやすいし……)、あとあと version.rb がきもちわるいから嫌で、あとあとあと、newgem hoge-gura とかやったときキモいファイル名ができるし、なんかもう全部カスタマイズ済みのを newgem で生成したいなぁとおもったんだけど、できないみたいだ。(ちなみに最近つくった gem は「前につくった gem を cp -r して頑張って置換」してつくってる)
bin/newgem を読んでみると、全部決めうちなのよね。~/.newgem/template があったら読んでくれてるんだろうとか漠然と思ってたけどそんなことなかった。完全なる決めうちだった。清々しいぐらい決めうち。
こういうのってパッチ送るより自分で書いたほうがはやい。
というところまで書いたところで (コメントアウトして保存して)、じゃあ書こうっていう話に脳内でなったので書いた。
http://www.vim.org/scripts/script.php?script_id=1890
lookupfile 関係さがしてたら id:secondlife さんところで見つけて、ためしてみたらやばかった。これはやばい。やばいよ。文乃さんなみにやばい。いやそこまでいかない。zsh でディレクトリ cd していくのがめんどくさくなるぐらいやばい。
nmap bg :BufferExplorer<CR> nmap bG :FilesystemExplorerFromHere<CR> nmap gb :FilesystemExplorer<CR>
タブきりかえの gt gT (タブばっか使ってるので) を意識した感じ
なんか気が付いたら本編も何度か見直してた。いいよ! いいよ! 自由にやりな! 勝手にやりな!
なにが見所なのかよくわからないけど、たぶんたまちゃんなんだよね?
おれはもう終わったことだからいいけど、もし子供ができたらなんとかしないといけない。陸上とかスキーとか飛び箱とかだけにすりゃいいのになぁ。チームプレー入れんなよ。
それにしても「そんなの気の持ちよう」とかいう人間のクズは今すぐ首つって死ねばいいのになぁ……だいたい体育教師もそういやつだから、さらに絶望的な感じになる。
:registers --- Registers --- "" M ^JM ^JM ^JM ^JM ^JM "0 ^I^I^I<div id="footer">^J^I^I^I^I<% require ...
unnamed がこわれる。paste 系のコマンドは ("0 を使うって説明されてるのを見掛けたけど、少くとも vim7.1においては)、"" が使われる。LustyExplorer は他のレジスタは復元するけど " だけ復元しないっぽい。
--- lusty-explorer.vim.orig 2007-10-07 22:50:11.000000000 +0900
+++ lusty-explorer.vim 2007-10-07 22:51:27.000000000 +0900
@@ -957,6 +957,7 @@
@sidescroll = eva "&sidescroll"
@sidescrolloff = eva "&sidescrolloff"
+ @reg = vim_single_quote_escape(eva('@"'))
@reg0 = vim_single_quote_escape(eva("@0"))
@reg1 = vim_single_quote_escape(eva("@1"))
@reg2 = vim_single_quote_escape(eva("@2"))
@@ -1000,6 +1001,7 @@
exe "set sidescroll=#{@sidescroll}"
exe "set sidescrolloff=#{@sidescrolloff}"
+ exe "let @¥" = '#{@reg}'"
exe "let @0 = '#{@reg0}'"
exe "let @1 = '#{@reg1}'"
exe "let @2 = '#{@reg2}'"