アクトインディ開発者ブログ

子供とお出かけ情報「いこーよ」を運営する、アクトインディ株式会社の開発者ブログです

Stumpwm で Redmine のチケットのタイトルを簡単にコピペ

こんにちは、tahara です。

今日は Stumpwm 使えば Redmine のチケットのタイトルを簡単にコピペできるよ、というお話です。

ataka さんに Redmine を 0.8.5 というすごく古いものか最新にアップデートしてもらいました。 いろいろ便利になったのですが、チケット詳細画面で以前はチケットの ID とタイトルが同じ行に 並んで表示さていたのに、別の行に表示されようになってしまいました。

これから

これになった

git のコミットメッセージに

refs #9999 いこーよ: 口コミタグ付大作戦!

というようなコメントを入れていたので、簡単にコピペできないのは大きな問題です。

幸い私は Stumpwm ユーザですので、次のようなコードを書いて解決できました。

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;; Redmine
;;;;
;;;; sudo apt-get install xclip
;;;;
(ql:quickload :drakma)
(ql:quickload :cl-json)

(defun redmine-issue (id)
  (let* ((drakma:*text-content-types* '(("application" . "json"))))
    (cdr (assoc :issue
                (json:decode-json-from-string
                 (drakma:http-request
                  (format nil "https://example.com/issues/~a.json" id)
                  :additional-headers '(("X-Redmine-API-Key" . "xxxxxxxxxxxxxxxxxxxx"))))))))

(defun redmine-issue-subject (id)
  (let ((issue (redmine-issue id)))
    (format nil "#~a ~a: ~a" id
            (cdr (assoc :name (cdr (assoc :project issue))))
            (cdr (assoc :subject issue)))))

(defcommand r (id) ((:number "#: "))
  "set the issue subject to a clibboard."
  (let ((subject (redmine-issue-subject id)))
    (run-shell-command (format nil "echo \"~a\" | xclip -selection CLIPBOARD"
                               subject))
    (message "~a" subject)))

~/.stumpwmrc にこれを書いておけば

: r 10000

クリップボードに「#9999 いこーよ: 口コミタグ付大作戦!」が入ります。

Stumpwm 最高!

最後に、弊社ではエンジニアデザイナ募集をしています。 まずはランチを食べながらお話だけでも!