This might be a dumb question, but is there ANY elegant solution for
keeping my Subversion repository in sync with my local files
*including* adding files, deleting files, renaming files? I'm really
trying to get religious about keeping all my projects under version
control, but I find it such a pain in the arse to have to remember to
do svn add, svn delete, svn rename whenever I decide to reorganize my
project files. In every project I do, I always get to a point about
halfway in where I say -- okay, this is messy -- let's combine these
files, delete this one, and rename these more descriptively. Then my
SVN repository gets all out of whack and refuses to let me make
anymore commits, and that's the end of version control for that
project. Happens every time.
Ideally:
It would be so nice if I could sync my TM project to my SVN
repository directly. If I rename something in the drawer, it gets
renamed in the repository too. Delete files? Add files? Same
thing. Is there some way to do this already? If not, how do you
guys handle this issue? And if not, any chance of adding this
functionality in a future release? Could a bundle be created to do
this?
Sean
:::: DataFly.Net ::::
Complete Web Services
http://www.datafly.net
Hi,
in an attempt to do some ruby I have revamped the TODO list command
again, completely. It's now written in Ruby using ERB with a template.
• It removes a bug from the older TODO comment which would descend
into subdirectories for non-project files. So if you had a file in /
and invoked the TODO command it would scan your complete Volume.
• It sorts according to TODO/FIXME/CHANGED categories
• and numbers the items, so you see how much work there is still todo :)
Soryu.
One thing I liked about vim was the continuation of the "*" down the
same column for each line in a block comment. So something entered
like:
(* Hello!
Blah
would be formated to:
(* Hello!
* Blah
I implemented this in the O'Caml language by changing the block
comment language rule to:
{ name = 'comment.block.ocaml';
begin = '\((\*.*)\)?$';
end = '\*\)';
beginCaptures = { 1 = { name = 'comment.block.ocaml.begin'; }; };
},
And adding two snippets for the return key: One for the scope
comment.block.ocaml.begin that would return, space in, and add a "* ".
One for comment.block.ocaml that would only return and add a "* ".
Xefore I charge off and add this for C, is this the best way to
implement this feature? Or am I missing an easier way? I've attached
the two snippets and language syntax for O'Caml if anybody would like
to try ti.
--
-Corey O'Connor
Forgive the ignorance...
perl -pe '
s/"/\"/g;
'
This there any reason that the above wouldn't work? I'm guessing it
has to with the "-pe" options (which I know nothing about).
I'm working on a bundle command (see below) that converts a plain-
text document (screenplay) to a PHP file for conversion to PDF via
FPDF (http://www.fpdf.org). Everything is working just fine except
for two things I just can't figure out--for the record, this code was
given to me by Allen for an HTML conversion and I've repurposed it
for this.
The first problem I'm having is with the very last line of code. The
idea is to get safari to open the generated document in Safari and
process it as a web-page. Because $DST seems to output the file-path
I can't just have it open "http://localhost/example.php", which is
what I want. How do I do that? Is it in the manual, 'cause I missed
that part.
The second question is regarding the 19th line of code:
$this->Cell(5.5,.18," XXXX ",0,0,'L',0);
I want to know if there is a way to define the "XXXX" bit in the
document itself with something like:
$header = example
How would that be done?
Thanks in advance, you guys are really helping make this bundle kick
butt.
-------------------------------
# first figure out a name for the result
NAME="${TM_FILENAME:-untitled}"
BASENAME="${NAME%.*}"
DST="/Library/WebServer/Documents/$BASENAME"
# everything we output within { … } is written to the PHP file via
redirection (see line with the })
{
# first output PHP header
cat <<HEAD
<?php
require("fpdf/fpdf.php");
class PDF extends FPDF
{
//Page header
function Header()
{
//Move to the right
\$this->Cell(5.5,.18," XXXX ",0,0,'L',0);
//Title
\$this->Cell(.5,.18,\$this->PageNo(),0,2,'R',0);
\$this->ln(.32);
}
}
\$pdf=new PDF("P","in","Letter");
\$pdf->SetMargins(1.5,.5,1);
\$pdf->AddPage();
\$pdf->SetFont("Courier","",12);
HEAD
# then PHP body (converted from document)
perl -pe '
s/"/\\"/g; #escape quotes
s/\/\/(.*)\/\/|^\/\/(.*)//g; # strip out non-printing comments
s/^(\t{4})([^\t].*)$/\$pdf->Cell(2);\$pdf->MultiCell(0,.18,"$2",0,L,
0);/g; #characters
s/^(\t{3})([^\t].*)$/\$pdf->Cell(1.5);\$pdf->MultiCell(1.5,.18,"$2",
0,L,0);/g; #parenthetical
s/^(\t{2})([^\t].*)$/\$pdf->Cell(1);\$pdf->MultiCell(3.5,.18,"$2",
0,L,0);\$pdf->ln();/g; #dialogue
s/(\t{10})([^\t].*:)/\$pdf->Cell(4);\$pdf->MultiCell(2,.18,"$2");\
$pdf->ln();/g; #right-transitions
s/^\w+.{2,20}:\s*$/\$pdf->MultiCell(0,.18,"$&",0,L,0);\$pdf->ln();/
g; #left-transitions
s/^(\w|\.|\[|\-).*$/\$pdf->MultiCell(0,.18,"$&",0,L,0);\$pdf->ln();/
g; #paragraph
'
# and finally PHP footer
cat <<'TAIL'
$pdf->Output();
?>
TAIL
} >"$DST.php"
# open the generated PHP file in Safari
open -a Safari "$DST.php"
Dear List,
One of the most striking things to a new user is that the most
important part of the UI for textmate is a button a that is at the
_base_ of the window (v. unexpected) and that is the smallest part of
the UI. I'm quite sure I would not have realised its significance had
I not seen the Screencasts, and I know that people I've recently
introduced to Textmate have had the same problem. Is there any way it
could be made more obvious?
Best,
N.
What is the meaning of the "swallow" key for language rules? I
searched the archives, wiki and documentation but I couldn't find a
good definition. Did I miss something?
--
-Corey O'Connor
> I'm guessing you want it to replace all " with \", in which case
> you would want to escape the \, i.e. s/"/\\"/g
Yeah, I feel silly, that's just it.
And one of these days I'll tell you everything I want to do, I promise.
[There is a question in here... scrub through to the end!]
This is very interesting!
Clearly, folks have a range of different tasks they need to
accomplish and a range of different approaches for doing so.
In my case, what I'm currently doing is ridiculously simple compared
to what some on the list are doing: I'm just editing a small number
of files that make up "a website." I'm editing the files locally...
the files are on a hard drive in a box that's right under my desk.
But to complicate things, I want to be able to see how these files
appear when served from a REAL web server (not just opened from my
disk). Plus, I also want to know how they look from a Windows machine.
So... I've set up my next oldest computer (a G3) as a "server in my
closet." This is my "test" deployment location.
Of course, I also want to deploy the files on a (external) "staging"
server where my client(s) can check things out.
So, at minimum, I have stuff in three places that I (usually) want to
be the same. When I started using TextMate, I was concerned about
that lack of "ftp/sftp/ssh integration."
After I discovered and researched rsync (yes, consider me a newbie as
regards The Power of the Command Line) and TextMate bundles, I'm
suddenly no longer concerned about whether I can open a file "via
ftp" FROM WITHIN TextMate. Or save it back from TextMate "to" the
Internet.
On Feb 19, 2006, at 10:05 PM, Court K wrote, in part:
> <snip>
> I mean who actually is editing files that ARE NOT going to end up
> on the internet? ...
> <snip>
As other's have mentioned, this is not *quite* the universal
situation... for example, folks editing LaTeX are (I presume) mostly
expecting to see the result in print; folks using TextMate to write
screen plays are also (again, I presume) thinking in terms other than
"web deployment."
The files I am editing ARE intended to go directly for the Internet.
But still I feel no need for "built-in" ftp/sftp/ssh support in
TextMate. In part this is because I'm always working with the same
set of files and their location on the net is always the same. And
no one else is editing them other than me.
So my Question:
What are folks doing that makes them want to see built-in ftp/sftp/
ssh support in TextMate? One situation I can imagine is the desire/
need to open many arbitrary files that are located in many arbitrary
locations on the Internet. I don't have a good picture of when
anyone would be needing to do that though. Are people doing that?
For me, the files I want to edit are on my computer. Periodically
they need to be uploaded to the net, but my editing sessions don't
begin from copies that were on the net.
Just Curious! ;)
eo
As a follow-up to the discussions about remote file editing, I wanted
to throw another idea out there. First of all, I think the ideal
solution is to have Mac OS X mount a remote directory in the Finder,
and then access that directory from TextMate as if it were on a local
volume. (After all, providing file access is the operating system's
job; TextMate shouldn't have to implement special support for it.)
I mentioned WebDAV before, and for editing files on a web site, it's
usually the best solution. Unfortunately, accessing remote files
outside of the web server's control is very difficult, sometimes
impossible, with WebDAV. For those cases, I've been resorting to NFS,
which Mac OS X also supports natively. However, NFS has always been
buggy in my experience, at least when accessing it across the Internet.
Luckily, Mac users have a third option: the Apple Filing Protocol, or
AFP. Although it's becoming obsolete in favor of less proprietary
standards, it doesn't suffer from the weaknesses of WebDAV and NFS.
Namely, it's not bound to a web server, and it has no trouble
mounting remote directories over the Internet. I've been using it to
edit remote shell scripts in TextMate with no problems.
Setting up AFP is very easy if your host system is Linux and you have
admin rights. You simply install the netatalk package [1] and start
the AppleTalk daemon. For instance, if you're running Fedora Core:
yum install netatalk
service atalk start
After that, you simply go the Finder, choose Connect To Server, and
enter afp://myserver. You can then enter your user name and password
to mount your home directory. More info about configuring share
points and enabling secure authentication is in the netatalk
documentation.
Anyway, I just wanted to mention that option for those of you who
want remote file access without having to rely on a third-party
utility or wait for SFTP support to be built-in to TextMate.
Trevor
[1] http://netatalk.sourceforge.net/
Howdy y'all. Wooo doggies!
I know a lot of people have talked about this in the past, but...
If you want to use TextMate through FTP, you can still use a project
window with tabs.
#1 Open up your FTP add (I've used Cyberduck and Transmit)
#2 Open a document from your FTP program into TextMate (cmd-j in the
duck)
#3 Find the temp folder that your FTP app uses to save the files
you're editing (the duck uses /var/tmp/folders.503/TemporaryItems/ on
my system)
#4 Open that folder in TextMate
#5 Close any FTPd files you're currently working on
#6 Open a document from your FTP program into TextMate (cmd-j in the
duck)
Your temp editing FTP files should now pop up as new tabs in textmate.
For extra slickness, you can save this project, stick the .tmproj in
your dock or something and be ready to go at a moments notice !!!!
yee haw!!!!
Enjoy ;)
(this really shouldn't come as news to anyone, but it was fun to feel
like a big know-it-all for a few precious moments)
((back to cruel intellectual mediocrity))
Hi all,
Just put this together and thought I'd share:
$TM_SELECTED_TEXT`echo "$TM_SELECTED_TEXT"|ruby -00 -pe
"gsub(/([._]|\W)(?:
(x)|(y)|(X)|(Y)|(width)|(height)|(w)|(h)|(Width)|(Height))/) { \$1 +
(\$2 ? \"y\" : \$3 ? \"x\" : \$4 ? \"Y\" : \$5 ? \"X\" : \$6 ?
\"height\" : \$7 ? \"width\" : \$8 ? \"h\" : \$9 ? \"w\" : \$10 ?
\"Height\" : \$11 ? \"Width\" : \"\") }"`
It will take, for example, something like this:
var xMin = (this.trap_mc) ? this.target_mc._x - bounds.xMin : 0;
var xMax = (this.trap_mc) ? this.target_mc._x + this.target_mc._width +
(this.trap_mc._width - bounds.xMax);
And append this afterwards:
var yMin = (this.trap_mc) ? this.target_mc._y - bounds.yMin : 0;
var yMax = (this.trap_mc) ? this.target_mc._y + this.target_mc._height
+ (this.trap_mc._height - bounds.yMax);
This is something I do by hand like, maybe 10 or 20 times in a coding
session. Anyone else have some useful additions (or a more elegant
regexp)? ;)
- Ben
___________________
Ben Jackson
Diretor de Desenvolvimento
ben(a)incomumdesign.com
http://www.incomumdesign.com
Anybody know any commands in Textmate that can remove all extraneous
whitespace from a HTML document like BBEdit's Formatting->Compact function?
I checked the tidy documentation but couldn't find anything. Strange, I
thought Tidy would have that one.
Quinn
I'm getting a digest of the topics here and suddenly (about 2 days
ago) I started getting every message posted here listed twice (in a
row) in the digest. Any one else having this problem? Any suggestions?
— oliver taylor
ollieman.net
Dear TextMate Users,
I use TextMate to deal with LaTeX documents.
To create the German format for quotations i have to write "`foo bar
"' (you have to move your nose very close to the monitor to see the
2nd character after the " character).
If I type the first " character a 2nd one appears. That's fine. Then
I type the the ` character. It will be completed with an ' char. The
results looks like "`'" . This is not what I want.
I would like to type the first " and want to get an "`'". What can I do?
Regards
Tukaram
Is there a workaround for this issue ? The XCode Bundle will not find
the active target on its own and complains with a huge tooltip,
basically dumping the entire hash of possibilities.
Am I restricted to projects with a single target ?
thanks
Ben
> Try this
>
> #!/usr/bin/perl
> local $/; # put Perl in "slurp" mode
> $text = <>; # read in the whole file
> $text =~ s/(\s+)$//mg;
> $text =~ s{((INT\.|EXT\.|I/E\.|int\.|ext\.|i/e\.)\s.*)$}{***$1}mg;
> $text =~ s/^([A-Z].*[A-Z)])\n^(\(.*\))\n(.+)$/\n\t\t\t\t$1\n\t\t\t$2
> \n\t\t$3\n/mg;
> $text =~ s/^([A-Z]{2,}.*[A-Z)0-9])\n(.*)$/\n\t\t\t\t$1\n\t\t$2\n/mg;
> $text =~ s/^[*]{3}(.+)$/\n$1\n/mg;
> $text =~ s/^(.*(IN:|UP:|TO:))$/\n\t\t\t\t\t\t\t\t\t\t$1\n/mg;
> $text =~ s/^(\w+.*(\.|\?|\!|\"|\-))\n\w+.*(\.|\?|\!|\"|\-)$/\n$1/mg;
> print $text;
Wow, thanks Dr. Drang! That worked perfectly. I'll be releasing the
bundle soon, and i'll be sure to let you guys know.
hi.
is there any reason, why the enhanced TODO-command is in the rails-
bundle and not, say, in the source- or text- or the todo-bundle?
(other than syncPEOPLE using it for rails)
niko.
--
____________________________
niko dittmann <ni-di(a)web.de>
____________________________
I often use Comment Line (Command-/) to add and remove comments. I
noticed that if I have a shell script snippet like this:
# Comment
then Comment Line removes the comment. But if the snippet looks like
this:
#Comment
then Comment Line adds yet another comment ("# #Comment"). Is this a
bug? I checked the Ruby code for the command in the Bundle Editor but
I didn't see anything wrong.
Trevor
Here are 3 macros, 3 commands, and a small Ruby program that take the
DRY principle to another level while writing Rails migrations.
These snippets for creating a table, adding a column, and renaming a
column will add the opposite actions into self.down for you. I made a
30 second demo video so you can see them in action. You'll find all
this on my blog. The address is in my signature.
Hope some of you find this useful.
--
Sami Samhuri
http://sami.samhuri.net
I really like the project drawer and I always keep it on the left-hand
side. This is not a problem as long as I use a single window: textmate
opens it up in the same location as when I last closed it.
But if I open up another window (with a drawer), it is always opened
with the drawer on the right hand side. It's really annoying, because
(as far as I can tell) the only way to switch drawer sides is to move
the window to the right screen edge and then toggle it off and back on
again. This wastes quite a lot of time.
Is there a way to force left side drawers?
Steven Wittens
> #!/usr/bin/perl
> local $/; # put Perl in "slurp" mode
> $text = <>; # read in the whole file
> $text =~ s/^([A-Z ]+)\n(\(.+\))\n(.+)$/\n\n\t\t\t\t$1\n\t\t\t$2
> \n\n$3/mg;
> print $text;
Of all the solutions proposed here, this once seemed to work the
best. Thanks for the tip about processing the entire document in one go.
I ended up with the following:
#!/usr/bin/perl
local $/; # put Perl in "slurp" mode
$text = <>; # read in the whole file
$text =~ s/(\s+)$//mg;
$text =~ s/((INT.|EXT.|I\/E.|int.|ext.|i\/e.)\s.*)$/\*\*\*$1/mg;
$text =~ s/^([A-Z].*[A-Z \)])\n^(\(.*\))$\n(.+)$/\n\t\t\t\t$1\n\t\t\t
$2\n\t\t$3\n/mg;
$text =~ s/^[A-Z]{2,}.*[A-Z\)\d]$\n^(.*)$/\n\t\t\t\t$1\n\t\t$2\n/;
$text =~ s/^\*\*\*//mg;
$text =~ s/^(.*(IN:|UP:|TO:))$/\n\t\t\t\t\t\t\t\t\t\t$1\n/;
$text =~ s/^(\w+.*(\.|\?|\!|\"|\-))$\n^\w+.*(\.|\?|\!|\"|\-)$/\n$1/mg;
print $text;
...but it doesn't work at all. I'm guessing that it's something
obvious that I can't see, but in case it's not an explanation of what
I'm trying to do follows.
1. removes trailing whitespace at the end of a string (which is
common in the format I'm importing from.
2. appends three *'s to the beginning of what I'll call well-formed
sluglines so that step 4 doesn't apply to these are well.
3. finds a specific set of lines, a Character followed by
Parenthetical, followed by Dialoge. And formats it.
4. finds Character followed by Dialogue when there is no
Parenthetical, and formats it.
5. repairs the sluglines that were changed in step 2.
6. formats transitions.
7. formats regular paragraphs (this is a little funky, but it's my
fault).
I can do all these in the Find&Replace window, but I get nothing when
running this bundle command.
You can find a sample document to test the script on here: http://
ollieman.net/files/bundles/braveheart-sample-unformatted.txt
And you can find what the result should look like here: http://
ollieman.net/files/bundles/braveheart-sample-formatted.txt
Thanks again for all the help. This will allow we to switch full-time
from Final Draft to TextMate. Something I'm really looking forward to.
> this would not allow for commands that take the whole document as
> input and the current selection as output, and autocompletion
> thingies wouldn't work _that_ good, so considering this I'm on +1 for
> allan's proposal.
I think some minor changes to the wording of Allan's solution might
make it more readable. What about:
Output: [ Discard ]
[ Text ] and [ pop-up ]
[ Snippet ] and [ pop-up ]
[ HTML ]
[ Tool Tip ]
[ New Document ]
And then the pop-up showing for the Text and Snippet output options
have the folowing options:
and [ Replace Input ]
[ Replace Selection ]
[ Replace Document ]
[ Insert After Caret ]
This version uses more [action verbs][1], which makes it read more
logically.
> by the way, I'd like an option to show the output as a popup menu (or
> something like that): this would perfectly suit autocompletion. think
> about it, al.
I'll second that.
Nice ideas, Allan! Cheers,
Ben
[1]:
http://developer.apple.com/documentation/UserExperience/Conceptual/
OSXHIGuidelines/XHIGMenus/chapter_16_section_3.html#//apple_ref/doc/
uid/TP30000356-TPXREF117
___________________
Ben Jackson
Diretor de Desenvolvimento
ben(a)incomumdesign.com
http://www.incomumdesign.com
hello:)
TeXShop can provide synchronization in two ways.
"pdfsearch" : The default method uses a new ability in Mac OSX 10.4
to search for strings in pdf files.
No special style files need be included to use this method.
"pdfsync" is the original method but needs to add the following line
to the preamble of your tex source code before the \begin{document}
line:
\usepackage{pdfsync}.
Is it to possible to use in the future, the first method "pdfsearch"
with Textmate
Thanks
Alain