にたまごほうれん草アーカイブ

はてなダイアリーで書いてた「にたまごほうれん草」という日記のアーカイブです。現在は「にたまごほうれん草ブログ」を運営中です。

練習:バッファ内で指定した文字数の場所にジャンプする

バッファ内を行ったり来たりする組み込み関数を覚えるのは大変そう。
とりあえず最初に見かけたgoto-charを使ってみる。

(defun jump-to-word-point (jump-point)
  (interactive "nPoint: \n")
  (if (> jump-point (point-max))
      (setq jump-point (point-max)))
  (if (< jump-point (point-min))
      (setq jump-point (point-min)))
  (goto-char jump-point))

M-x jump-to-word-point と入力すると、ミニバッファに"Point: "と出る。
そこで数字を入力すると先頭から数えて指定文字数分だけ進んだところにカーソルが移動する。
コード上はバッファ内の文字数オーバーとか負の値とかに配慮してある風だけど、なくても変なところに飛んでいったりしないぽい。

覚えた関数

関数名 動作
point バッファ内のカーソルのある文字位置を返す
point-max バッファの最後の文字位置を返す
point-min バッファの最初の文字位置(通常は1)を返す
goto-char 引数にとる値の文字位置にカーソルを移動する