[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

59. 小さな関数 (2003/11/12)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=misc%20functions"
"MeadowMemo/小さな関数"へのコメント(無し)
検索全文Elisp


この章で紹介していること

大したものはありません.単独で使えるものではなく,自分の Elisp に組み込むものやお 遊びのコードが中心になります.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

59.1 3 桁ずつで数字を区切る (2003/11/09)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=add-number-grouping"
"MeadowMemo/3桁ずつで数字を区切る"へのコメント(無し)
検索全文Elisp
要約

123456 を 123,456 に変換できる.

情報源

http://www.emacswiki.org/cgi-bin/wiki.pl/AddCommasToNumbers

設定方法

以下を.emacs に追加します.

 
(defun add-number-grouping (number &optional separator)
  "Add commas to NUMBER and return it as a string.
    Optional SEPARATOR is the string to use to separate groups.
    It defaults to a comma."
  (let ((num (number-to-string number))
        (op (or separator ",")))
    (while (string-match "\\(.*[0-9]\\)\\([0-9][0-9][0-9].*\\)" num)
      (setq num (concat
                 (match-string 1 num) separator
                 (match-string 2 num))))
    num))

詳しい使い方

*scratch*で

 
(add-number-grouping 123456789 ",")

を評価すると,"123,456,789"とできます.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

59.2 リストを対話的に並び換え ― arrange (2003/11/11)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=arrangeel"
"MeadowMemo/リストを対話的に並び換え―arrange"へのコメント(無し)
検索全文Elisp
要約

リストの並び換えをユーザに自由にさせることができる

何が問題なのか?

 
(setq string-list
      '("apple" "orrage" "lemon" "pine"))

というリストがあった時に,このリストを並び換えたいとします.アルファベット順なら 問題ないでしょう.

しかし,使用者が好きなように並び換えるためにはどうしたらいいでしょうか?

これは結構面倒なコードが必要になります.

何ができるのか?

バッファに

apple
orrage
lemon
pine

という風にリストを出力し,使用者が自由に並び換えさせることができます.

インストール方法

http://www.panix.com/~tehom/my-code/arrange.elをダウンロードし,ロードパ スの通ったところへ置きます.

設定方法

以下を.emacs に追加します.

 
(require 'arrange)

詳しい使い方

 
(arrange-strings string-list)

を評価すると,

apple
orrage
lemon
pine

というバッファができます.C-kkで退避させ,C-yyで退避 したものを貼り付けできます.これにより,並び換えを自由にできます.

リストの一覧はfで切り替えることができます.

例えば, orrange と lemon を消したとすると,

apple
pine

と表示され,fとすると

orrange
lemon

と,退避させたものが表示されます.最後に,RETで終了すると,最初に表示され た方のバッファにあるリストが返り値となります.例えば,上記の状態で終わると 「"apple" "pine"」というリストが返ります.qで強制終了すると, nil を返します.

コメント

何かおもしろいものができそうだなぁ,,,といじりつつ思ってたんだけど,何も思いつ かず.とりあえず単独で紹介してしまおう.



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

59.3 モードライン/ヘッダで遊ぼう (2003/11/12)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=modeline%20hack"
"MeadowMemo/モードライン/ヘッダで遊ぼう"へのコメント(無し)
検索全文Elisp

モードラインやヘッダに関連したコードを紹介します.

59.3.1 モードラインでぐるぐる (2003/11/12)  
59.3.2 モードラインでぐるぐる ― twiddle (2003/11/12)  



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

59.3.1 モードラインでぐるぐる (2003/11/12)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=header%20turn"
"MeadowMemo/モードラインでぐるぐる"へのコメント(2007/12/28)
検索全文Elisp
要約

モードラインで「-」が回転するおもちゃ.

情報源

[emacs-w3m:05822] Re: spinner

詳しい使い方

以下を*scratch*バッファに貼り付けて評価します.すると,棒がミニバッファでくるく ると回ります.

 
 ;; -*- Lisp-Interaction -*-
 (progn
   (defvar spinner-buffer nil)
   (setq spinner-buffer (get-buffer-create "*spinning test*"))
   (defvar spinner-file (expand-file-name "spinner.gif" w3m-icon-directory))
   (defvar spinner-index 0)
   (defvar spinner-timer nil)
   (setq spinner-timer
        (run-at-time
         0.1 0.1
         (lambda ()
           (let* ((m (% spinner-index 3))
                  (n (% spinner-index 4))
                  (spinner (concat
                            (propertize
                             "x" 'display
                             (create-image
                              spinner-file 'gif nil
                              :ascent 'center :mask 'heuristic
                              :index m))
                            (aref ["-" "\\" "|" "/"] n))))
             (set-buffer spinner-buffer)
             ;;(delete-region (point-min) (point-max))
             (setq header-line-format spinner
                   mode-line-buffer-identification spinner)
             ;;(insert spinner)
             (let ((window-min-height 0))
               (shrink-window 1)
               (enlarge-window 1))
             (message "(%d %d) Press any key to stop it: " m n)
             (setq spinner-index (if (>= spinner-index 11)
                                     0
                                   (1+ spinner-index)))))))
   (switch-to-buffer-other-window spinner-buffer)
   (shrink-window (- (window-height) 4))
   (unwind-protect
       (read-event)
     (discard-input)
     (cancel-timer spinner-timer)
     (delete-window)))



[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [表紙] [目次] [索引] [検索] [上端 / 下端] [?]

59.3.2 モードラインでぐるぐる ― twiddle (2003/11/12)

URL="http://www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow&node=twiddle"
"MeadowMemo/モードラインでぐるぐる―twiddle"へのコメント(無し)
検索全文Elisp
要約

モードラインで棒が回転します.関数のインジケータなどに使えるかもしれません.

何ができるのか?

「-」がモードラインで「|/-」という風に連続的に表示され,回転しているように見えま す.

インストール方法

twiddle.el よりダウンロードし,ロードパスの通ったところへ置きます.

設定方法

以下を.emacs に追加します.

 
(require 'twiddle)

詳しい使い方

M-x twiddle-start で回転開始,M-x twiddle-stop で停止です.関数の開 始時に start し,終了時に stop させると,楽しいかも.

M-x twiddle-compileM-x compileを実行し,実行中に棒が回転します.


[ << ] [ >> ]           [表紙] [目次] [索引] [検索] [上端 / 下端] [?]