κeenのHappy Hacκing Blog | Lispエイリアンの狂想曲

octomacs.elを修正しました

EmacsからOctopressに投稿できるOctomacs.elが最新版のrvm.elに対応してないようだったので修正してみました。

原因はOctomacs.elがrvm.elの内部で使われている関数を使っていたのですが、その関数が最新版で削除されていたからだったみたいです。

結論として、

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
*** /home/kim/.emacs.d/lisp/octomacs/octomacs.el 2013-09-16 22:29:14.498296762 +0900
--- /home/kim/.emacs.d/elpa/octomacs-20121026.1649/octomacs.el 2013-08-31 23:54:13.044373498 +0900
 ***************
 ***4,10****
 ;;
 ;; Author: Jacob Helwig <jacob@technosorcery.net>
 ;; Homepage: http://technosorcery.net
! ;; Version: 0.0.1
 ;; URL: https://github.com/jhelwig/octomacs
 ;;
 ;;; License:
--- 4,11 ----
 ;;
 ;; Author: Jacob Helwig <jacob@technosorcery.net>
 ;; Homepage: http://technosorcery.net
! ;; Version: 20121026.1649
! ;; X-Original-Version: 0.0.1
 ;; URL: https://github.com/jhelwig/octomacs
 ;;
 ;;; License:
 ***************
 ***133,146****
 (defun octomacs-format-rake-task-with-args (task &optional arguments)
 "Build a shell suitable string of the rake TASK name with the specified ARGUMENTS."
 (let ((arguments-string (if arguments
! (format "[%s]" (if (listp arguments) (mapconcat 'octomacs-shell-escape-string arguments ", ") arguments))
 "")))
 (format "'%s%s'" task arguments-string)))
  
 (defun octomacs-rake-with-rvm (directory task &optional arguments)
 "Run rake task TASK with specified ARGUMENTS in DIRECTORY using rvm"
 (let* ((default-directory (file-name-as-directory (expand-file-name directory)))
! (rvmrc-info (or (rvm--load-info-rvmrc) (rvm--load-info-ruby-version) (rvm--load-info-gemfile)))
 (rvm-command (if rvmrc-info
 (concat "rvm " (mapconcat 'identity rvmrc-info "@") " do ")
 "")))
--- 134,148 ----
 (defun octomacs-format-rake-task-with-args (task &optional arguments)
 "Build a shell suitable string of the rake TASK name with the specified ARGUMENTS."
 (let ((arguments-string (if arguments
! (format "[%s]" (mapconcat 'octomacs-shell-escape-string arguments ", "))
 "")))
 (format "'%s%s'" task arguments-string)))
  
 (defun octomacs-rake-with-rvm (directory task &optional arguments)
 "Run rake task TASK with specified ARGUMENTS in DIRECTORY using rvm"
 (let* ((default-directory (file-name-as-directory (expand-file-name directory)))
! (rvmrc-path (rvm--rvmrc-locate directory))
! (rvmrc-info (if rvmrc-path (rvm--rvmrc-read-version rvmrc-path) nil))
 (rvm-command (if rvmrc-info
 (concat "rvm " (mapconcat 'identity rvmrc-info "@") " do ")
 "")))

こんな感じです。これでちゃんと.rvmrcやら.ruby-versionやら.ruby-gemsetやらを反映してくれます。 pull-req投げてみました。初pull-reqです。英語心配です。

俺、pull-reqとりこまれたらrake gen_deployにも挑戦するんだ…

あ、因みにこの投稿はinit.el

(setq octomacs-workdir-alist '(("default" . "~/Ruby/octopress")))

してoctomacs-new-postから投稿してます。

Written by κeen
Later article
Gitあれこれ