Loading ...
Sorry, an error occurred while loading the content.

Re: [jasspa] "graphical" string-rectangle ?

Expand Messages
  • Thomas Hundt
    ... Well in the time-tested tradition of let the machine do the repetitive work why don t you just write a macro that does something like: ; macro indent
    Message 1 of 7 , May 31, 2005
    • 0 Attachment
      > Suppose you want to indent something -- a rectangle of course --
      > until it lines up with soething else above or below that rectangle.
      >
      > With the current implemeentation you first have to count the spaces
      > needed (dont miscount! Otherwise: Go back to START), start
      > string-rectangle, enter that amount of space, hit <RETURN> (fingers
      > crossed) and VOILA!....ooops...to wo space to much...UNDO...and...

      Well in the time-tested tradition of "let the machine do the repetitive
      work" why don't you just write a macro that does something like:

      ; macro "indent the region the same number of blanks as line above"
      save line number of current location
      exchange-point-and-mark ; now at beginning of to-be-indented area
      backward-line
      count number of spaces from ^ ; how many blanks to insert
      forward-line ; now on the first line to be indented
      subtract current_line_number from saved_line_number
      for this many lines, prepend the counted number of spaces

      Of course, this isn't the way I do such a thing myself. What I do is go
      to the line that has the spaces at the beginning, mark the BOL, cursor
      to the end of the spaces, copy the region (i.e., just the spaces) and
      then do query-replace-string of ^ with those spaces (inserted in the
      minibuffer using yank) and just keep hitting spacebar and replacing (and
      thus indenting) until I'm at the end of the area I want to indent.
      Simple, and nearly foolproof. And no counting!

      I also have a small macro that indents the current line 4 spaces and
      moves to the next line (I call it "shove-over"). I use this a lot.

      -Th
    • Meino Christian Cramer
      From: Thomas Hundt Subject: Re: [jasspa] graphical string-rectangle ? Date: Tue, 31 May 2005 13:54:04 -0700 Hi Thomas, Thank you for your
      Message 2 of 7 , Jun 1, 2005
      • 0 Attachment
        From: Thomas Hundt <thundt@...>
        Subject: Re: [jasspa] "graphical" string-rectangle ?
        Date: Tue, 31 May 2005 13:54:04 -0700

        Hi Thomas,

        Thank you for your help and hints ! :)

        More general: A interactive string-srectangle would solve a dozen of
        "problems" for which each a different solution may already exist.

        If the indentation "problem" would be my only concern, I wouldn't
        ask for such a "big" solution...


        NO CRITISM! :)


        Keep microemacsing!
        Meino



        > > Suppose you want to indent something -- a rectangle of course --
        > > until it lines up with soething else above or below that rectangle.
        > >
        > > With the current implemeentation you first have to count the spaces
        > > needed (dont miscount! Otherwise: Go back to START), start
        > > string-rectangle, enter that amount of space, hit <RETURN> (fingers
        > > crossed) and VOILA!....ooops...to wo space to much...UNDO...and...
        >
        > Well in the time-tested tradition of "let the machine do the repetitive
        > work" why don't you just write a macro that does something like:
        >
        > ; macro "indent the region the same number of blanks as line above"
        > save line number of current location
        > exchange-point-and-mark ; now at beginning of to-be-indented area
        > backward-line
        > count number of spaces from ^ ; how many blanks to insert
        > forward-line ; now on the first line to be indented
        > subtract current_line_number from saved_line_number
        > for this many lines, prepend the counted number of spaces
        >
        > Of course, this isn't the way I do such a thing myself. What I do is go
        > to the line that has the spaces at the beginning, mark the BOL, cursor
        > to the end of the spaces, copy the region (i.e., just the spaces) and
        > then do query-replace-string of ^ with those spaces (inserted in the
        > minibuffer using yank) and just keep hitting spacebar and replacing (and
        > thus indenting) until I'm at the end of the area I want to indent.
        > Simple, and nearly foolproof. And no counting!
        >
        > I also have a small macro that indents the current line 4 spaces and
        > moves to the next line (I call it "shove-over"). I use this a lot.
        >
        > -Th
        >
        >
        > __________________________________________________________________________
        >
        > This is an unmoderated list. JASSPA is not responsible for the content of
        > any material posted to this list.
        >
        > To unsubscribe, send a mail message to
        >
        > mailto:jasspa-unsubscribe@yahoogroups.com
        >
        > or visit http://groups.yahoo.com/group/jasspa and
        > modify your account settings manually.
        >
        >
        >
        > Yahoo! Groups Links
        >
        >
        >
        >
        >
        >
      • Steven Phillips
        Below is a version of string-rectangle with suggested changes, if no one objects this will be in the next release. Steve ... ; string-rectangle; The user is
        Message 3 of 7 , Jun 5, 2005
        • 0 Attachment
          Below is a version of string-rectangle with suggested changes, if no one
          objects this will be in the next release.

          Steve

          -----------------------------
          ; string-rectangle; The user is prompted for a string which is inserted at
          ; the same horizontal position on all lines spanned by the current region.
          define-macro string-rectangle
          set-variable #l0 $window-line
          set-variable #l3 $window-col
          exchange-point-and-mark
          set-variable #l2 $window-line
          exchange-point-and-mark
          ; Compute the top line.
          !if &gre #l0 #l2
          set-variable #l1 #l2
          set-variable #l2 #l0
          !else
          set-variable #l1 #l0
          !endif
          ; Get the string to insert
          !force set-variable #l6 @1
          !if ¬ $status
          set-variable #l6 @ml "String"
          !endif
          ; Fill all of the lines in the region from the first column.
          set-variable $window-line #l1
          !repeat
          ; Move to the column
          beginning-of-line
          !while &les $window-col #l3
          !if ¬ &seq @wc "\n"
          forward-char
          !else
          insert-string " "
          !endif
          !done
          ; Insert the string
          insert-string #l6
          !if ¬ &les $window-line #l2
          ; done the last line, return
          set-variable $window-line #l0
          set-variable $window-col &add #l3 &len #l6
          !return
          !endif
          forward-line
          !until 0
          !emacro
          -----------------------------
        Your message has been successfully submitted and would be delivered to recipients shortly.