MacVim 付属のmvim はshell で書かれている。
mvim で存在しないファイルを指定すると新規ファイルを作成する。
Lion で MacVim を起動していない時にうっかり mvim を動かすと
下記のようなエラーが残り shell 終了しない。
... MacVim[451:507] ApplePersistenceIgnoreState: Existing state will not be touched. New state will be written to ....
Ctr + C で終了するはめになる。
defaults write -g ApplePersistenceIgnoreState YES
を実行しているけれど
念のため org.vim.MacVim にも指定。
% defaults write org.vim.MacVim ApplePersistenceIgnoreState YES
% defaults read org.vim.MacVim
{
ApplePersistenceIgnoreState = YES;
MMAutosaveColumns = 150;
MMAutosaveRows = 45;
MMCurrentPreferencePane = General;
MMLastWindowClosedBehavior = 1;
MMNativeFullScreen = 0;
MMOpenInCurrentWindow = 1;
MMTopLeftPoint = "{208, 723}";
MMUntitledWindow = 0;
MMUseInlineIm = 0;
NSQuotedKeystrokeBinding = "";
NSRepeatCountBinding = "";
SUCheckAtStartup = 0;
}
が...むなしく変化なく shell 終わらず。
そりゃそうかも。
mvim の最後の行あたり exec が怪しいのかも...
それで
Ruby 1.9.3 で mymvim.rb を作るいい口実ができた。
mymvim.rb は
MacVim が起動していなかったら、たぶん?正しく起動し、指定したファイルを開く。
存在しないファイルを指定してしまっても、何もおこらない。
おもったよりも早く動く。
ところが mymvim.rb を実行すると...
% ps aux |grep task
=>
...(略) grep --color=auto task
...(略) /usr/libexec/taskgated -p -s
必ず /usr/libexec/taskgated が発生する。
数分すると自動的に消える。これは一体なんなのだろう。
Snow Leopard の時もあったような気もする...。
taskgated を sudo で kill しつつ
よくよく試してみると mymvim.rb だけでなく
MacVim 付属の mvim を実行したあとにも taskgated が発生していた。
ということは、
どのような方法で MacVim を起動したかってことは関係なくて、
MacVim を起動したこと、そのこと自体が taskgated を引き起こしている
ようだ。
MacVim をインストールしている ~/Application と
同じ階層にある他の Application を起動してみると...
taskgated が発生した。
dmg をダウンロードしてインストールした
/usr/local/git/bin/git
を動かしてみると、やはり発生した。
% ruby19 -e "puts \"hello\""
hello
%
を実行しただけでも発生した。
しかし Lion にデフォルトで入っていた ruby 1.8 を動かしても発生しなかった。
% ruby -e "puts \"hello\""
hello
%
/Application にある Safari.app などを起動してみると
taskgated は発生しなかった。
つまり
Apple によって署名されていない Application やプログラムを起動すると
taskgated process が発生するってことかな。?
署名されたソフトウエアと、そうじゃないものの違い....
mymvim.rb
# coding: utf-8
# snapshot MacVim 7.3
# OS X Lion 10.7.2
# ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin11.2.0]
module Mymvim
class Mvim
def initialize(f)
@f = f
@osa = '/usr/bin/osascript'
macvim = "Tell application \"MacVim\""
@s1 = "#{macvim} to open (POSIX file \"#{@f}\") as string"
@s2 = "#{macvim} to activate"
end
def base
run
end
def run
begin
e = system("#{@osa} -e '#{@s1}' -e '#{@s2}'")
exit unless e
ensure
print "bye\n"
exit
end
end
end
end
f = ARGV[0]
unless File.exist?(f)
print "Not found : #{f}\n"
exit
end
Mymvim::Mvim.new(f).base
0 件のコメント:
コメントを投稿