@peccul is peccu

(love peccu '(emacs lisp cat outdoor bicycle mac linux coffee))

= 矩形選択して,連番を挿入するの作った

[2010-09-01 04:10:05]
>>>[emacs]

結局,replace-regexpは使わずに,cua-modeのcua-sequence-rectangleとstring-rectangle(C-x r t)を参考にして作っちゃいました.

使い方

  • こんなふうにリージョンを選択する(矩形のつもり)

  • C-x r N(my-sequence-rectangle)で連番の初期値を聞いてくるので4と答える

  • 次はインクリメントする数の指定.デフォルトだと1ずつ増える

  • フォーマットの指定.%dが入ってたらいい

  • そうするとこんな感じで連番を入れてくれる


導入

  • gistからもってくる
(install-elisp-from-gist "559592")
  • init.elなどに書く
(require 'my-sequence-rectangle)
(define-key ctl-x-map "rN" 'my-sequence-rectangle)

あぁぁ...

名前かぶってないか探したらまったく同じことしてるのがあった...発想まで同じ
http://academic.meganebu.com/~debug_ito/index.php?Ubuntu%2F.emacsこれの最後にありまする.

コード

;;;; my-sequence-rectangle.el --- Insert Sequence Rectangle

;; Author: Kentaro Shimatani <kentarou.shimatani@gmail.com>
;; Created: 1 Sep 2010
;; Keywords: rectangle, sequence

;;; Code:


(defvar my-rectangle-seq-format "%d")
(defun my-sequence-rectangle (start end first incr format)
  "Resequence each line of rectangle starting from FIRST.
The numbers are formatted according to the FORMAT string.

Called from a program, takes five args; START, END, FIRST, INCR and FORMAT."
  (interactive
   (progn (barf-if-buffer-read-only)
          (list
           (region-beginning)
           (region-end)
           (if current-prefix-arg
               (prefix-numeric-value current-prefix-arg)
             (string-to-number
              (read-string "Start value: (0) " nil nil "0")))
           (string-to-number
            (read-string "Increment: (1) " nil nil "1"))
           (read-string (concat "Format: (" my-rectangle-seq-format ") ")))))
  (if (= (length format) 0)
      (setq format my-rectangle-seq-format)
    (setq my-rectangle-seq-format format))
  (apply-on-rectangle 'my-string-rectangle-line start end
                      '(lambda ()
                         (insert (format format first))
                         (setq first (+ first incr)))))

(defun my-string-rectangle-line (startcol endcol func)
  (move-to-column startcol t)
  (funcall func))
(provide 'my-sequence-rectangle)