In the bundle I've created I'm attempting to refine my scopes. Take
the following example:
INT. SHIPYARD DOCKS - DAY
The above line falls under the scopes "text.splay.screenplay" (the
document) and "splay.slugline" (the element). What I want is to be
able to define the three separate elements: "INT", "SHIPYARD DOCKS",
"DAY" as independent scopes, while retaining their status as
"splay.slugline" So "INT" would fall under the jurisdiction of
"text.splay.screenplay splay.slugline splay.slugline.setting".
I guess the simple question is: how do you stack more than two (the
document and the element) scopes?
In Markdown a link gets text.html.markdown,
markup.paragraph.markdown, markup.underline.link.markdown... how do I
do that?
I recorded a macro to search forwards and backwards for
(?=(?:private|public)( static)? ), which is working nicely for
ActionScript, but it'd be interesting to see it tied into the language
grammers somehow. Any thoughts?
Ben
___________________
Ben Jackson
Diretor de Desenvolvimento
ben(a)incomumdesign.com
http://www.incomumdesign.com
This has been such a fun project. Couldn't keep myself away:
http://blog.inquirylabs.com/2006/02/19/syncpeople-on-rails-07/
== Summary ==
Easily navigate between ActionMailer models, views, partials,
controllers, helpers, javascripts and stylesheets with a single key
(keypad 'enter') in TextMate. This release also adds an Enhanced
TODO List (ctrl-shift-t) and is now officially LGPL licensed.
Duane Johnson
(canadaduane)
http://blog.inquirylabs.com/
Not sure what you need to debug this, but all of a sudden indentation
has stopped working in the php bundle. I've tried trashing the pref
files, my bundles and themes, and even trashing txmate itself, and
nothing is bringing it back.
Any Suggestions?
Eric Coleman
I'm stumped again. I got > comments working for plain text documents
using this method, but now I want to set // type comments for all php
source. I've tried adding the following preferences to both PHP and HTML
bundles, using source.php as the selector:
/* preferences */
{
shellVariables = (
{ name = 'TM_COMMENT_START';
value = '// ';
},
{ name = 'TM_COMMENT_END';
value = '';
},
{ name = 'TM_COMMENT_MODE';
value = 'line';
},
);
}
Doesn't work! I've tried with .php files set to both HTML and PHP
language types.
Idears?
Thanks again, Q
PS: Is it _always_ appropriate to use "HTML" as a file's language? I
noticed the "Source -> View source as HTML" command doesn't work unless
you select " X PHP -> Use HTML".
Hello,
I'm trying Spell Catcher X, and I notice that it does not work so
well with Textmate when using "Auto-Show Suggestions" with a popup
list: the popup list is shown when there is a mistake, but no more
input is processed until I click on the window.
Is this a known bug of Textmate or Spell Catcher X? As both programs
look really nice, I'd be glad to have both work together.
Thanks,
Alan
--
Alan Schmitt <http://sardes.inrialpes.fr/~aschmitt/>
The hacker: someone who figured things out and made something cool
happen.
.O.
..O
OOO
Arrrg! Trying to understand the format of bundle definitions.
Trouble number one: I'm trying to change the type of comments used for
plain text types. I've added the following to the patterns array of the
"Plain Text" language definition:
{ name = 'comment.line.right-angle-bracket.text';
match = '>.*$';
}
And nothing happens. I then tried creating a new bundle for a new type
of document ("Test Doc") and setting the patterns array to only the
above. Nothing.
What am I doing wrong?
Thanks if you can help!
Quinn
hello:)
Allan,since Texlive 2005 or Tetex 3 this code
I announce you that since Tex one should not any more
use this code (used in the Latex templates)
\newif\ifpdf
\ifx\pdfoutput\undefined
\pdffalse % we are not running PDFLaTeX
\else
\pdfoutput=1 % we are running PDFLaTeX
\pdftrue
\fi
must be replaced by \usepackage{ifpdf}
% Use: LaTeX: \usepackage{ifpdf}
% plain: \input ifpdf.sty
% The package provides the switch \ifpdf:
% \ifpdf
% ... do things, if pdfTeX is running in pdf mode ...
% \else
% ... other TeX or pdfTeX in dvi mode ...
% \fi
% The package can also be used to set global
% documentclass options:
% \RequirePackage{ifpdf}
% \ifpdf
% \documentclass[pdftex,...]{...}
% \else
% \documentclass[...]{...}
% \fi
note in texlive 2005 :
Last year, we kept \pdfoutput and other primitives undefined for DVI
output, even though
the pdfetex program was being used. This year, as promised, we undid
that compatibility
measure. So if your document uses \ifx\pdfoutput\undefined to test if
PDF is being
output, it will need to be changed. You can use the package ifpdf.sty
(which works under
both plain TEX and LATEX) to do this, or steal its logic.
Greetings
Alain
Hello all, hope to pick yer brains...
I notice that you can define multiple files for a template, but I can't
figure out how to create multiple files when running the template. Why
else would TM use multiple files in a template? But then again, there
seems to be only one $TM_NEW_FILE variable per template.
I'm trying to setup a template for a particular case when I will always
need several files at once. For now I'll just define one template for
each file I will need generated.
A quick side question, how can I populate env variables at runtime? If
my template has ${WHAT_DID_I_HAVE_FOR_LUNCH_TODAY} and I want to run a
template every day... is it possible to popup a dialog with fields to
fill-in or something?
Thanks!
Quinn
Strange Find and Replace Bug - r906
Summary:
Doing a selection based find and replace consistently inserts many lines
of code when it should be only replace one word with another single word.
Reproducing The Bug:
* Open the attached (.rb) file
* Switch to Ruby on Rails editor mode
* Do a full line selection on line #39
* Hit cmd+f to go into the finder window
* Replace the word ":now" with "now" while using the shift button to do
a selection only replace
Results:
* Replaces the entire line #39 with only the word "now"
* Performs a selection from line #39 down to #110
* Duplicates a bunch of code under line #110 (copies and pastes the new
selection)
Details:
* Ignore and wrap are checked. Reg exp. is unchecked.
* Restarting Textmate doesn't seem to fix the issue.
* Soyru in IRC helped me confirm the bug, so it is not specific to my
situation.
Environment:
* I don't use manager hacksies.
* I haven't edited the default bundle editor commands.
* I do use quicksilver, starting it is ctrl+alt+cmd+space; Everything
else is at defaults
class TimerController < ApplicationController
#
def index
unless @user.master_timer_is_stopped?
# initialize current task timer
# initialize task list
@upcoming_tasks = @user.upcoming_tasks
@recent_tasks = @user.recent_tasks
@favorite_tasks = @user.favorite_tasks
end
end
# Start a master timer
def start_clock
@user.start_master_timer
redirect_to :action => 'index'
end
# Pause a running master timer
def pause_clock
@user.pause_master_timer
redirect_to :action => 'index'
end
# Stop a running or paused master timer
def stop_clock
@user.stop_master_timer
redirect_to :action => 'index'
end
# Start a task
def start_task
# capture the time now so all timers match up
:now = Time.now
# find currently selected task
:selected_task = @user.selected_task
# if a selected task exists
if :selected_task
# if the recently started task is already the selected task
if :selected_task.id == params[:id]
if :selected_task.status == 2
# notice - can't start a timer that is already running
elsif :selected_task.status == 1
# start the master timer, if necessary
unless @user.master_timer_is_running?
@user.start_master_timer
end
# start a new task timer timer
TaskTimer.create :started_at => :now,
:user_id => @user.id,
:task_id = :selected_task.id
# change status of the this task
:selected_task.status = 2
:selected_task.save
else
# error - stopped tasks can't be selected
end
# if the recently started task is not already the selected task
else
# stop the task timer if it's still running
if :selected_task.status == 2
:task_timer = TaskTimer.find(:first,
:condition => "ended_at is null and " +
"user_id = #{(a)user.id} and " +
"task_id = #{:selected_task.id}")
:task_timer.ended_at = :now
:task_timer.save
end
#change status of selected task to stopped
:selected_task.status = 0
:selected_task.save
# find the newly started task
:selected_task = Task.find(params[:id])
# start the master timer, if necessary
unless @user.master_timer_is_running?
@user.start_master_timer
end
# start a new task timer
TaskTimer.create :started_at => :now,
:user_id => @user.id,
:task_id = params[:id]
# change status of the this task
:selected_task.status = 2
:selected_task.save
end
# if no selected task exists
else
# find the newly selected task
:selected_task = Task.find(params[:id])
# start the master timer, if necessary
unless @user.master_timer_is_running?
@user.start_master_timer
end
# start a new task timer timer
TaskTimer.create :started_at => :now,
:user_id => @user.id,
:task_id = params[:id]
# change status of the this task
:selected_task.status = 2
:selected_task.save
end
redirect_to :action => 'index'
end
private
before_filter :find_user
#
#
def find_user
@user = session[:user]
end
end
class TimerController < ApplicationController
#
def index
unless @user.master_timer_is_stopped?
# initialize current task timer
# initialize task list
@upcoming_tasks = @user.upcoming_tasks
@recent_tasks = @user.recent_tasks
@favorite_tasks = @user.favorite_tasks
end
end
# Start a master timer
def start_clock
@user.start_master_timer
redirect_to :action => 'index'
end
# Pause a running master timer
def pause_clock
@user.pause_master_timer
redirect_to :action => 'index'
end
# Stop a running or paused master timer
def stop_clock
@user.stop_master_timer
redirect_to :action => 'index'
end
# Start a task
def start_task
# capture the time now so all timers match up
now
# capture the time now so all timers match up
:now = Time.now
# find currently selected task
:selected_task = @user.selected_task
# if a selected task exists
if :selected_task
# if the recently started task is already the selected task
if :selected_task.id == params[:id]
if :selected_task.status == 2
# notice - can't start a timer that is already running
elsif :selected_task.status == 1
# start the master timer, if necessary
unless @user.master_timer_is_running?
@user.start_master_timer
end
# start a new task timer timer
TaskTimer.create :started_at => :now,
:user_id => @user.id,
:task_id = :selected_task.id
# change status of the this task
:selected_task.status = 2
:selected_task.save
else
# error - stopped tasks can't be selected
end
# if the recently started task is not already the selected task
else
# stop the task timer if it's still running
if :selected_task.status == 2
:task_timer = TaskTimer.find(:first,
:condition => "ended_at is null and " +
"user_id = #{(a)user.id} and " +
"task_id = #{:selected_task.id}")
:task_timer.ended_at = :now
:task_timer.save
end
#change status of selected task to stopped
:selected_task.status = 0
:selected_task.save
# find the newly started task
:selected_task = Task.find(params[:id])
# start the master timer, if necessary
unless @user.master_timer_is_running?
@user.start_master_timer
end
# start a new task timer
TaskTimer.create :started_at => :now,
:user_id => @user.id,
:task_id = params[:id]
# change status of the this task
:selected_task.status = 2
:selected_task.save
end
# if no selected task exists
else
# find the newly selected task
:selected_task = Task.find(params[:id])
# start the master timer, if necessary
unless @user.master_timer_is_running?
@user.start_master_timer
end
# start a new task timer timer
TaskTimer.create :started_at => :now,
:user_id => @user.id,
:task_id = params[:id]
# change status of the this task
:selected_task.status = 2
:selected_task.save
end
= Time.now
# find currently selected task
:selected_task = @user.selected_task
# if a selected task exists
if :selected_task
# if the recently started task is already the selected task
if :selected_task.id == params[:id]
if :selected_task.status == 2
# notice - can't start a timer that is already running
elsif :selected_task.status == 1
# start the master timer, if necessary
unless @user.master_timer_is_running?
@user.start_master_timer
end
# start a new task timer timer
TaskTimer.create :started_at => :now,
:user_id => @user.id,
:task_id = :selected_task.id
# change status of the this task
:selected_task.status = 2
:selected_task.save
else
# error - stopped tasks can't be selected
end
# if the recently started task is not already the selected task
else
# stop the task timer if it's still running
if :selected_task.status == 2
:task_timer = TaskTimer.find(:first,
:condition => "ended_at is null and " +
"user_id = #{(a)user.id} and " +
"task_id = #{:selected_task.id}")
:task_timer.ended_at = :now
:task_timer.save
end
#change status of selected task to stopped
:selected_task.status = 0
:selected_task.save
# find the newly started task
:selected_task = Task.find(params[:id])
# start the master timer, if necessary
unless @user.master_timer_is_running?
@user.start_master_timer
end
# start a new task timer
TaskTimer.create :started_at => :now,
:user_id => @user.id,
:task_id = params[:id]
# change status of the this task
:selected_task.status = 2
:selected_task.save
end
# if no selected task exists
else
# find the newly selected task
:selected_task = Task.find(params[:id])
# start the master timer, if necessary
unless @user.master_timer_is_running?
@user.start_master_timer
end
# start a new task timer timer
TaskTimer.create :started_at => :now,
:user_id => @user.id,
:task_id = params[:id]
# change status of the this task
:selected_task.status = 2
:selected_task.save
end
redirect_to :action => 'index'
end
private
before_filter :find_user
#
#
def find_user
@user = session[:user]
end
end
There are two heredoc-rules for the PHP grammar:
A generic one and an HTML one with HTML Syntax (the first rule even).
I improved the HTML one a little by including the PHP variables and
made another two for XML and SQL.
Maybe someone with svn write access could include them in the default
grammar. Forking the PHP grammar does not really work as one had to
fork the HTML as well…
Have fun,
Soryu
Hi Robert, hi Mark (et al.),
I've just downloaded TextMate and subscribed to this list, curious if
there's also a ConTeXt bundle to work with.
As I have read your thread from last year I was wondering how things
are going?
Or does anybody else has good news for us ConTeXters?
Steffen
Thanks Niko,
mysql is definitely in my path. I use tcsh and mysql is there:
setenv PATH /usr/local/mysql/bin:$PATH
However /usr/local/mysql/bin/ and other directories that I set in my
path are not reported in the search path that the MySQL bundle tells
me it is using:
"Couldn't find mysql
Locations searched:
/Applications/TextMate.app/Contents/SharedSupport/Support/bin/
CocoaDialog.app/Contents/MacOS
/bin
/sbin
/usr/bin
/usr/sbin
/Applications/TextMate.app/Contents/SharedSupport/Support/bin"
I tried modifying the PATH variable in the Advanced pane of TextMate
Preferences, to no avail.
So as a hack, I created a symbolic link to mysql in TextMate using
these commands:
cd /Applications/TextMate.app/Contents/SharedSupport/Support/bin
ln -s /usr/local/mysql/bin/mysql mysql
It's not pretty but it works. I'd still like to figure out how to
modify the PATH that the SQL Bundle uses ...
JR
I looked through the mailing list history and I know the whole FTP
integrated thing has been talked about a lot already but hear me out;
I just started working for this company where I HAVE to work off of
the server. I don't like it, but that's the way it's gonna have to
be for now (working on it though ;)
So I tried to figure out a way to work with project windows off of
the server and discovered it was impossible... What I do now, is
open all the files via FTP and then drag them to an empty project and
hide all the windows. It's a major pain but I do it once in the
morning and leave it open all day so that's not too bad.
What I would like to know is if there's a way I could automatize the
process, some sort of "add all open windows to empty project" type
macro or something along those lines. Not as good as being able to
save projects on remote servers, but it would be good enough for now...
I also read that someone had some kind of Perl/rsynch combo that sort
of mimicked the project on server idea, but I couldn't find enough
info to get anything working.
Any help in optimizing a remote type workflow would be greatly
appreciated. Thanks!
(As a side note, I almost got my boss to switch from BBEdit, but the
whole remote project issue blew it.)
Yann
> minimal.design textmate at minimaldesign.net
> Wed Feb 15 00:10:25 GMT 200
>
> I just started working for this company where I HAVE to work off of
> the server.
> ... Any help in optimizing a remote type workflow would be greatly
> appreciated.
Transmit has a new feature they're calling 'Edit in Whatever.' Edit
any remote file, in any app — even graphics!
<http://www.panic.com/transmit/>
Editing Files in an External Editor
Transmit can edit any remote file, using any local editor. Transmit
will download the file to a temporary directory, and watch the file
for changes. When you hit "Save" in your local editor, and the file
is changed, Transmit will automatically upload the file to the server.
Select the file to be edited.
- Choose File > Edit in [Editor Name]. (The name of the Finder's
default editor for that file type will be displayed.)
- Keep Transmit running while editing the file.
- Make the desired changes in the editor.
- If you want to keep the changes, save the file in the editor.
Transmit will save the file to the server automatically. The editor
can be closed or quit when it is no longer needed.
If you wish to edit files in a different editor than the Finder's
default:
- Right click, or control-click, the file to be edited.
- Choose Edit With > [Name of Editor You Want To Use]
- If the editor you wish to use isn't present, choose Edit With >
Other... and select the editor manually
If you wish to permanently edit files in a different editor than the
Finder's default:
- Choose Transmit > Preferences.
- Click Files.
- Click the icon next to Custom File Editors.
- Type the extension you wish to associate (for example, html), and
choose the application you wish to edit with.
I have mysql 4.1 installed on my machine in /usr/local/mysql/bin/.
It's up and running just fine.
When I run the "Execute Selection as MySQL Query" command from
TextMate, I get the following error message:
"Couldn't find mysql
Locations searched:
/Applications/TextMate.app/Contents/SharedSupport/Support/bin/
CocoaDialog.app/Contents/MacOS
/bin
/sbin
/usr/bin
/usr/sbin
/Applications/TextMate.app/Contents/SharedSupport/Support/bin"
Any ideas?
Thanks,
Jeff
Here's what I'd like to do:
On my webserver, I'll edit my .bash_profile to include and alias for 'mate'
to a shell script. The shell script will do the following:
1. secure copy the argument file to my local tmp folder
2. open the the local tmp file with 'mate -w'
3. once I finish editing the file in TextMate and close it, secure copy the
new file to replace the file on the webserver
The problem is, I don't know anything about shell scripting. :-)
But I'm wondering if anyone else already has something like that or would be
willing to help write one.
Any other ideas for accomplishing the same goal (edit remote files with
TextMate) are also welcome.
Thanks,
Simon
P.S.-I saw the copy to tmp folder idea in this useful view safari source
applescript:
http://comox.textdrive.com/pipermail/textmate/2005-September/005727.html
I did a super quick search and didn't notice anything, so I am
posting here (feel free to tell me to shuddap if it's been discussed
before).
Isn't there a way we could customize bundles that are "added" in. I
was thinking that when you do an update, if a bundle gets updated,
but I have a "customized" version (aka, i added a few things) I won't
get the updated bundle. Is this correct? Or is textmate smart and
only inserts my updates?
Eric Coleman
Hello all,
I'm trying to work out how to order files/folders in the project drawer.
I dragged and dropped files in to the drawer ordered however they're
listed in a bit of a random order now.
Any ideas?
Thanks!
Alastair
hi everybody.
i really LOVE the TODO-Bundle (thanks to whoever wrote it). as i'm
using it alot, i added some features:
- i like to see, wether s/th is TODO, FIXME or CHANGED. so i added
these words to the list and colored them differently.
- i added buttons to hide each category.
- as i'm a programming nube, i add own "changed"-comments
("NikosChange") to stuff i change in my RoR- and Joomla-projects to
keep track of what i do (wrong ;-). i added this as another category.
adopt this to your needs.
as i'm a programming nube (but you know that already), i'm all but
shure that i didn't make mistakes in my changes (you know that, too).
so if anybody and especially the author of the TODO-bundle finds bugs
in my code, please tell me over this list.
regards, niko.
ps: excuse my bad english.
--
____________________________
niko dittmann <ni-di(a)web.de>
____________________________
Hi Robert, hi Mark (et al.),
I've just downloaded TextMate and subscribed to this list, curious if
there's also a ConTeXt bundle to work with.
As I have read your thread from last year I was wondering how things
are going?
Or does anybody else has good news for us ConTeXters?
Steffen
I have a server that gets all the åäö (and the like) botched when I
upload my stuff to it. I hate to see all the ä stuff when I
edit, so I thought a macro to do a project wide search and replace
would be nice just before uploading the stuff.
I tried to record a macro that would do a project wide find/replace,
but it didn't seem to work. Suggestions?
A reference to characters can be found at
http://dillo.rti-zone.org/Html.testsuite/entities-latin1.html
Andreas
> inspired by the UI thread I hacked together a TextMate plugin. It
> shows all bundle shortcuts applying to the current scope whenever a
> modifier key is held for more than a second.
I agree this plugin is fantastic, but I had to remove it after just a
few minutes of use as I had no idea I often hold modifier keys while
I'm thinking, and it kept popping up when I didn't want it to.
Simply changing the method to invoke it would make it immensely more
useful.
Thanks for your work on this! Very cool idea..
Nate.
---------------------
CLIXEL Design & Coding -- http://clixel.com/
BRAINFAG Comics -- http://brainfag.com/
Hello,
I'm evaluating TextMate (coming from Vim) and I really like what I
see. I'm now trying to create my first Bundle, to deal with some
editing I do every week to create the Caml Weekly News. The format
I'm using is xml, so I'd like to have a Bundle with the same language
syntax, a few new snippets, and a command stolen from the HTML bundle.
About the language syntax, I'm a little confused by what the manual
says (http://macromates.com/textmate/manual/
language_grammars#language_grammars) about scopeName:
"scopeName (line 1) — this should be a unique name for the grammar,
following the convention of being a dot-separated name where each new
part specializes the name. Normally it would be a two-part name where
the first is either text or source, and the second is the name of the
language or document type. But if you are specializing an existing
type, you probably want to derive the name from the type you are
specializing. E.g. Markdown is text.html.markdown and Ruby on Rails
(rhtml files) is text.html.rails. The advantage of deriving it from
(in this case) text.html is that everything which works in the
text.html scope will also work in the text.html.«something» scope
(but with a lower precedence than something specifically targeting
text.html.«something»)."
So I tried a scopeName of "text.xml.CWN" to see if I would get XML
like syntax hilighting for free, but it did not work. I had to do:
{ scopeName = 'text.xml.cwn';
fileTypes = ( );
patterns = ( { include = 'text.xml'; } );
}
including the text.xml language.
Is this the correct way to proceed?
Another question is about the presence of a support directory in a
tmbundle (as there is one in the html bundle). Do they need to be
created by hand in the Finder, or is there a way to add a Support
file using the Bundle Editor?
My last question is about snippets: it seems that it's not possible
to invoke a snippet while completing one (that is, in the middle of
tabbing through all the fields to fill). Is it the case?
Thanks a lot,
Alan
--
Alan Schmitt <http://sardes.inrialpes.fr/~aschmitt/>
The hacker: someone who figured things out and made something cool
happen.
.O.
..O
OOO
Is there a way to run some code from a Bundle before TextMate opens a
file? The idea would be that when I run either:
$ mate foo.c
or
$ mate myprojectdir
and then click on foo.c I get to see if foo.c is version controlled
and then I check it out if it is. The version control system that I
use (BitKeeper) has a 'get' mode that checks out the files read-only,
and before editing you have to check them out in 'edit' mode. I have
written a function in a bundle that does this, but I have to call it
manually. I would like that to be automatic...
Thanks,
-Oscar
--
pgp fingerprint: BC64 2E7A CAEF 39E1 9544 80CA F7D5 784D FB46 16C1