Hi,
Thanks for the previous help. I'm a little chagrined that they
seemed obvious questions. I had looked for answers... honest. :)
Anyway, I've got another use case that I could use some help with. I
often ssh into another unix box, and occasionally need to edit a file
while I'm there. With bbedit, I had a script that would ssh back
into my mac and then open the remote file on the unix box. I'm
trying to replicate that with TextMate. The closest I've found in
the mailing list is this:
http://comox.textdrive.com/pipermail/textmate/2006-February/008384.html
My version is as follows. On the remote box I have a script called
'mate':
-----
#! /bin/sh
# Make sure we have the full path to the file
if echo $1 | egrep ^/ - > /dev/null ; then
path=$1 ;
else
path=`pwd`/$1 ;
fi
HOST=`hostname`
echo Opening $path on ${SSH_CLIENT%% *}
ssh willu@${SSH_CLIENT%% *} remoteOpen ${USER} ${HOST} "$path"
-----
On my Mac I have this script called 'remoteOpen':
-----
#!/bin/sh
remUser=$1
remHost=$2
remPath=$3
remBase=`basename $remPath`
remDir=`dirname $remPath`
tempDir=`mktemp -d` || exit 1
localfile="${tempDir}/scp:${remHost}:${remBase}"
localBackup="${tempDir}/backup"
remLoc="${remUser}@${remHost}:${remPath}"
echo "${remLoc}" > ${tempDir}/remLoc
scp -Bpq "${remLoc}" "${localfile}" && cp "${localfile}" $
{localBackup} && osasc
ript -e "tell app \"Terminal\" to do shell script \"mate -w $
{localfile}\""
if ! cmp -s "${localfile}" ${localBackup} ; then
scp -Bpq "${localfile}" "${remLoc}"
fi
rm -rf ${tempDir}
-----
I then have the following command for use within TextMate (instead of
the normal 'save'):
Save the current file then:
-----
if [[ ${TM_FILEPATH} == */scp:* ]] ; then
# this is an scp file
# it has been saved by the time we get here
# now just extract its remote name and scp it back
localDir=`dirname $TM_FILEPATH`
remLoc=`cat ${localDir}/remLoc`
scp -Bpq "$TM_FILEPATH" "${remLoc}" && cp "$TM_FILEPATH" "$
{localDir}/backup"
fi
-----
This setup saves a backup of the remote version locally. If the
local copy gets saved with the special command while you're editing,
and the data is scp'd back to the other host, then the backup is
updated. Otherwise, the difference is detected and the data is scp'd
back to the remote box when the window is closed.
Current issues:
i) Most importantly, the 'mate' command doesn't work from a remote
shell. This leads to the whole osascript workaround. Unfortunately,
while Terminal is running a script it just queues up all the input to
its other windows and waits for the script to end. This makes the
current setup significantly less useful than the same setup using
bbedit (where the 'bbedit' command does work from a remote terminal).
ii) It would be nice if there was a way to tell textmate 'run this
script when you write to that file'. Basically, make the 'mate'
command have an equivalent to the ODB Editor Suite of Apple Events.
I imagine some extra options like this:
--title WindowTitle Start editing the new file with this window
title instead of the file name as window title
--onsave scriptPath When the file is saved, this script is run
with the path to the file as an argument
--onclose scriptPath When the file is closed (or Save As... is
used to detach from the original file), this script is run with the
path of the file as an argument
and perhaps a final option:
--on-reopen scriptPath Data This is a command line option that
takes two arguments. If this file re-opened from the 'Open Recent >'
menu then the script 'scriptPath' is run with 'Data' as an argument
to get the path of the file to open.
This set of options would allow third parties to implement the
much-requested 'sftp' feature, as well as any other file access
method they wanted to.
Cheers,
Will :-}
P.S. I know - just use transmit or Cyberduck. The problem is that
they require me to connect from the mac. I could modify my
'remoteOpen' script to use them instead of scp, and that would solve
the 'detecting save' problem (point ii), but it wouldn't solve the
worst problem, point i.
I'd like to be able to set the scope of triple quoted string in a
python file to be html. I'd also like to be able to do it on a per
project basis (but entirely if necessary).
I'm doing lots of TurboGears programming at the moment and the only
time I use triple quoted strings is for html fragments, so it would be
great if they formatted as html and all the html snippets worked in
them.
Does anyone have any ideas how I can do it?
Ed
After thomas aylotts update to the CSS bundle, I've tried to run the
update bundles command from the GetBundle, but nothing happens. I
tried updating the Textmate supports, and then it chewed a bit then
spat out lots of text saying what stuff got updated, but when I try
to update bundles, nothing seems to happen.
Andreas
My escape key doesn't do autocompletion anymore. If I choose the menu
option for it, that works, and it shows the escape character next to
it. I've checked that the escape key works (it closes the Find window
for example).
Does anyone have any ideas how I can make it work again?
Thanks
Ed
In TextMate 1.5.3 (1202) the shortcut to see the DB schema of a model
in Rails (that's a recent addition, see Rails -> Models -> Show DB
Schema for Current Class) coincides with the one for "Save Project
As...".
-- fxn
Hello all,
I'm starting to set up my environment to use TextMate instead of XCode's built in editor.
The one thing I miss from XCode is its Code Sense. I really like having a quick reference of the API command I want. I know I want, say, to use CFBundleCopyResourceURL(), but I don't remember what to feed it.
Since XCode doesn't provide a way to query for that information (thanks, Apple), I had to get it "another way". It seems that the easiest way to do that is to grep the framework header files myself.
My script takes the selected word, finds it in the 10.4u SDKs, then makes a txmt:// style URL out of it, so you can click the link and go right to the proper line in the proper header file.
The script is posted below. Hopefully it will be useful to you Carbon programmers out there, or maybe the kind Unix hands will see some optimization I can use to make it faster.
_______________________________
find -L /Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/*/Versions/Current/* | xargs grep -I -n $TM_SELECTED_TEXT | python -c "import fileinput, re
ourRe = re.compile(r'(.+?):(.+?):(.+)')
for each in fileinput.input(['-']):
res = ourRe.match(each)
if res:
print '''<p><a href='txmt://open/?url=file://%s&line=%s'>%s</a></p>''' % ( res.group(1), res.group(2), res.group(3) )"
_______________________________
Enjoy all!,
_Ryan Wilcox
--
Wilcox Development Solutions: <http://www.wilcoxd.com>
Toolsmiths for the Internet Age PGP: 0x2F4E9C31
Hi folks:
I am new to textmate and to the list. I have spent awhile with the
manual but either I missed this or it is not in there (or maybe it
can't be done).
I keep all my zsh configuration files in /Library/init/zsh
These include various files that are sourced, as well as shell script/
function files. Since the latter have #!/bin/zsh at the top,
textmate does the right thing, but I would also like the other files,
that set up my environment, define aliases, and so forth, to use the
same syntax highlighting, even though they do not have #!/bin/zsh at
the top.
Is there a simple way to do this?
Thanks.
Bill
I thought it might be for choosing images but I have no clue, and I
can't seem to get it to do anything besides open an output window
with an error when I invoke it.
Can anyone help clue me in?
Neil
---
hushBOOM design
Web design, development & hosting -- Writing & Editing
http://www.hushboom.com/
In hopes of figuring the language-sensitive parser out, I've been
trying to make a grammar for .ini files. It appears my
incomprehension is stark, as I can't get any satisfaction out of the
grammar
{ scopeName = 'text.ini';
fileTypes = ( 'ini' );
foldingStartMarker = '^\[';
foldingStopMarker = '.(?=^\[)';
}
... which I think specifies a folding range from the opening [ of a
section, running to the character before the [ that begins the next
section. TextMate puts a fold marker next to the section line, but no
matching marker at the bottom of the section. Clicking the fold
button has no effect.
(Yes, the stop marker doesn't account for the end-of-file that closes
the last section, but one challenge at a time.)
What am I missing?
-- F
Hello there
Has anyone thought about a language definition for the Lout document
formatting system?
I may write one myself, but I'm a bit nervous about it since Lout has
an awkwardly wide range of ways of indicating the beginnings and ends
of things.
For example, a document header for a report might look like:
@SysInclude { tbl }
@SysInclude { report }
@Report
@Title { Blah blah }
@Author { Alaric Snell-Pym (alaric(a)snell-systems.co.uk) }
@Institution { Snell Systems }
@InitialLanguage { EnglishUK }
@DateLine { June, 2006 }
@PageHeaders { Titles }
@InitialSpace { tex }
@Abstract { In this specification, we describe a blah blah blah. }
//
...with the mysterious "//" ending the metadata section.
Things like chapters, appendices, sections, subsections, and so on
are delimited like so:
@Section
@Tag { documentcontrol }
@Title { Document Control }
@Begin
...content...
@End @Section
While paragraphs don't have an explicit end, they are just separated
with "@PP" markers:
@PP
This is a pargraph of text, blah blah blah
@PP
This is the next paragraph! Whodathunk?
Figures, and many other such block-level objects, have no defined
ending:
...text...
@Figure
@Caption { The prototype }
@IncludeGraphic prototype.eps
...text...
While bulleted lists have an explicit @EndList marker, but each list
item is delimited with curly braces:
@BulletList
@ListItem {
3x resistor at 4p each
}
@ListItem {
1x AVR micro-controller at @Sterling""1.92 each
}
@ListItem {
1x IrDA transceiver module at @Sterling""2.33 each
}
@ListItem {
1x 3.6v NiMH battery at @Sterling""2.62 each
}
@ListItem {
2x LED at 25p each
}
@ListItem {
1x Charging connector at 57p each
}
@ListItem {
1x socket for AVR micro-controller at 5p each
}
@ListItem {
1x PCB at 9.75 Euros each, or about @Sterling""6.67
}
@EndList
It's all rather messy! I suspect I'd be busy for days finding new
ways to delimit scopes!
TIA,
ABS
--
Alaric Snell-Pym
Work: http://www.snell-systems.co.uk/
Play: http://www.snell-pym.org.uk/alaric/
Blog: http://www.snell-pym.org.uk/categories/alaric/