hgのコマンドが面倒だったので適当に補完

 前に書いてたmercurialのコマンドが面倒だったので、適当に補完機能をつけてみた。ただ、新たにキーを割り振らなくてはいけなくてその辺はキー設定が微妙なのであんまり使うかどうかは不明。complete-word?かなにかがSPCに割り当てられててスペースがC-qしないと入力できない理由に気付かなくて妙に戸惑ったけど、その辺は適当にゴニョゴニョしてごまかした。初め自前で全部補完を作ろうとして微妙な感じになってたが、completing-readとかいうのがあってよかった。良い感じに適当にやっても補完がつく。補完対象は適当に途中のリストの所に増やせば良い感じ。

(defun hg-comp()
  (interactive)
  (define-key minibuffer-local-completion-map #\SPC 'self-insert-command)
  (execute-shell-command
   (concat "hg "
     (completing-read "hg "
       '("add" "annotate" "cat" "commit" "copy"
         "clone" "diff" "grep" "init" "locate"
         "log" "manifest" "pull" "push" "remove"
         "rename" "status" "update")
         :must-match nil))
   nil "cmd"))

;;キー設定
(global-set-key '(#\C-c #\h #\g) 'hg-comp)

キー設定は適当。