[TxMt] Re: Force Tabs with snippets

Helmut Granda contact at helmutgranda.com
Tue Jun 5 15:33:48 UTC 2007


Constantinos,

Thanks for the script, at first test it doesnt work but I'll dig into it to
figure out a way to make it work.

Thanks again....

On 6/2/07, Constantinos Neophytou ♎ <jaguarcy at gmail.com> wrote:
>
> I think this could probably be accomplished with a simple python (or
> ruby) script that took the line as input, then did
> print "%-100s" % thetext
> or something like that and replaced the line? (or place it in a macro
> that first selects the line, and the command replaces the selection...)
>
>
> As for the original question, woulnd't it be failry straight forward
> to have something like:
>
> sometext⇥more text
> somemoretext⇥and a bit more
> whateverelse⇥some more
>
> then opt-shift-up, and parse the selection through a small python
> script that splits each line on the tab character, finds the longest
> first half of a line, and aligns everything using spaces...
>
> in fact, this seems to work as a command (takes the first tab it
> finds in every line, and adds enough spaces before it so that all the
> first tabs in each line align):
>
> Command
> Input: Selected Text or Nothing
> Output: Replace Selected Text
> Activation: Key Equivalent (i set it to cmd-opt-shift-r)
> Command:
>
> #!/usr/bin/env python
> import os
>
> selectedText = ''
> splitMarker = "\t"
> joinMarker = "\t"
>
> if 'TM_SELECTED_TEXT' in os.environ:
>         selectedText = os.environ['TM_SELECTED_TEXT']
>         lines = selectedText.splitlines()
>         length = 0
>         for i in range(len(lines)):
>                 sec = lines[i].split(splitMarker)
>                 length = max(length, len(sec[0]))
>         l = "%%-%ds" % length
>         for j in range(len(lines)):
>                 sec = lines[j].split(splitMarker)
>                 sec[0] = l % sec[0]
>                 print joinMarker.join(sec)
>
>
> This is very rough, i wrote it while writing this email, but it seems
> to work. Using it in the above proposed method also seems to work
> (i.e. write all the data in a column block, have the first tab where
> you want everything to align, opt-shift-up, opt-cmd-shift-R)
>
> Note instead of the first tab, the align 'marker' can be anything...
>
> On Jun 2, 2007, at 12:38 PM, Piero D''Ancona wrote:
>
> > Allan Odgaard <throw-away-1 at ...> writes:
> >
> >>
> >> On 2. Jun 2007, at 06:54, Helmut Granda wrote:
> >>
> >>> for example is it possible to write a snippet to do something
> >>> like...
> >>>
> >>> text (move to column 100)moreText
> >>>
> >>> does that makes sense? sort of tabbing but using column numbers
> >>> instead (margins?)
> >>
> >> Other than actually inserting the required number of spaces, no,
> >> there is no such shortcut.
> >>
> >>
> >
> > If the text to be inserted is always the same, you can record
> > a macro which inserts some text, moves to the right (press
> > right arrow 100 times) then inserts some more text...
> >
> >
> >
> >
> >
> > ______________________________________________________________________
> > For new threads USE THIS: textmate at lists.macromates.com
> > (threading gets destroyed and the universe will collapse if you don't)
> > http://lists.macromates.com/mailman/listinfo/textmate
>
> --
> What's your Dream?
> Make it happen with www.dostpost.com
>
>
>
>
>
> ______________________________________________________________________
> For new threads USE THIS: textmate at lists.macromates.com
> (threading gets destroyed and the universe will collapse if you don't)
> http://lists.macromates.com/mailman/listinfo/textmate
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macromates.com/textmate/attachments/20070605/9df1441b/attachment.html>


More information about the textmate mailing list