2/2にhelmにアクションを追加する方法を書きました が、
7/7の更新により、型に応じたアクションがカスタマイズ可能になりました!!

それにより旧式の方法は使えなくなりましたが、
単に変数の設定で簡単にアクションを追加できます。

アクションを追加する

前バージョンと同じく、file typeにstatアクションを追加します。

appendで末尾にアクションを追加すればいいです。

;;; 追加するアクション関数
(defun file-do-stat (filename)
  (interactive "FStat File: ")
  (shell-command (format "stat %s" (shell-quote-argument filename))
                 "*Stat*"))
;;; アクションを追加するためにはhelm/helm-typesをrequireする
(require 'helm)
(require 'helm-types)
(setq helm-type-file-actions
      ;; 末尾に追加!
      (append helm-type-file-actions '(("Stat" . file-do-stat))))

ここではファイル型のアクションを追加しましたが、
他の型にも対応する変数が存在します。

  • helm-type-buffer-actions
  • helm-type-timers-actions
  • helm-type-bookmark-actions
  • helm-type-command-actions
  • helm-type-function-actions

キーバインドを追加する

キーバインドの追加は前バージョンと同じ方法でいけます。

ここではfileな情報源にてC-c C-sでstatを実行するようにします。

;;; -*- lexical-binding: t -*-
(require 'helm)
;;; closureを使っているのでlexical-binding必須!
(defun helm-define-action-key (keymap key def)
  "アクションをキーバインドに設定"
  (define-key keymap key
    (lambda ()
      (interactive)
      (with-helm-alive-p
        (helm-quit-and-execute-action def)))))

;;; 追加するアクション関数
(defun file-do-stat (filename)
  (interactive "FStat File: ")
  (shell-command (format "stat %s" (shell-quote-argument filename))
                 "*Stat*"))
;;; 定義するキーバインド
(require 'helm-files)
(helm-define-action-key helm-generic-files-map (kbd "C-c C-s") 'file-do-stat)

本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。