2013年7月15日月曜日

PPxで外部ソフト起動メニュー

つかさです。
PPxから外部ソフトを起動する方法。



いつも僕はこのランチャの用途にはfenrirを用いるのだが、それができない場合のためにメモしておく。

やり方


以下を編集して取込。Ctrl+Lで外部ソフト起動用のメニューが表示されます。

M_exec = { ** comment **
AzPainter = %Ob D:\bin\azpt212\AzPainter2.exe
EasyShot = %Ob D:\bin\EasyShot\EasyShot.exe
emacs = %Ob D:\bin\emacs\bin\runemacs.exe
Kifu for Win = %Ob "C:\Program Files (x86)\Kifu for Windows V7\KifuW.exe"
MPC = %Ob D:\bin\MPC-HC\mpc-hc.exe
SETZER = %Ob D:\bin\SETZER\SETZER.exe
}

KC_main = { ; PPcメイン窓
^L ,%M_exec
}

カーソル位置のパスを投げるだとか引数をつけるだとかそういうのはまったく関係なくただ起動するだけのメニューです。ひねりとかそういうの全く無さすぎてあれなんだけどたまにはいいよね
ポイントは起動したいパスの前に%Obをつけることと、パスに空白がある場合は""でくくるということです。

他のやり方


後、
%Ob D:\bin\azpt212\AzPainter2.exe

は
*launch D:\bin\azpt212\AzPainter2.exe
*start D:\bin\azpt212\AzPainter2.exe
%Z D:\bin\azpt212\AzPainter2.exe

と書いても同じ事が(おそらく)できるのでこっちのが直感的に分かりやすそうだという人は試してもいいかもしれない。僕も使い始めのころはこの%ってなんだろうとかOって何の略だろうとか無駄に考えてはまってた気がする。何が違うか気になる人はHelpを見て研究しましょう。

2013年7月12日金曜日

ChangeLogをPPxで閲覧する

やってみた感想


ChangeLogでいくつか文章を読みながら、それのメモを書くということをやってみたがかなりいい。プリントの余白に書き込んでいた時みたいに、書き込む量を気にしないですむのでどんどん書いていける。
気になる箇所があれば、C-x 4 aでChangeLog.txtを開き、メモをする。書き終えたらC-x 0で閉じる。

PPvを並列する


次に、どうやってこのメモを活用するかという話になる。
やりたいのは、本文とこのメモとを見比べる環境を作ること。そのときには、対応箇所の一致ができればなおよい。

見出しをGrepでまとめるとか一々ChangeLogを手動で編集し直すとかそれ以前にメモの書式を変えるだとかいくつかやりようはあると思うが、単純にPPvを左右に並べるだけでいいのではないかと思った。




一々これを手動でやるのも面倒なので、PPv上で実行すれば

  1. 同フォルダのChangelog.txtを別IDのPPvで開き
  2. 右にくっつける
コマンドを作る。以下をカスタマイザーで編集して取込。
KV_main = { ; PPvメイン窓
\C ,%Obi %0\PPVW.EXE -bootid:Z  %1\ChangeLog.txt %: *fitwindow %N,%NVZ,6
}

PPvで文章を閲覧してて、そのメモを見たいという場合は、Shift+Cを押せば右にそのメモが表示されるので、見比べることができます。
PPXWIN.DLLが必要なので、ない場合はTORO's Libraryからダウンロードしましょう。

メモの反映作業


PPvで閲覧時に



Shfit+CをPPv上で押して、ChangeLog.txtを表示する



編集するときは、PPv上でEを押してエディタで開き、メモを元にして修正する。メモを書くときにどの見出しと対応しているかわかるようにしておいて、個々の見出しごとに修正するのがいい。

修正し終えたら、最後にメモをざっと見て反映させてない箇所が残ってないかの確認をする。

特定の章だけを抜き出したい


ChangeLogを使うと、時系列でどんどん書き連ねることになる。だが、実際にメモとして活用したいときは、カテゴリーごとにまとまっていたほうがいい。ではどうやってそれを実装するかということになる。

これも単純に、PPvでクリップボードの内容を表示させて対処すればいいのではないかと思った。

PPvをアクティブにしてCtrl+Vを押すと、クリップボードの内容を表示することができるのでこれを利用。先のChangeLogの閲覧時、その一部だけを表示したいとしましょう。




例えばこの黄色く囲んだ箇所だけを表示したいなら、範囲選択してCtrl+C、Ctrl+Vとすると


このようになる。

で、同じカテゴリーのことがいろいろな場所に散らばっている場合のをまとめて一覧表示させたいなら、それらをクリップボードに追加コピーしてPPvで表示させればいい。
そのためのスクリプトを用意。

ClipAdd.js

//!*script

PPx.Clipboard = PPx.Clipboard + "\n\n" + PPx.Extract("%*selecttext");

PPvの選択範囲をクリップボードに追加コピーするスクリプトです。
このファイルをScriptフォルダに保存してから、以下を編集して取込。

KV_main = { ; PPvメイン窓
&C ,*script %0\Script\ClipAdd.js
}

これで、Alt+Cで、選択範囲をクリップボードに追加コピーできるようになる。

例えば、以下のファイルの黄色く囲んだ箇所のみを表示したい場合は



最初の範囲を選択してCtrl+Cでコピー



次の範囲を選択してAlt+Cで追加コピー


PPv上でCtrl+V


単純すぎるというか原始的すぎるような気がしないでもないが、とりあえずこれでやってみる。

思ったこととか


プリントを使っていた時は、反映作業をするときはPCの横に書き込み済みのプリントを書見台とかで立てかけて、それを見ながらということをしてた。それと比べるとこっちのが色々とスムーズですね。プリントを使うメリットは、PCの前でなくても作業ができる、ことくらいしかなさそう。

今、ネックになるんじゃないかなーっと思ってるのは、ChangeLogの古いメモがずっと残されること。
例えばプリントだったら、それを参照して本文を修正してしまったら、後は書き残したことが無いかざっとメモを閲覧したあと、プリントごと捨ててしまうということをしている。反映された以上、そのメモはもう使うことはないしこの方がいい。残っていてもノイズにしかならない。

だが、今回のChangeLogだとずっとそれが残ってしまう。2日とか3日とか、メモをしばらくの間書きためておいてあとでまとめて修正作業をする、というのだったらこの仕組はいいのだが、その後がね。捨てるという過程を組み込めない。

2013年7月2日火曜日

ChangeLogでメモ?

問題意識


一つの文章をどう作っていくか、という問題がある。
メモをためることはMoEの手法を使えばできるが、それを材料にしてどのように一つの文章を作っていくか、ということについてはしっくりくるものはできてなかった。

今、僕がやっているのはプリントを介する方法である。

  • 文書データをプリントアウトする
  • そのプリントに書き込みをする
  • 元のデータに反映させる

ざっとこのようなことをしていた。
この方法の不満点は以下の点。

  • プリントを介すること。まず思いついたことを紙に書き込んだ後にデータにするのだから、二度手間である
  • それまでにためたメモデータの利用ができない。プリントを使って考察する環境において、参照することが基本できないから

この後者については、今までは関係しそうなメモのみをClipMarkFile.jsでまとめてプリントアウトして、参考にしたりはしてたが、あまり使えなかった。

PCの制限


じゃあPC上でやれよと思うかもしれないが、それでだいたい失敗してきたからこのようなことをしているのである。たいていは、集中が続かない、という仕方で破綻した。
なぜだろうかと考えたが、それは「文章を読みながらメモをする」という作業が必須なのに今までそれを実装してなかったからじゃないか、と思い至った。

プリントを使う場合は、基本、その文章を読み、そこで思いついたことを余白に書き込み、あとでそれから何か文章を作り直すということをしている。

  • 文章を読む→思いつきをメモする→それをいくつか溜める→それらを元に新たに文章を作り直す

という過程をとっている。
だがPCにおいては、これを実装していないため、

  • 文章を読む→新たに文章を作り出す

このようにメモを作って溜める過程を飛ばして、いきなり手がかりもない状態で文章を思いつき、作り出せということになる。このことがそもそも無理で、結局破綻してたのではないかと思うのだ。

今の枠組み


今のところシステムとして用意しているのは、howm形式のメモである。これが、この用途には適していないのではないか。

まず、今の形式では、本来の目的である保存のためのメモと、文章の作成過程での思いつきを書くためのメモを区別できない。
また、この用途のためにはhowmメモの仕組みは大掛かり過ぎる。別ファイルを開き、タイトルを書いて閉じて、という作業はもともとしていた文章を読むという行為をぶったぎってしまう。

一つのファイルを再利用して、何度も編集して使う、というのであればそのファイルを探す手間が生じるし、複数のファイルに分割してやるのではそれらをまとめて見る手軽な手段がない。

つまり、今までのhowmでやってたメモとは違った種類のメモが要請されてたのに、そのように認識せずそれに対応したものを用意していなかったのが問題なのではないかと思うのだ。

要請されるもの


今までのメモが

  • 保存して再利用するためのメモ

だとすれば、ここで要請されるのは

  • 一時的な、文章を読んでいるときに思いついたことを書くためのメモ

である。

この用途に即したものを実装したいわけであるが、要請されるのはざっと以下のようになるだろう。

  • 文章とメモファイルの対応
  • どの箇所についてのメモなのかの参照が容易
  • 文章を読む作業を妨げない。すぐ開け、すぐ閉じれる
  • 全体についてのメモと個々の箇所についてのメモとが分離できる

ChangeLog?


一番この用途に近いのは、ChangeLogではないかと思う。これはプログラムの変更履歴を書く形式の一つらしい。僕は今までは、プログラム作成時に思いつきを吐き出すのにこれを利用していた。

僕が使っているのはJunk ScriptsのChangelog.l

  • C-x 4 a

で新たな項目が追加される仕組み。

だが、これだと

  • どの箇所についてのメモなのかの参照が容易
  • 章ごとにメモを並列することができない。時系列のみ

の二点では求めるものとは違っている。
というわけで、しばらくはこの方面で何か工夫してできないかを考えてみたい。とりあえずEmacsのChangeLogを試してみようかな。

これがPC上でできれば、プリントを使う際に必ずネックになり、構造的に乗り越え不可そうな
  • 書き込みによる視認の低下
  • 元の文章が書き込みが増えると読みにくくなる
  • 余白の大きさに規定される

などは克服されるので、考えてみる価値はありそうかなと思っている。

2013年6月26日水曜日

現在窓を反対窓と同パスに

あふのように

O→現在窓を反対窓と同パス
Shfit+O→反対窓を現在窓と同パス

にするようにする。
カスタマイザーを開いて以下を編集して取込

KC_main = { ; PPcメイン窓
O ,%j%2
\O = @'='
}

2013年6月24日月曜日

xyzzyではてな記法の見出しを実装してみる(改)

xyzzyではてな記法の見出しを実装してみる - つかさのほえほえ日記で

  • 行頭に"*"か"**"を挿入するキーバインドを設定
  • 行頭が"**"か"***"ならその行だけ色を変える

ということをしていた。
そのときは.xyzzyに直接記述するという仕方だったが、拡張Lispにしてrequireする方がすっきりしていいのではないかとおもい、書き直してみる。

hatena-kihou.l
; -*- Mode: Lisp -*-
;
;;  はてな記法の見出しの実装(色づけとキーバインド)
;;
;;  行頭が"**"か"***"ならばその行に色をつける
;;
;;  キーバインド
;;      C-:     行頭に**を付ける
;;      C-]     行頭に*を付ける
;;
;;  Installation:
;;
;;      ~/.xyzzy または $XYZZY/site-lisp/siteinit.l に以下のコードを追加
;;
;;              (require "hatena-kihou")


(defun hateda-heading ()
  (interactive "*")
  (save-excursion
  (goto-bol)
  (insert "**")
  (fix-selection-point)))
(global-set-key #\C-: 'hateda-heading)

(defun hateda-headingsec ()
  (interactive "*")
  (save-excursion
  (goto-bol)
  (insert "*")
  (fix-selection-point)))
(global-set-key #\C-] 'hateda-headingsec)

(defvar *text-mode-formats*
  (compile-regexp-keyword-list
   '(
  ("^[=].*" t (:color 14 7 :line :bold ))
     ("^[*][*][^*].*" t (:color 7 4 :line ))
     ("^[*][*][*][^*].*" t (:color 7 14 :line ))
  )
   )
  ) 

(defun my-color-text-mode ()
  (make-local-variable 'regexp-keyword-list)
  (setq regexp-keyword-list *text-mode-formats*)
  )

(setq regexp-keyword-list *text-mode-formats*)
(add-hook 'text-mode-hook 'my-color-text-mode)

これをsite-lispフォルダに保存。
あとは.xyzzyかsite-lisp.lに

(require "hatena-kihou")

をコピペすればいいです。

前の記事から細かいところは多少変えたけれど、基本はだいたい同じ。

キーバインドは、

  • C-: → 行頭に**を付ける
  • C-] → 行頭に*を付ける
です。

色はデフォルトだと次のようになる。


2013年6月6日木曜日

カーソル移動を素早くする(改)

挙動を微妙に修正。
今まではカーソルがディレクトリ上なら最初のファイルに移していたが、最初のディレクトリに移るようにする。

cursormove.js
//!*script


// 最初のエントリの位置を計算
var fn;

for (var i = 0; i < 3; i++) {
  if (PPx.Entry(i).Name != "." && (PPx.Entry(i).Name != "..") ) {
    fn = i
    break;
  }
}

// カーソルが最初の時
if (PPx.EntryIndex == fn) {
  // ファイルなら最後へ
  if (PPx.EntrySize != 0){
    PPx.EntryIndex = PPx.EntryAllCount - 1;
    PPx.Quit();
  }
  // フォルダの場合
  for (var i = 0; i < PPx.EntryAllCount; i++) {
    // ファイルがあれば最初のファイルへ移す
    if (PPx.Entry(i).Size != 0) {
      PPx.EntryIndex = i;
      break;
      }
    // ディレクトリのみなら最後へ移す
    else {PPx.EntryIndex = PPx.EntryAllCount;}
  }}
// カーソルが最初のファイルの時は最後に
else if (PPx.EntrySize != 0 && PPx.Entry(PPx.EntryIndex - 1).Size == 0) {
  PPx.EntryIndex = PPx.EntryAllCount - 1;
  }
// それ以外は最初へ移す
else {PPx.EntryIndex = fn;}

以下を編集して取込
Ctrl+Eに割り振る。
KC_main = { ; PPcメイン窓
^E ,*script %0\Script\cursormove.js
}


追記 2013/12/11


ルートフォルダでもうまく動作するようにした

2013年6月2日日曜日

fenrirの設定(インスタントコマンド編)

インスタントコマンドには単機能ツールを登録しておくと非常に便利。というわけで必要なツールをまずダウンロードする。

bluewind&単機能ツール集 再配布所から
  • shutdown.zip
  • logoff.zip
  • reboot.zip
をダウンロード。それぞれ実行するとWindowsのシャットダウン、ログオフ、再起動をすることができる。

またB@r09u3⇔Style Op.2から

  • qtzero007.zip

をダウンロード。これは現在起動中のアプリをメニューで一覧表示し、強制終了することのできるツール。これもよく使う。それぞれ適当な場所に展開しておく。

instant.iniの編集


dataフォルダ内の_instant.iniをinstant.iniとリネーム。書式例を残しておきたいなら新しくinstant.iniという名前でファイルを作るのでもいい。このファイルをエディタで次のように編集して、先のツールを登録する。

instant.ini
[InstantCommand]
sh/="D:\bin\simpletools\ShutDown.exe"
log/="D:\bin\simpletools\LogOff.exe"
re/="D:\bin\simpletools\Reboot.exe"
q/="D:\bin\qtzero\qt0.exe /nopathname "
e/="D:\bin\Everything\Everything.exe"

イコールを挟んで左がコマンド、右がパスですね。
あとは登録したコマンドを打ち込めばそのツールが起動する。