March 30, 2007

ダブルクリックで選択する文字範囲の変更

先日ちょっとした事故でgnome-terminalのprofileをすべて消失させてしまってから、ダブルクリックによる文字選択の挙動が変わってしまったので、ちょっとメモ。

まず何が悪かったかというと、profileのdialogにある「単語単位で選択する文字」が空だったことで、これによって英数字のみ単語として認識する、という状況だった。これだと、ちょっと不便なので、設定を次のように変えた。

.0-9A-Za-z-

実際にこれを処理しているのがvte_terminal_set_word_chars()で、レンジ指定を可能にするためにハイフンのみ特殊な役割を担っている。よって-そのものを含めたい場合は、その出現位置に注意しないといけない。ややバグっぽい挙動だけど

0-9A-Za-z.-

と記述すると.が無視されてしまう。まあ単独の文字として扱われる条件が

                if ((wbuf[i] != '-') && (wbuf[i + 1] != '-')) {

で、レンジの条件が

                if ((wbuf[i] != '-') &&
(wbuf[i + 1] == '-') &&
(wbuf[i + 2] != '-') &&
(wbuf[i + 2] != 0)) {

となっていて、これに漏れた条件については救済していないのが原因。BK臭が漂ってはいるけれども最初に書いたようにしておいた。

No comments: