DT日記

家を離れた自宅警備員の日記

2017年6月2日の日記

1

ぼくがひっそりと作って結構使ってたpsysh.elに機能リクエストと、それとは別のイイ感じのPRが届いてしまって。

github.com

github.com

よっしゃアンタが欲しいなら秒速で作ってやるで、って感じで実装して。

github.com

結果として眠い。

2

ぼくはこの日記のタイトルのような人間であるが、なぜか気の迷ってしまったことがあって

「【オフ会】エンジニア男子 VS おしゃ女子」なる謎? のオフ会? に参加してしまった。

特にコメントすべきことはないんですけど、特に有益な経験はなかったので、次があっても僕は行かない気がします。

3

お得情報をシャエさせていただきますが、暗黒美無王とお話したいときは(任意のエディタ)の勉強会を主催してみると良いかもしれません。

(任意)の例

kantou-emacs.doorkeeper.jp

(といふか、概ねEmacsのイベントでしか会って話したことがなかった気がするお)

4

Emacs Lispでのテキストファイルを末尾から処理する方法について。よくあるプログラミング言語ではちょっぴりめんどくさかったり、文字列を全行 split で輪切りにすることになったりしてめんどくさいんですけど、Emacsなんか、ただのテキストエディタだぞ。

(defun psysh--load-history (path n)
  "Load input history from PATH and return N elements."
  (with-temp-buffer ;; 作業用の一時的なバッファを作る
    (insert-file-contents-literally path) ;; ファイルの内容をそこにぶちまける
    (goto-char (point-max)) ;; バッファの最後までぶっとぶ
    (reverse ;; リストをひっくり返す
     (cl-loop repeat n ;; n回ループする
              do (beginning-of-line) ;; おもむろに行頭にカーソル移動してみる
              never (eq (point) (point-min)) ;; そこがファイルの先頭だったら、読み込むべき内容はないので糸冬了
              collect (buffer-substring-no-properties (point)
                                                      (save-excursion (end-of-line)
                                                                      (point))) ;; 行の内容をまとめる
              do (forward-line -1))))) ;; カーソルを一行上の行に移動

loopマクロは微酔半壊: Common Lisp: loopマクロ用法抄を読めば、書けます。collectmapみたいなもんで、そこにつっこんだ値が最終結果になります。で、それをreverseで反転させます。べんりですね。