help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Keep-only-column


From: weber
Subject: Re: Keep-only-column
Date: 9 Feb 2007 02:47:44 -0800
User-agent: G2/1.0

On 8 fev, 18:55, Marc Tfardy <m...@web.de> wrote:
> weber wrote:
>
>  > On 8 fev, 16:15, "weber" <hug...@gmail.com> wrote:
>  >> hello again!
>  >> Quite frequently I paste stuff which is space-separated.
>  >> I would really like a function that would let me select a region and
>  >> keep only a column, deleting all the rest.
>  >> Anyone knows how I could implement something like this?
>  >> I can do it with regexps, but then I have to come up with a new one
>  >> every time...
>  >> TIA
>  >> HS
>  >
>  > I think the format of "stuff" can't be understood from above :) Here
>  > it is:
>  >
>  > variable BLABLA  =     438438
>  > variable LABLAC  =     312
>  > variable DAUSH  =     43538
>  >
>  > Apply to that region: keep-only-column 2 makes it:
>  > BLABLA
>  > LABLAC
>  > DAUSHD
>
> Here my draft. Probalby inefficient, but it does the job.
>
> (defun trim-rectangle (start end)
>    "Trims region to rectangle."
>    (interactive "r")
>    (save-excursion
>      (let ((offset 0)
>            (width 0)
>            (lines (count-lines start end))
>            (i 0))
>        (goto-char start)
>        (beginning-of-line)
>        (setq offset (- start (point)))
>        (goto-char end)
>        (beginning-of-line)
>        (forward-char offset)
>        (setq width (- end (point)))
>        (goto-char start)
>        (while (< i lines)
>          (beginning-of-line)
>          (delete-region (point) (+ (point) offset))
>          (forward-char width)
>          (delete-region (point) (line-end-position))
>          (end-of-line)
>          (forward-char)
>          (setq i (+ i 1))))))
>
> HTH
>
> regards
>
> Marc

Here's mine, but I guess we were thinking different things...
Now I must apply it to a region

(defun keep-column (&optional arg)
  "Considering space-separated columns, keep only column ARG."
  (interactive "p")
  (save-excursion
    (let ((cnt-col 0))
      (while (not (eolp))
        (if (looking-at "[ \t\r\n]")
            (progn
              (incf cnt-col)
              (delete-char 1)
              (while (and (not (eolp)) (looking-at "[ \t\n\r]"))
                (delete-char 1)))
            (progn
              (if (= cnt-col arg)
                  (forward-char)
                  (delete-char 1))))))))

Cheers
weber



reply via email to

[Prev in Thread] Current Thread [Next in Thread]