拡張子の違うファイルを開く

提供: MeryWiki
2012年6月22日 (金) 22:37時点におけるAdmin (トーク | 投稿記録)による版
ナビゲーションに移動 検索に移動

現在Cファイルを開いていれば同じフォルダにあるHファイルを、Hファイルを開いていればCファイルを開きます。

いまのところ対になるファイルは同じフォルダにないと動きません。

対応拡張子は増やせるようになっていますので、必要なら適当に編集してお使いください。

(同名の対になるファイルを開くを巡回できるようにしたものです)

// 拡張子の違うファイルを開く.js
 
// 今のところ同じフォルダにあるものだけを探します
 
// 拡張子一覧 (このリストにある順に巡回します)
EXTS = 'h hpp hh hxx inc c m mm cc cpp cxx xs htm html xhtml xml css erl hrl'
 
function main()
{
    var next = calc_next_file(document.FullName)
 
    if (next)
    {
        editor.OpenFile(next, 0, meOpenAllowNewWindow)
    }
}
 
function calc_next_file(name)
{
    var name_dot_ext = split_last(name, '.')
    if (!name_dot_ext) { return }
 
    var name_dot = name_dot_ext[0]
    var ext = name_dot_ext[1]
    var exts = get_exts()
    var curr = find_index(exts, ext.toLowerCase())
    if (curr < 0) { return }
 
    var fs = new ActiveXObject("Scripting.FileSystemObject")
 
    for (var a = 1; a < exts.length; a++)
    {
        var i = (curr + a) % exts.length
        var o = name_dot + exts[i]
 
        if (fs.FileExists(o))
        {
            return o
        }
    }
}

function split_last(str, separator)
{
    var i = str.lastIndexOf(separator)
    return i >= 0 && [str.substr(0, i + 1), str.substr(i + 1)]
}
 
function get_exts()
{
    return EXTS.split(/(?:\s| )+/)
}
 
function find_index(array, x)
{
    for (var i=0; i<array.length; i++)
    {
        if (array[i] == x) { return i }
    }
    return -1
}
 
main()
スポンサーリンク