2009年8月9日日曜日

Emacsで行を右寄せをする

 昔作ったやつです。
 標準だと、M-x set-justification-right で右寄せしてくれます。がこれだとタブと空白で埋めてくれるので、空白だけで右寄せしてくれるものを作りました。

インストール

  1.  下の方のelispを right-line.el という名前で、~/.lisp などに保存します。
  2.  ~/.emacs

    (require 'right-line)
    (global-set-key "\C-cr" 'justify-right-line) ; 行を右寄せする
    と書いておきます。


使い方

 右寄せしたい行の上にカーソルを持っていき、C-c r とすれば右寄せされます。
 選択範囲内の右寄せも出来ます。
 桁数は C-u 桁数 M-x set-fill-column で。デフォルトだと C-x f かな?

right-line.el


;;; right-line.el --- 右寄せ
;; $Id: right-line.el,v 1.6 2007/10/11 09:55:17 yama Exp yama $
;; last updated : 2007/10/16 15:00:41 JST

;; Copyright (C) 2007 yama

;; Author: yama <yama@localhost>
;; Keywords:

;; This file is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 2, or (at your option)
;; any later version.

;; This file is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to
;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.

;;; Commentary:

;; 行を右寄せする。範囲選択していれば範囲選択部分を右寄せする。

;;; ToDo


;;; Code:

(defun yama-region-active-p ()
"リージョンアクティブならtを返す.
2007年10月06日(土曜日) 12:45:08 JST by yama"

(if (and transient-mark-mode mark-active) t nil))

(defun right-line ()
"2007年09月15日(土曜日) 14:46:17 JST
カレント行を空白で埋めて、右寄せする"

(interactive)
(save-excursion
(end-of-line)
(let ((ln(- fill-column (current-column))))
(beginning-of-line)
(insert-char ?\ ln))))


(defun right-line-region (start end)
"選択範囲内を空白で埋めて右寄せする。範囲選択されてなければカレント行を右寄せする
2007年10月06日(土曜日) 12:44:41 JST by yama"

(interactive "r")
(save-excursion
(save-restriction
(goto-char start)
(unless (bolp)
(beginning-of-line)
(setq start (point)))
(goto-char end)
(unless (bolp)
(beginning-of-line)
(setq end (point)))
(narrow-to-region start end)
(let ((max-line (count-lines start end))
(count 0))
(goto-char (point-min))
(while (< count max-line)
(right-line)
(next-line)
(setq count (1+ count)))))))

(defun justify-right-line (start end)
"カレント行を右寄せする。範囲選択されているなら範囲内を右寄せする.
2007年10月16日(火曜日) 14:08:05 JST by yama"

(interactive "r")
(if (yama-region-active-p)
(right-line-region start end)
(right-line)))

(provide 'right-line)
;;; right-line.el ends here



 報告書とか文書の末尾の署名なんかに利用すると便利です。
 自分で作って使っていなかったり・・・orz

2009年8月2日日曜日

Emacsの起動時間を調べる

Emacs23.1 がリリースされましたねー。めでたいめでたい。やんややんや。
もっともだいぶ前から使っていたんで新鮮さはないんですが、やっぱりアンチエイリアスの効いたフォントは美しい。

んで、emacs23から追加された関数を使って、Emacsの起動に掛かった時間を表示する機能など。小ネタです。

;;;====================================
;;;; boot-time
;;;====================================
;;; 起動するまでにかかった時間を表示。
(defun boot-time ()
" 起動するまでにかかった時間を表示。"
(interactive)
(message "起動時間:%s秒"
(- (cadr after-init-time) (cadr before-init-time))))


M-x boot-time で起動時間が表示されます。