コードを読むコツ

コードを読むってすごく大変。他人の作ったコードならもっと大変。なのに仕様書が無かったりする。 「コードしか無いならそこから仕様書を作れ。今後はその仕様書を参考にしろ。」というのはわかるが、しょっちゅうコードが変更されるので、仕様書よりも先に…

設計って何?

まず、先に言っておくと自分はど素人である。 仕事しているが、設計とかよくわかっていない。でも、設計って何なのかな?と思った場合、自分ならこう思うことをまとめてみた。 設計とは 設計というのは、自分がどういう考えを用いてプログラムを作るのかを、…

正規表現による置換の注意

問題 正規表現について、 hoge = 64; の64のみ取り出したい場合の置換の正規表現として、 検索用語: .*(\d*).* 置換後: $1と指定し、置換したが、64のみ取り出すことができない。 原因 初心者が陥りやすそうなミスだが 検索用語: .*(\d*).*では、先頭の.*…

query-replace-regexpの置換する文字に改行を指定したい場合

とある日、query-replace-regexpで、「,」を「\n」に置換したくなった。しかし、置換する文字に\nを指定しても、そのまま"\n"と置換されてしまう。そこで、調べたところ、 Query replace regexp hoge with : C-qC-jと入力すれば改行が置換される。似たような…

*scratch*バッファをkillしてしまった場合

誤って、*scratch*バッファをkillしてしまった場合は、 C-x b *scratch*で復活させる事ができる。

cygwin設定

cygwinの設定ファイル .bash_rc # base-files version 3.9-3 # To up the latest recommended .bashrc content, # look in /etc/defaults/etc/skel/.bashrc # Modifying/skel/.bashrc directly will prevent # setup from updating it. # The copy in your h…

grepとfind-tagのジャンプ先を読み取り専用にする

コードを読むことが多いので、grepとfind-tagのジャンプ先を読み取り専用にする。 ;; 読み取り専用にする関数 (defun file-read-only-hook () (toggle-read-only 1)) ;; grepのジャンプ先を読み取り専用にする。 ;; 正確には、next-error後に、読み取り専用…

defadvice

関数の挙動を変更するのにdefadviceが便利 GNU Emacs Lispリファレンスマニュアル: 16. Emacs Lisp関数のアドバイス = (car emacs-advent-calendar-2010) ;=>defadvice - ぺっくブログミラー@peccul (defun foo (x) (+ x 1)) (defadvice foo (before my-f…

org-modeキーバインド

index Emacs org-modeを使ってみる: (5) TODOリスト - 屯遁のパズルとプログラミングの日記

consを使ったリスト

consはドット対というリストを作るものである。ドット対とは( 値 . 参照先 )で成り立つリストである。 仮に( a . b )というドット対があった場合、aが値でbが参照先となる。 以下に例を示す。 (cons 'a 'b) ;; ( a . b ) ① (cons 'a '(b c)) ;; (a b c) ② (c…

ドット対とリスト

ドット対とリストがどのような物か consセル、ドット対、リスト - バリケンのRuby日記 - Rubyist Lisp 一夜漬け -- 2.リスト を読んだ。 なんとなくわかった気がする。 /* ドット対 */ struct LIST { int data; struct LIST* next; }; が↑で、リストはこれに…

大量のファイルをリネームする

cygwinで大量のファイルをリネームしたいなーと思い、 UNIXコマンドを調べていると、大量にリネームするコマンドは無いらしい。 (Linuxなら、renameコマンドがある。) しかし、下記のようにすれば可能 $ for i in * > do > name=`echo $i | cut -c5-10` # フ…

cygwinでWindowsプログラムを実行する方法

cygwinでWindowsプログラムを実行するのにやたらと苦労した。 以下が実行するスクリプト passwd="hogehoge" lhaplus="/cygdrive/c/Program Files/Lhaplus/Lhaplus.exe" cygstart "$lhaplus" /c:zip /p:$passwd /o:./ ./"hoge.txt" #←$lhaplusを""で囲むのを…

emacsでの正規表現に無い機能

emacsの正規表現では、{}のシンタックスが無い。つまり、 {m} : m回にマッチ {m,} : m回以上にマッチ {m , n} : m回以上n回以下にマッチが無い。 これは不便だ。

zipコマンドとunzipコマンド

zipでパスワードをかける場合、 zip -e hoge.zip hoge.txt #プロンプトでパスワード聞かれる zip -P hoge hoge.zip hoge.txt #hogeというパスワードで圧縮する となる。 unzipでパスワード解凍する場合 unzip hoge.zip #プロンプトでパス聞かれる unzip -P h…

(end-of-buffer)と(goto-char (point-max))

emacsのバッファの最後に移動するには (goto-char (point-max)) (end-of-buffer) があるが、Lispプログラム内では (goto-char (point-max)) を使用しないとならないらしい。end-of-bufferでは警告が出る。GNU Emacs Lispリファレンスマニュアル: 29. バッフ…

emacsで時刻計算

emacsで日付計算するときに必要になりそうだったのでメモ (setq time (decode-time (current-time))) ;; timeに現在時刻をデコードしてセット (setf (elt time 3) (+ (elt time 3) 1)) ;; 日付を明日にする (decode-time (apply 'encode-time time)) ;; 明日…

よく忘れるemacsキーバインドまとめ

よく忘れるemacsキーバインドまとめ ファイル操作: C-l : カーソルを真ん中に持ってくる(再描画) C-o : 空行を挿入 C-u C-s : isearch 正規表現検索 C-x C-r : 読み込み専用で開く C-x C-w : 名前をつけて保存 M-% : 置換 C-M-v : 別のバッファをスクロール…

cua-modeでC-c(コピー)やC-v(貼りつけ)を禁止する

cua-modeでC-c(コピー)やC-v(貼りつけ)を禁止するには (cua-mode t) ;; C-cやC-vの乗っ取りを阻止 (setq cua-enable-cua-keys nil) を追加する リージョン選択(松山智大) — ありえるえりあ

imenu - etagsを使わないバッファ内のタグジャンプ

emacsにはimenuというバッファ内のみ検索できるタグジャンプ機能がある。 M-x imenuで、ミニバッファに飛びたい関数先を入力。補完も可能 Software Design連載記事「Emacsのトラノマキ」の原稿 — ありえるえりあ

シェルスクリプト

以下のようなシェルスクリプトがあったとする #! /bin/bash IsNull () { # 引数の個数チェック if [ $# -ne 3 ] ; then echo 引数足りん exit 2 fi # 引数が空ならエラー if [ -z $1 ] ; then echo $2 exit $3 fi } IsNull $1 引数がありません 1 # ※1 上記…

emacsいろいろ

改行したときに自動でインデント (global-set-key "\C-m" 'newline-and-indent) 新規のバッファを作る C-x b buffer RET bufferという名前のバッファを選択または作成する (switch-to-buffer)。 C-x 4 b buffer RET 同様だが、別のウィンドウでbufferを選…

日報を自動作成する以下略

結局以下のように落ち着いた。Mac版 #! /bin/sh fpath=${1:-~/日報/} #日報のファイルパス cd $fpath format_date=${2:-"%Y_%m_%d"} #日付フォーマット today=`date +"${format_date}"`".txt" #今日の日付 例:2011_02_28 previous_day=`ls -t *.txt | head -…

emacsのshell-modeで文字化け

emacsのshell-modeで文字化けし、今までeshellを使用していたが、eshellではcygwinの関係でシェルスクリプトが実行できないため、shellの文字化けを修正することにした。以下を.emacsに追加することで修正できる。 ;; shellの文字化けを回避 (add-hook 'shel…

emacsで選択範囲をコメントアウト

emacsで選択範囲をコメントアウトするには M-x comment-region を実行します。 いちいちM-xするのもめんどくさいので (global-set-key "\C-c\C-c" 'comment-region) を.emacsに追加すると C-c C-cで選択範囲をコメントアウトできるようになります。(追記あり…

emacsにanythingを導入した時に出る警告

問題 emacsでanythingを使用するときに reference to free variable `org-directory が出ることがある。(ていうか出る) 原因 anything-config.elのorg-directoryという変数が宣言される前に参照されるという警告らしい。 対策 対策としては、これを参照し…

emacsで日付を挿入するショートカットキーを作る

http://d.hatena.ne.jp/yanma_4/20080319/1205857151 上記で簡単に作れる。 自分は日付だけでいいので下記のようにしてる ;; 時間挿入 (defun my-get-date-gen (form) (insert (format-time-string form))) (defun my-get-date() (interactive) (my-get-date…

emacsでrequireを使うときの注意点

emacsでrequireしたときにエラーが出ることがある。 そのような場合は、requireするファイル(hoge.el)に (provide 'hoge) を記述する必要がある。

emacsで自動保存

emacsで自動保存するには Emacsでファイルの自動保存 (auto-save-buffers) からauto-save-buffers.elを追加すればよい。しかし、注意点があり、保存される際はutf-8が選択されており、utf-8以外のファイルの場合、保存する度に保存する文字コードを聞いてく…

cua-modeで矩形選択

矩形選択って正直読めないよねそんな事よりemacsで矩形選択がすごい簡単にできるのを発見しました。 その名はcua-mode。 Carbon Emacsには標準で入ってた。早速使ってみたが使い方は簡単。 M-x cua-mode を実行してC-を押すだけ。後は使っていくうちに便利さ…