[TxMt] Re: Emacs like "Tab Stop List"
Jacob Rus
jrus at hcs.harvard.edu
Thu Aug 10 12:26:39 UTC 2006
Carsten Hoever wrote:
> Hi,
>
> at the moment I have to write some code in ancient Fortran77 (don't ask ;-) ).
> I am nearly going nuts about the fixed column structure a Fortran77 source
> code has to (at least in my case) obey to:
>
> column function
> 1 comment sign (c,*)
> 1-5 statement label
> 6 continuation sign if line wrap in previous line
> 7-72 actual code
>
> The problem is that this fixed source form makes it very hard to work with any
> special tab stop size, even with "Soft tabs" turned on as I don't need to
> access any column between 1-5, but instead would like to go from 1 to 6 to 7
> (and vice versa!).
>
> In emacs I would be able to specifiy a tab stop list, i.e. a list with the
> actual columns a tab should bring me to, e.g.: 6, 7, 11, 15, 19...
>
> Is there any way to simulate something in Textmate? I am tired of adding and
> deleting spaces manually in order to obey to that structure.
I think you want to make a command which, taking into account where you
are on the current line, inserts the correct number of spaces. The
environment variable is $TM_LINE_INDEX, and you should be able to just
insert x - $TM_LINE_INDEX spaces, where x is the next number in your list.
In python this would look something like:
#!/usr/bin/env python
from os import environ as env
from sys import stdout
columnList = [1, 5, 6, 10, 14, 18, 22]
curPos = env['TM_LINE_INDEX']
spacesLeft = [num - curPos for num in columnList if num - curPos > 0]
stdout.write(" " * spacesLeft[0])
Bind this to the ⇥ key, set the input to selected text or line, and set
the output to insert text, and you should be all set.
-Jacob
More information about the textmate
mailing list