[comp.emacs] insert char. in first column.

cwilson@NISC.SRI.COM (Chan Wilson) (02/28/90)

This has got to be simple, I just know it.  But how do you do it?

I want to be able to insert a character in the first column of a given
region, whether it be a tab, a >, or whatnot.  How is this done?

--Chan
			   ................
  Chan Wilson -- cwilson@nisc.sri.com <or> radius!cwilson@apple.com
Janitor/Architect of comp.binaries.apple2 archive on wuarchive.wustl.edu
	      I don't speak for SRI, someone else does.
			   ................

merlyn@iwarp.intel.com (Randal Schwartz) (03/01/90)

In article <13714@fs2.NISC.SRI.COM>, cwilson@NISC (Chan Wilson) writes:
| This has got to be simple, I just know it.  But how do you do it?
| 
| I want to be able to insert a character in the first column of a given
| region, whether it be a tab, a >, or whatnot.  How is this done?

Assuming you are GNU-Emacs-ing, since you didn't say...

First, define your region (set-mark-command, or whatever), then...
C-x n (narrow-to-region)
M-< (beginning-of-buffer)
M-x replace-regexp RET ^ RET tab-or->-or-whatnot RET
C-x w (widen)

With the appropriate conversions to elisp, you can do it from within a
function.

Just another Emacs hacker,
-- 
/=Randal L. Schwartz, Stonehenge Consulting Services (503)777-0095 ==========\
| on contract to Intel's iWarp project, Beaverton, Oregon, USA, Sol III      |
| merlyn@iwarp.intel.com ...!any-MX-mailer-like-uunet!iwarp.intel.com!merlyn |
\=Cute Quote: "Welcome to Portland, Oregon, home of the California Raisins!"=/

byrd@comp.vuw.ac.nz (Mike Williams) (03/01/90)

+--In article <13714@fs2.NISC.SRI.COM> cwilson@NISC.SRI.COM (Chan Wilson) writes:
|   I want to be able to insert a character in the first column of a given
|   region, whether it be a tab, a >, or whatnot.  How is this done?

     ( This assumes that you are using GNU-emacs. )

	I use the following function to insert characters in the same place
     on a line over an entire region.  It uses the goal-column if one is
     set, otherwise the column in which the mark was set is used.

(defun insert-on-each-line (str beg end)
  "Insert STR at the current column on each line of the current region.
Args BEG and END specify the region if called from a program."
  (interactive "sString to insert: \nr")
  (let ((len (length str)))
    (save-excursion
      (goto-char beg)
      (if goal-column (move-to-column goal-column))
      (while (< (point) end)
	(save-excursion (insert str))
	(setq end (+ end len))
	(line-move 1)))))

(global-set-key "\ei"    'insert-on-each-line)

--
      /-------------------------------------------------------------\
      | Mike Williams, Victoria University of Wellington, Aotearoa. |
      \-------------------------------------------------------------/

bard@brigid.cs.cornell.edu (Bard Bloom) (03/01/90)

My own "Insert stuff in left margin".  The stuff it inserts is sticky.

-- Bard the emacs gargoyle


(defvar inleft-string "> " "Default string for inleft.")

(defun inleft (p m s)
  "In the region BEG to END, inserts STRING at the beginning of each line."
  (interactive
   (list
    (if (< (point) (mark)) (point-marker) (mark-marker))
    (if (< (point) (mark)) (mark-marker) (point-marker))
    (progn
      (setq inleft-string (read-string "Inleft String:" inleft-string))
      inleft-string)
    ))
  (goto-char p)
  (beginning-of-line 1)
  (while (and (<= (point-marker) m) (not (eobp)))
    (insert-before-markers s)
    (next-line 1)
    (beginning-of-line 1)))