- 作成者投稿
- 2011年6月24日 9:41 am #10389takuya参加者
拡張子がないファイルはShebangを見て表示設定を設定します。
マクロをファイル開いたとき実行にセットして使うと便利です
//shebang を使ってファイルの表示設定をする
//shebang とは UNIXで主に使われる、ファイルの一行目のこと
// #!/usr/bin/env ruby
// #!/usr/bin/python
// #!/bin/bash
//などのこと//画面の表示を停める
Window.Redraw =false//拡張子があるかチェック.拡張子が無ければTrue
function has_not_ext(filename){
return filename.split(“.”).length==1
}
//今のカーソル状態を保存する
function current_cursor(){
return [
document.selection.GetActivePointX(eePosLogical),
document.selection.GetActivePointY(eePosLogical)];
}
//Shebangらしきモノを処理する
function cmd_from_shebang(shebang){
// #!/usr/bin/ruby -ku のようなモノを処理する
shebang=shebang.replace(/^s+|s+$/g, “”).split(‘-‘).shift()
// #!/usr/bin/env python のようなモノを処理する
cmd=shebang.replace(/^s+|s+$/g, “”).split(‘ ‘).pop()
if(cmd==shebang){
// #!/usr/bin/ruby のようなモノを処理する
cmd = shebang.replace(/^s+|s+$/g, “”).split(‘/’).pop()
}
return cmd
}
//EmEditorの表示設定と関連付けが無いか調べる.
function emeditor_has_config(cmd){
cmd = cmd.toLowerCase()
cfgs = new Enumerator( editor.Configs );
for( ; !cfgs.atEnd(); cfgs.moveNext() ){
cfg = cfgs.item();
//コンフィグ名と同じであればConfig名を返す
if( cmd == cfg.Name.toLowerCase() ){
return cfg.Name;
}
//コンフィグ名と一致しないときは関連付け拡張子を調べる
for(list = new Enumerator( cfg.Association.List ); !list.atEnd(); list.moveNext() ){
item = list.item();
if( cmd == item.Name.toLowerCase() ){
return cfg.Name
}
}
}
return false;
}//一行目を読み出す.
if(has_not_ext(Document.Name)){
curr = current_cursor()
document.selection.StartOfDocument();
document.selection.SelectLine();
shebang = document.selection.Text;
if(shebang.match(/^#!/)){
cmd= cmd_from_shebang(shebang);
name = emeditor_has_config(cmd);
if(name){
document.ConfigName = name
}
}
document.selection.SetActivePoint(eePosLogical,curr[0],curr[1]);
}
Window.Redraw =true; - 作成者投稿
- このトピックに返信するにはログインしてください。