search
LoginSignup
0
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

Paper Plane xUI Advent Calendar 2016 Day 12

posted at

updated at

Paper Plane xUI(PPx)のファイル判別について

この記事では、PPxのEnter時に動作するファイル判別についてを解説します

Enterの種類と用語

Enterにはデフォルトで三種類あり、エントリーの名前や内容を判定する「ファイル判別」の二種、他にファイル判別で利用しているコンテキストメニューの「ファイル判別メニュー」があります。

  • Enter([Enter])
    • ファイル判別「E_cr」を実行する
  • Shift+Enter(\[Enter])
    • ファイル判別「E_scr」を実行する
  • Ctrl+Enter(^[Enter])
    • ファイル判別メニューを、「M_Ccr」の項目を追加して表示する

これを用いれば、動画拡張子(mp4)なら動画プレイヤー、音楽拡張子(mp3など)なら音楽プレイヤーで開くといった事ができます、専用のショートカットキーやメニューを作ると、数が膨大になるだけでなく、ショートカットキーの数が足りなくなってきます、ファイル判別はただEnterを押せばいいので、そういった心配もなく手軽です。

応用例

ここでは、このファイル判別を利用した応用例を紹介します。

シバン(shebang)を解釈して実行する(Rubyの場合)

Linuxでは拡張子無しの実行ファイルがよく使われます、Linuxでは拡張子判定なんてものはありません、Windowsでは拡張子も判定材料に使われますが、Linuxでは拡張子も含めて単なるファイル名であり、「拡張子なんて単なる飾りです、偉い人にはそれが分からんのです」というのがLinuxの世界です。
しかしその拡張子なしのファイルを実行すると、中身がシェルスクリプト以外のスクリプト言語で書かれてても実行できます、そんな時ファイルの先頭に書かれている

#!/usr/bin...

という一行がshebangです、ここではそのshebangをファイル判別で表現してみます。

まずは、拡張子無しファイルに、shebang付きのRubyを書きます。
※「#!/usr/bin/env」を利用するのはshebangとして如何なものか、とLinux界隈でよく指摘されますが、gemなどで自動生成されるコードだとこのように生成されます

hello
#!/usr/bin/env ruby

puts "hello world"

次に、設定に以下のユーザー定義のファイル判別を追加します。

※自身の設定が消えないように、適用前にバックアップを取るか、追加取り込みをしてください

PPx.CFG
E_cr    = { ; [Enter]用判別
:SHEBANG_RUBY   ,%OB ruby %FCD
}

X_uftyp = { 
:SHEBANG_RUBY   = 0,#!/usr/bin/env ruby
}

設定後、拡張子無しのエントリーでEnterを押すと

shebang_test.png

とPPxでもLinuxのようにshebang判定実行のようなものが出来ました、ただしあくまでもそれっぽい動作なだけなのでご注意ください。

実行できるファイル判別を追加する

デフォルトのファイル判別は「[Enter]のE_cr」と「\[Enter]のE_scr」の二種類ですが、次のようにショートカットキーを利用して追加する事もできます。
ここではCtrl+Shift+Enter(^\[Enter])で実行するファイル判別「E_cscr」を追加してみます。

※自身の設定が消えないように、適用前にバックアップを取るか、追加取り込みをしてください

PPX.CFG
KC_main = { ; PPcメイン窓
^\ENTER ,*execute ,%%ME_cscr,%C
}

E_cscr  = { ; ^\[Enter]用判別 (Custom)
TXT ,%Orib notepad %FDC
*   ,%OB echo 未実装
}

ファイル判別はE_xxxの形式であれば自作できます、なおショートカットキーなのでEnter以外でも構いません。

このようにすれば幾つでもファイル判別が増やせます。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0
Help us understand the problem. What are the problem?