2007-03-31

OS X アプリケーション

アプリケーションにshared library(dylibファイル)を突っ込みたいときの方法。Contents/MacOSにdylibファイルを入れるとして、

  1. Contents/Info.plist

    <key>LSEnvironment</key>
    <dict>
    <key>DYLD_LIBRARY_PATH</key>
    <string>/Applications/Hoge.app/Contents/MacOS</string>
    </dict>
    を追加。インストール先が固定の場合に使用可能。dylibの場所をフルパスで指定しているため。Info.plist内の表記方法でインストール先を知ることができるかどうか不明。

  2. Contents/MacOSに

    #!/bin/sh
    APPPATH="${0%/*}"
    export DYLD_LIBRARY_PATH="$APPPATH/lib"
    exec "$APPPATH/Hoge" "$@"
    のようなシェルスクリプト(たとえばPrelude)を置き、Contents/Info.plistCFBundleExecutableにシェルスクリプトファイル名を書く。

    <key>CFBundleExecutable</key>
    <string>Prelude</string>

    これによりアプリケーションをどこに置いても、指定したシェルスクリプトから置いた場所を取得できるので、アプリケーションが起動する前に環境変数DYLD_LIBRARY_PATHを設定したり、いろんなことができる。


ということで後者がオススメ。

注意!

アプリケーション内のInfo.plistは何かがキャッシュしているらしく、Info.plistを書き換えてアプリケーション起動しても反映されない場合あり。その場合はアプリケーションを一旦別のフォルダに移動させてすぐ戻せば良し。Info.plistを書き換えるたびにフォルダ移動させると吉。これでかなり悩んだ orz

vimrc

結局iTerm上でvimを使う方が多い訳ですが、0.9.5.0315での問題点は「●」や「→」が何故か表示幅が半角扱い。でもvim上は全角なので表示がずれる。 あとインライン変換のフォントサイズがウィンドウ内と異なるので変換後にインラインウィンドウのかけらが残る。

.vimrc ぱくりまくり。
set nocompatible

set enc=utf-8
set fenc=utf-8
set fencs=iso-2022-jp,euc-jp,cp932
set ambiwidth=double

set ignorecase
set smartcase
set wrapscan
set incsearch
set hlsearch

set autoindent
set cindent
set tabstop=4
set shiftwidth=4
set noexpandtab

set nonumber
set noruler
set nolist
set showmatch
set wrap
set title
set showcmd
set cmdheight=2
set laststatus=2
set statusline=%<%f\ %m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}
set wildmenu

set backspace=2
set scrolloff=5
set formatoptions+=mM
let format_join_spaces = 4
let format_allow_over_tw = 1
set nobackup
set history=1000
"set mouse=a

if has('autochdir')
set autochdir
endif
if has('migemo')
set migemo
endif
if has('kaoriya')
set iminsert=0
set imsearch=0
endif

filetype plugin indent on
syntax on

hi Search ctermbg=DarkBlue ctermfg=White
hi Pmenu ctermbg=Magenta
hi PmenuSel ctermbg=DarkGrey
hi PmenuSbar ctermbg=Grey
hi PmenuThumb cterm=reverse

autocmd FileType ruby set tabstop=2 tw=0 sw=2 expandtab
autocmd FileType eruby set tabstop=2 tw=0 sw=2 expandtab
autocmd BufNewFile,BufRead app/*/*.rhtml set ft=mason fenc=utf-8
autocmd BufNewFile,BufRead app/**/*.rb set ft=ruby fenc=utf-8
autocmd BufNewFile,BufRead app/**/*.yml set ft=ruby fenc=utf-8
autocmd FileType c hi Comment ctermfg=darkcyan
autocmd FileType cpp hi Comment ctermfg=darkcyan

" rails.vim
"let g:rails_level=4
"let g:rails_default_file="app/controllers/application.rb"
"let g:rails_default_database="sqlite3"

" rubycomplete.vim
autocmd FileType ruby,eruby set omnifunc=rubycomplete#Complete
autocmd FileType ruby,eruby let g:rubycomplete_buffer_loading = 1
autocmd FileType ruby,eruby let g:rubycomplete_rails = 1
autocmd FileType ruby,eruby let g:rubycomplete_classes_in_global = 1

" search
nmap n nzz
nmap N Nzz
nmap * *zz
nmap # #zz
nmap g* g*zz
nmap g# g#zz

" edit binary file
augroup BinaryXXD
autocmd!
autocmd BufReadPre *.bin let &binary =1
autocmd BufReadPost * if &binary | silent %!xxd -g 1
autocmd BufReadPost * set ft=xxd | endif
autocmd BufWritePre * if &binary | %!xxd -r | endif
autocmd BufWritePost * if &binary | silent %!xxd -g 1
autocmd BufWritePost * set nomod | endif
augroup END


.gvimrc
colorscheme evening

set columns=80
set lines=40

set gfn=Osaka-Mono:h14
set gfw=Osaka-Mono:h14
set macatsui
set noantialias

highlight CursorIM guibg=Purple guifg=NONE
highlight Search guibg=DarkBlue guifg=NONE

map <D-w> :q<CR>gT
map <D-t> :tabnew<CR>
map <D-n> :new<CR>
map <D-S-t> :browse tabe<CR>
map <D-S-n> :browse split<CR>
map <D-]> :tabn<CR>
map <D-[> :tabp<CR>
map <D-M-Right> :tabn<CR>
map <D-M-Left> :tabp<CR>
imap <D-M-Right> <C-o>:tabn<CR>
imap <D-M-Left> <C-o>:tabp<CR>


プラグインも棚卸ししよう。

Vim7

OS XでのVim7情報をまとめてMacPortsのPortfileにしてみました。
 →http://lapangan.net/darwinports/index.php?PrivatePortfile%2FVim

OS X 10.4 for Intel専用になってしまいましたが、バイナリは
 →http://osx.nobody.jp/

3MBまでしか置けないのでsplitしてます。


でもって、ATSUIパッチ(http://wiki.macvim.org/wiki/VimPatches/ATSUI)の効果を。ATSUIパッチはinline変換非対応なのでmioさんのinlineパッチとマージして、かつ、何故かmacatsui時のアンチエイリアスオフがなかったので改造。

nomacatsuimacatsui
noantialias
antialias


:set macatsui noantialiasが好き。白地に黒ならantialiasかも。

nomacatsuiの時は:set termencoding=japanしないと文字化けます。

インライン変換
:set guifont=Osaka-Mono:h14とかしないと文字化けます。