2018年11月25日日曜日

emacs の ivy で 今更 fuzzy を使ってみる

私は、emacs で、helm や ido ではなく、 なんとなく ivy を使っている。 で、今更だが絞り込みで、 fuzzy が設定できることを知った。

emacs で projectile を試してみようかと、ネットを探っていたら、 ivy で fuzzy な絞り込み検索の設定記事に出会った次第。

ここの、 Better fuzzy matching support in Ivy · (or emacs) という記事。

fuzzy な絞り込みは、 ivy のドキュメントにあった( ここ )のだが、 まあ、コピペ専門の私が読んでるはずもない。

私の理解では、ivy-re-builders-alist を指定すればよく、 ivy-rotate-preferred-builders で変更可能ということみたい。

取り敢えず ivy のドキュメントにある方法で試したところ、 fuzzy は、かなり五月蝿い表示で直感的でなく、絞り込みに手間がかかるし、 古いマシンだからか、行数が多いとかなりレスポンスが悪くなる。

あと、私の設定では ivy-rotate-preferred-builders が上手くいかなかった。

きっと、少しシンプルに戻すと思うが、慣れもあるので、 暫く使ってみることにした。

(setq ivy-initial-inputs-alist nil)  ; without `^`
(setq ivy-re-builders-alist
     '((t . ivy--regex-fuzzy)))
; https://emacs.stackexchange.com/questions/36745/enable-ivy-fuzzy-matching-everywhere-except-in-swiper
; (setq ivy-re-builders-alist
;     '((swiper . ivy--regex-plus)
;       (t      . ivy--regex-fuzzy)))

きっと下の方の設定にするのではないかなあ。

[201901] counsel-fzf というのも用意されていた。 counsel-find-file の代替え的な位置づけみたい。

counsel-fzfはデフォで再帰的に検索してくれる。 counsel-find-file はカレントだけでシンプル。 しばらく counsel-fzf も試用してみる。

2018年11月13日火曜日

Python の prompt-toolkit v2 の Completer を使ってみる

python script をコマンドラインから使う場合、設定ファイルを引数で指定したりするのだが、 色々なケースで使うようになると、 設定ファイルが増えてきて、 ファイル名の確認が面倒になっていた。

そこで、script 内にデフォルトディレクトリを指定しておいて、 globでファイル名リストを作成して、 コンソールで入力補完させてみては、というもの。

自分で考えた訳ではなく、 4 Python libraries for building great command-line user interfaces | Opensource.com を見て、prompt tool kit v2 のドキュメントを見ながらアレンジした次第。

fuzzyfinder は私のレベルでは、不要かもしれないが、 将来使うかもしれないので、一応、入れたままにした。 history は外した。で、こんな感じ。


スクリプトはこんなもん。



#!~/.pyenv/shims/python
"""Test of prompt-toolkit."""
#

from pathlib import Path

from fuzzyfinder import fuzzyfinder
from prompt_toolkit import prompt
from prompt_toolkit import print_formatted_text as pprint
from prompt_toolkit.completion import Completer, Completion

# from prompt_toolkit.history import FileHistory
# from prompt_toolkit.auto_suggest import AutoSuggestFromHistory


class MyfileCompleter(Completer):
    """Set Completer."""

    def get_completions(self, document, complete_event):
        """Get Completer."""
        globbed_path = Path('~/Documents/tours/_config_master').expanduser()
        inifile_list = [f.name for f in globbed_path.glob("*.ini")]
        word_before_cursor = document.get_word_before_cursor(WORD=True)
        matches = fuzzyfinder(word_before_cursor, inifile_list)
        for m in matches:
            yield Completion(m, start_position=-len(word_before_cursor))


def main():
    """Main process."""
    #

    user_input = prompt(
        'Select set file >',
        # history=FileHistory('history.txt'),
        # auto_suggest=AutoSuggestFromHistory(),
        completer=MyfileCompleter(),)

    pprint('select "%s"' % user_input)


if __name__ == '__main__':
    main()
#

こんなインターフェースにしておけば、 設定ファイルの名前を冗長にできるかも、と思ってしまった。

2018年11月8日木曜日

パッチキット購入は、リマインダーで。久し振りのパンクで学ぶ。

久し振りのパンク。後輪。 ガラスの小さい破片を拾った。

雨上がりなので、拾いやすい情況ではあったのだが、 MaxxisのRe-fuseのシルクワームは、 ガラスの小片を通してしまうようだ。 このタイヤ、なにかと不幸な出来事が続く。 想定内だけど、新規の購入なないだろうなあ。

それより問題だったのは、自分の責任なんだが、 topeakのパッチがご臨終状態だったこと。


孔は発見できたので、 パッチをあてて、ガラス片を取って、 汗かきながら空気を入れて走り出したのだが、 暫くすると圧が下がる。 確認するとパッチが写真のような状態で、 パンク処理は諦めて、チューブ交換となった。

予備チューブもパッチも無い情況でのライドは避けたいので、 サイクルショップを探して、たまたまパッチがないお店だったので、 チューブ2本購入になった。

ガラス小片とか厄介で、 タイヤのゴムに埋まって見付けられない場合がある。 実走すると、押されてガラス先端がタイヤ内側に頭を出し、 チューブを痛めてエア漏れという、昔の痛い思い出が甦った次第。

パッチの寿命について考えたことがあったので、 シマノPro (今は無い商品)のパッチを補充してたのだが、 ロードの方は入れてなかったようだ。 カレンダーのリマインダーにコメント付き設定する必要があると痛感。

一応、現有パッチの確認。左が 残り2枚のうちの1枚のTIPTOP、右がShimanoPRO。一晩置いた後。

TIPTOP のパッチキットかなあ。接着状態が正常ではないみたいだが、 ゲル状の層が少し厚いので、それなりに止まっているように思う。

ズボラな私には、薄いやつは怖い。

最後に、topeak のパッチは、数年以上はゆうに経過したもの、と擁護しておく。 ロード用には薄い方が良いかも、と購入したような気がする。

2018年11月6日火曜日

画面キャプチャツールを、shutter から frameshot に変更

先日、極めて苛ついていて、落ち込んでいて、で、 Thinkpad の Debian を、stretch から buster に dist-upgrade してしまった。

次期 buster のフリーズが来年頭(20190112 Transition freeze)なので、 あと三ヶ月弱なんだが、最低の気分だったので、冷静でいられなかった。

Upgrade には、四時間ほど必要だった。あと、 動かないやつがあったので、さらに一時間ほど(この一時間は自分の技量が足らないから)。

しばしの間、普通に使っていたのだが、 今まで使っていた画面キャプチャツールの、 shutter が 削除されているのに気付いた。buster のパッケージリストから消えている。

shutter を調べてみると、 Source の最終更新が 2014-08-17 で、gnome2 のライブラリに依存してたりする。 なので、gnome3 になる buster では、メンテを期待できない情況みたい。

つまり、私には扱えないということなので、別のツールを探すことに。

見付けたのは、 frameshot 。 そこそこメモリを食うのが抉に触るが、機能的には、ほぼ不満なし。

ただ、編集で丸数字やアイコンがスカッと使えないことや、 キャプチャサイズのデフォ値が指定できないのが少し残念。 (本当は出来るのかもしれないけど)

普段使わないので、変更に気付いていない奴が、まだまだあるんだろうなあ。

2018年11月1日木曜日

亀岡のコッペパン

カメオカハサムコッペパン で 亀岡牛コロッケとミルククリームを頂いた。うまい。 西山こっぺ堂より好き。でも、ボリュームを期待してはいけない。

潰れるとパンの良さが消えるし、メニューによっては中身がはみ出すので、ジャージのポケットはダメ。 フロントバッグの片隅にそっと入れて、気持いい場所で食べるのが良い。

入店した順番に注文を受けて、会計、調理、受け渡しをして、次のお客さんが注文というシステム。 一人で多く注文するひとがいるので、思ったより待つことになる。 上限は8個になっている。 予約もありで、優先して会計、受け渡しを行なわれるが、前日予約が基本。

お一人で切り盛りされているので、おとなしく待つ。

サイクルスタンドはあるが、死角になる。 車は駐車場があるのに路上駐車だぞ、とやっかむ自分が情け無い。

売り切れがよくあるらしく、閉まっていることがよくあるので、注意。 実際、売り切れを数回経験している。 帰りに寄ろうなんて考えない方がよい。

並河駅近くの 鉄道歴史公園 で、DD51とおやつタイム。

亀岡は、平場でも紅葉の兆し。

Emacs の lsp の設定、なう(202310)

前回さらしてから、さらに1年。そう、3年めになる。 が、今回は一段と自信がない。 環境は、 Debian GNU/Linux 12 (bookworm) + emacs(29.1)。consult + company。 embark は未だに使ってない。 用途は、メモ と ...