mieki256's diary



2018/03/06(火) [n年前の日記]

#1 [ruby][emacs] Rubyソースの整形ツール rufoをインストールしてみた

Rubyソースを整形してくれる、rufoというツールがあるらしい。

_Rubyの高速フォーマッタ−"Rufo"を使ってみる - Qiita
_ruby-formatter/rufo: The Ruby Formatter - created by @asterite

インストールしてみた。環境は Windows10 x64。
gem install rufo

rufo hoge.rb で整形できる…のかな。たぶん。

Emacsからrufoを呼び出す。 :

自分は普段、Rubyソースを Emacs (NTEmacs) で書いてるけれど、Emacs から rufo を呼び出すために、rufo.el をインストールしてみた。

_aleandros/emacs-rufo: Emacs integration with the Rufo ruby code formatter

gitを使ってローカルにクローン。
gti clone https://github.com/aleandros/emacs-rufo.git

rufo.el を、~/.emacs.d/elisp/ 以下にコピー。

~/.emacs ( ~/.emacs.d/ntemacs.el ) に以下を記述。
;; rofu - Ruby source formatter
;; C-z f  rufo-format-buffer
(require 'rufo)
;; (setq rufo-enable-format-on-save t)
(setq rufo-enable-format-on-save t) を有効にすれば、.rb ファイルを保存するたびに rufo が呼び出されるのではないだろうか。試してないけど。

rufo.el の中で、C-c f を rufo-format-buffer に割り当ててあったが、自分の環境では既に利用していたショートカットキーだったので、rufo.el を直接弄って C-z f に変更しておいた。とメモ。

#2 [xyzzy] xyzzyのlispを少し勉強

この日記ページを書く際には、xyzzy というEmacs系のエディタを使っているのだけど。時々、同じような編集作業をする時があるので、多少自動化できないかと xyzzy の lisp についてググって勉強してみたり。

リンクの記述を変更する関数。 :

以下のような行があったとして。
正規表現をテストして遊ぶ (xyzzy[しょぼしょぼすくりぷと])
http://edutainment-fun.com/script/xyzzy/tips/regular.html

上記の記述を、以下のように変更したい。
 LINK http://edutainment-fun.com/script/xyzzy/tips/regular.html 正規表現をテストして遊ぶ (xyzzy[しょぼしょぼすくりぷと])

そういう処理をする関数を書いてみたり。
(defun transpose-hnf-link ()
  (interactive)
  (progn
    (goto-bol)
    (forward-line)
    (transpose-lines)
    (backward-line 2)
    (goto-eol)
    (insert " ")
    (delete-char)
    (goto-bol)
    (insert "LINK ")
    (goto-bol)
    (forward-line)))

(define-key *hnf-mode-map* '(#\C-c #\k) 'transpose-hnf-link)

lisp の達人が見たらゲロを吐きそうなソレだろうけど…目的が果たせそうだから、これでいいや…。

少し説明すると…。
  • 関数を作る時は、(defun hoge () 〜 ) と書く。
  • (interactive) と書いておくと、「この関数はコマンドだよ」「M-x 関数名で呼び出せるよ」という意味になる。
  • (progn 〜 ) と書いておくと、上から順々に処理をしてくれる。
  • (goto-bol) で行頭に、(goto-eol) で行末に、カーソルが移動する。
  • (forward-line) で、1行下に、(backward-line)で、1行上に、カーソルが移動する。
  • (forward-line n) (backward-line n) で、n行下、n行上に、カーソルが移動する。
  • (transpose-lines) で、現在行と一行上を入れ替える。カーソルは、現在行の1つ下に移動する。
  • (insert "hoge") で、現在のカーソル位置に hoge という文字列を挿入できる。
  • (delete-char) で、現在のカーソル位置で、1文字削除できる。Deleteキーを押した時と同じ動作、だろうか。
  • (define-key *hoge-mode-map* '(#\C-c #\k) 'fuga-func) で、ショートカットキーが設定できる。この場合は、「hoge-mode 時に、C-c k のキー入力で fuga-func を呼び出せ」という設定になる。

リンクURLを変更したいけどやり方が分からず。 :

以下のような記述があったとして。
 LINK http://hogefuga/~piyo/diary/201312203.html#201312203 piyo's diary - 記事名

以下のように変更したい。
 LINK #{2013,12,20,3} piyo's diary - 記事名

しかし、やり方が分からない。

正規表現を使えば、該当文字列にマッチさせることはできそう。
 M-x query-replace-regexp
 Query repla regexp: ^LINK http:///hogefuga/.+#
 With: LINK #

ただ、xyzzy の lisp から、それを呼び出す方法が分からない…。

余分な部分を削除するだけなら、以下のような感じだろうか…。
(defun change-hnf-link-uri ()
  (interactive)
  (if (looking-at "^LINK http://hogefuga/.+#")
      (progn
        (delete-region (match-beginning 0) (match-end 0))
        (goto-bol)
        (insert "LINK #"))))
  • (if a b) で、a が t なら、b を実行。
  • (looking-at "正規表現") で、正規表現とマッチするか場所があるかを調べられる。マッチしたら t、しなかったら nil が返る。
  • (delete-region A B) で、A から B までの範囲を削除。
  • (match-beginning 0) で、正規表現に一致した場所の先頭を、(match-end 0) で、正規表現に一致した場所の末尾を取得。

待てよ? 余分な部分を削除できたら、後は「{」「,」「}」を挿入していくだけなのでは…。(forward-char n) で、カーソルをn文字右に移動して、(insert ",") で挿入していけばなんとかなるかも。

#3 [pc] 無線LANルータが正しいIPアドレスを渡してくれない

手持ちのタブレットPC、DELL Latitude 10 がインターネットに接続できなくて悩んだり。調べてみたら、無線LAN(Wi-Fi)が、正常なIPアドレスを取得できてなくて。ウチの場合は、192.168.n.xxx になるはずが、192.168.27.3 になっていて…。なんでや。

使ってるルータは、NEC Aterm WR8300N。

ルータを再起動したり、タブレットPCの Windows8.1 x86 を再起動したり、管理者権限でコマンドプロンプトを開いて ipconfig /release や ipconfig /renew を打ってみたりしたけど変化無し。

よく分からないことに、Aterm WR8300N が提供する、2種類の無線LANのうち、暗号化が甘いほう(WEP)に繋ぐと、正しく 192.168.n.xxx が得られる。しかし、WPA/WPA2-PSK(AES)のほうに繋ごうとすると、妙なIPアドレスが返ってくる。

結局、ルータ側のDHCP固定割当設定を使って、IPアドレスを固定する方向で対処。タブレットPC側も、DHCPを使わず、IPアドレスを決め打ちで設定してみたり。

しかし、どうしてこんな状況になるのだろう…。

以上、1 日分です。

過去ログ表示

Prev - 2018/03 - Next
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project