2013/01/26

メジャーモードのひな形

;;; Code:
;(require ')
;; consts, vars, etc...
(defconst s "hello!")
;; internal functions
(defun get-string ()
(concat s "\n"))
;; command
(defun test-insert-greeting ()
(interactive)
(insert (get-string)))
;; major-mode definition
(defun test-mode ()
"Test Mode"
(interactive)
(kill-all-local-variables)
(setq mode-name "Test")
(setq major-mode 'test-mode)
;; keymap
(setq test-mode-map (make-keymap))
(define-key test-mode-map "h" 'test-insert-greeting)
(use-local-map test-mode-map)
;; hooks
(run-hooks 'test-mode-hook))
(provide 'test-mode)
;;; test-mode.el ends here
view raw test-mode.el hosted with ❤ by GitHub

たまに作ろうとすると忘れているので gist に置いとく。

参考にさせてもらったサイト

2013/01/25

まず退屈にならなければならない

昔読んでいた「Oh!X」という雑誌で誰かが言った言葉を思い出す。

ここでいう「退屈」は

あー、めっちゃヒマー。しにそー

みたいなのではなくて

ムムム、ヒマになってしまった。しゃーない、なんかするか

というニュアンス。

つまり、ある日突然訪れる自由時間。これをなにか面白いことに使いたい。コードを書いたり、何かを設計したり。

でも現実は、なんとなくダラダラ過ごしてしまうということも多い。 時間がないからできないんじゃなくて、単にノリが足りないからやる気が起きない。そんだけ。

これを回避するには、普段とりあえず忙しくしとくだけでいいらしい。

くだらないことでもなんでもいい。単純作業でも会議でも無意味な授業でも風呂掃除でもなんでも。その仕事自体の価値なんてどうでもいい。 仕事中の「ノリ」を維持できることならなんでも。で、そいつらをさっさとやっつけて退屈になる。それこそが目的。

早い話しが、プチプチ(梱包材)だ。やがて確実に来る自由時間までのスキマを埋めてくれることに価値がある。

もし、ヒマで死にそうなら、たぶん梱包材が足りてない。そんなときは、何かしょうもない仕事を人からもらったほうがいい。でないと、せっかくの退屈を楽しいことに使えなくなる。

逆に、忙しすぎて退屈が来ないなら、たぶん真剣にやりすぎている。目に入るものすべてを愚直にやろうとするのは無謀なことだ。退屈という時間は、たぶんすごくデリケートで、梱包材を詰めすぎると傷んでしまう。

なにか面白いことをするには、まず退屈にならなければならない。そしてそのためには「とりあえず」忙しくしておくことが大切なんだと。

そう考えると、一見意味がなさそうなものでも役に立ちそうに思えてくるから不思議なもんだ。

ほんじゃ、今日もとりあえず仕事しときますかw

Emacs24がレキシカルスコープだったとは…

なにげに、めっさわかりやすい説明があった。

Emacs Lisp における Lexical binding

「なんでいまさら?」って気がしないでもないけど、xyzzyから何か持ってくるときに楽かもしれない。

2013/01/24

Octopress こと始め

とりあえず忘れそうなことだけ。

日常的なこと

記事を書いて、

$rake new_post["title"]
$open source/_posts/2013-01-24-title.markdown

ローカルでプレビューして確認。

$rake generate
$rake preview
--> http://localhost:4000

ほんで、デプロイ。

$rake gen_deploy

たまにはソース一式のコミットしとくと(ブランチはsourceに切り替え)

$git add .
$git commit -m 'commit message'
$git push origin source  (初回)
   or
$git push

その他

  • 設定を変えるにはoctopress/_config.ymlを変更。
  • スタイル変えるときはoctopress/sass/custom/配下をいじる。フォントの大きさとかは_styles.scssを変更。

参考になりそうなサイト

まだよくわからんす。

2013/01/23

Emacsで開いているファイルをFinderで開く

M-x e で finder を開きます。
(defun open-finder-1 (dir file)
(let ((script
(if file
(concat
"tell application \"Finder\"\n"
" set frontmost to true\n"
" make new Finder window to (POSIX file \"" dir "\")\n"
" select file \"" file "\"\n"
"end tell\n")
(concat
"tell application \"Finder\"\n"
" set frontmost to true\n"
" make new Finder window to {path to desktop folder}\n"
"end tell\n"))))
(start-process "osascript-getinfo" nil "osascript" "-e" script)))
(defun open-finder ()
(interactive)
(let ((path (buffer-file-name))
dir file)
(when path
(setq dir (file-name-directory path))
(setq file (file-name-nondirectory path)))
(open-finder-1 dir file)))
(defalias 'e 'open-finder)
view raw open-finder.el hosted with ❤ by GitHub

カレントバッファがファイルならそれがある場所を、そうでないならデスクトップを開きます。Windosのときもこういうのを作ったけど、Macでもやっぱり必要ですね。

なんで M-x f じゃなくて e なのかというと(ry

参考にさせてもらったサイト:

Mac で "defaults write ほげ" とかするときの、plistをすべて表示する

Mac で設定値をコマンドラインで書き込むときに

$defaults write ほげ

とかします。

このときの「ほげ」がわからんので全部表示するのをpythonで作りました。

# Represent all {key=value} pairs in your Mac when you using domains "defaults write FOOOOO".
#
# usage: $default_all_print.py | less
from commands import getoutput
for d in getoutput('defaults domains').split(', '):
print d + ' ' + getoutput('defaults read ' + d)
print
$python default_all_print.py | less

とかして使います。

なんせキーだろうが値だろうが、全部出るので検索するのに便利かも。