I recently added support for .rcss files to my Ruby on Rails project, those
being the equivalent of .rhtml, but for stylesheets. I've been trying to make a
grammar that gives me all the nice ERB autocompletion and syntax coloring that
exists for .rhtml files, but seem to be running into issues with the scope
selectors.
My grammar, based on th HTML (Rails) one is here: http://pastie.textmate.org/63540
Using that, I get proper syntax coloring for embedded Ruby if I use it at the
root level, but I still don't get autocomplete. And inside a CSS selector, I
can't get anything.
The output I'm getting: http://pastie.textmate.org/63543
Is there a way to specify conditional scope within a grammar? It seems like once
it hits the CSS selector, it doesn't recognize ERB anymore.
I've made a command which will list all colours in a CSS file as a list of
swatches.
At the minute it only does Hex colours also I would like it if you could
click
colours and it would jump to them in your document but I lack the ruby
skills as I'm sure you will notice from the shoddy
"colourArrayToTrim.each" bit.
Anyway some people might find it useful
input:entire document
output:show as HTML
activation:Key cmd+shift+opt+ctrl+c (ALL modifiers + C, to show ALL
colours ;) )
scope: source.css
Code as follows:
#!/usr/bin/env ruby
file = STDIN.read
fileName = ENV['TM_FILENAME']
hex = Regexp.new(/(#(\d|[a-f]|[A-F]){3,6})/)
colourArrayToTrim = file.scan(hex)
colourArray = []
colourArrayToTrim.each { |colour|
colourArray.push colour.shift
}
puts '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Colours</title>
<style type="text/css" media="screen">
a {
color: #000;
text-decoration: none;
line-height: 22px;
border: 1px solid #fff;
padding: 2px;
}
a:hover {
background-color: #EFEFEF;
border: 1px solid #999;
}
.colourRow {
display: block;
margin-top: 5px;
margin-bottom: 5px;
width:160px;
margin-right: 10px;
float:left;
}
.swatch {
width: 20px;
height: 20px;
display: block;
border: 1px solid #666;
margin-right: 10px;
float: left;
}
.swatch div {
width: 18px;
height: 18px;
border: 1px solid #fff;
}
</style>
</head>
<body>'
puts "<h2>Colours used #{fileName}</h2>"
colourArray.each { |colour|
puts "
<a href='' class='colourRow'>
<div class='swatch'>
<div style='background-color:#{colour};'></div>
</div>
#{colour}
</a>
"
}
puts "
</body>
</html>
"
Hi,
Just wondering how I go about altering the setup to have folding
block comments in a PHP file? I only need to fold doc-block type
comments which I see have been designated as effectively ^/**$ - I'm
not worried about blocks within functions. My doc comments can be
quite voluminous, and it's frustrating seeing huge swathes of
comments and little class xxxx {... stubs when I want to get an over
view of the entire file...
;-)
R
Hi,
I'm experiencing some trouble running the auto-reload feature of Skim.
It seems that Skim doesn't wait for the pdf to be closed by the TxMt
command.
Looks like it was trying to reload the file as soon as a single bit
is added to it, imho.
What's more, a warning popup tells me Skim is "Unable to open the
file", but when TxMt is done compiling (displaying the # of errors
and warnings in the output window), I can reload the file successfully.
Have you ever noticed such a behaviour, Skim users?
Any ideas of workarounds?
Xavier Cambar
I use the Diff bundle a lot. I regularly do a 'svn diff | mate'
command prior to check-ins. One of the things I typically do with
larger sets of files is collapse all the diffs so there is one file
per line. I can then examine each group of changes, and once happy
with the review (or as they get committed), I will delete the
collapsed "line".
This is a tedious process because the foldings for a diff are not
automatically done for me. This is one of many cases I've found where
the folding separators cannot be described properly since the close
of the fold is not a match for anything in particular, just the fact
that a new fold is starting. (Another such case is for Markdown-- I'd
like to provide foldings for the "# ..." header, down to the next
available "# ..." header, but I can't express that.)
So what I do is start at the top of the file, then hit Option+Shift
+⇣ which will select just that one file's diff somehow (I haven't
investigated how TextMate knows to skip down to the next "Index..."
line like that. Does it do so based on the lines identified as
separators?). Then I hit ⌘+F1 to fold the selection.
Again this is very tedious, especially for a large diff. I would be
very happy if someone found a way to automate this process. Ideally,
it should be possible to describe a folding marker whose end is
identified by the start of a new fold, but I don't think it's
possible today.
-Brad
Hi,
Just wondering how I submit some snippets for the PHP bundle? They're
small, but I'm using them all the time.
( ${2:'$1'}=>${4:'$3'},$0
tab-triggered on (,
and the more general
, ${2:'$1'}=>${4:'$3'},$0
tab-triggered on ,,
They make typing hashed lists really very much quicker for me.
Or am I missing an altogether quicker way?
R
--
Richard Dyce MA (Cantab.) MBCS MIET
http://dyce.com
Hello all,
When I try to run the patch documented at http://macromates.com/wiki/
Blogging/WordPress, I get the following error:
burt:~/Desktop michael$ patch < wp-xmlrpc-mw-gmt-patch
patching file xmlrpc.php
Hunk #1 FAILED at 669.
Hunk #2 FAILED at 740.
2 out of 2 hunks FAILED -- saving rejects to file xmlrpc.php.rej
I'm assuming this means that my file is not patched correctly. I'm
running the latest Wordpress (2.2) but I'm not aware of any changes
that were made to the xmlrpc.php file from previous versions. Here is
what comes up in the xmlrpc.php.rej file (sorry for all the code)...
***************
*** 669,675 ****
if ($postdata['post_date'] != '') {
- $post_date = mysql2date('Ymd\TH:i:s', $postdata['post_date']);
$categories = array();
$catids = wp_get_post_cats('', $post_ID);
--- 669,686 ----
if ($postdata['post_date'] != '') {
+ /* BEGIN PATCH */
+ /* Convert post_date to GMT so receiving applications can
+ safely adjust it to the user's local time zone.
+ Using post_date_gmt instead of post_date does *not* work,
+ since it is (wrongly) adjusted for the gmt_offset *twice*. */
+ /* Old code:
+ $post_date = mysql2date('Ymd\TH:i:s', $postdata['post_date']); */
+ $post_date = mysql2date('Y-m-d H:i:s', $postdata['post_date']);
+ $post_date = get_gmt_from_date($post_date);
+ $post_date = str_replace('-', '', $post_date);
+ $post_date = str_replace(' ', 'T', $post_date);
+ /* END PATCH */
$categories = array();
$catids = wp_get_post_cats('', $post_ID);
***************
*** 729,736 ****
}
foreach ($posts_list as $entry) {
-
- $post_date = mysql2date('Ymd\TH:i:s', $entry['post_date']);
$categories = array();
$catids = wp_get_post_cats('', $entry['ID']);
foreach($catids as $catid) {
--- 740,759 ----
}
foreach ($posts_list as $entry) {
+
+ /* BEGIN PATCH */
+ /* Convert post_date to GMT so receiving applications can
+ safely adjust it to the user's local time zone.
+ Using post_date_gmt instead of post_date does *not* work,
+ since it is (wrongly) adjusted for the gmt_offset *twice*. */
+ /* Old code:
+ $post_date = mysql2date('Ymd\TH:i:s', $entry['post_date']); */
+ $post_date = mysql2date('Y-m-d H:i:s', $entry['post_date']);
+ $post_date = get_gmt_from_date($post_date);
+ $post_date = str_replace('-', '', $post_date);
+ $post_date = str_replace(' ', 'T', $post_date);
+ /* END PATCH */
+
$categories = array();
$catids = wp_get_post_cats('', $entry['ID']);
foreach($catids as $catid) {
Can anybody diagnose this problem? I would appreciate it very much.
Thanks!
Michael
P.S. Great work on the blogging bundle! I love it!
Consider the following code:
=================
#include <Cocoa/Cocoa.h>
#include "MyClass.h"
@implementation MyClass
- (id) init
{
return self;
}
#ifndef _DEMO_
- (void) setSerialNumber: (NSString *) aSerialNumber
{
serialNumber = [aSerialNumber copy];
}
#endif
- (NSString *) description
{
return @"A MyClass";
}
@end
=================
The name of the method setSerialNumber: is not highlighted, and it
does not appear in the function popup. Removing the #ifndef cures
both problems.
Is there something I can do? Is there a later version of the Obj-C
bundle that covers this?
— F
Hari, you might be able to easily answer this, but I'm posting this
question here in case someone else knows as well...
I'm trying to typeset a document entirely in Greek. Document body,
section/chapter headers, everything. I have TeXniscope installed,
using teTeX (and relevant packages) installed through macports.
\usepackage[utf8]{inputenc} at the top produces errors for every
character in the document, in the form of:
./untitled.tex:50: Package inputenc Error: Unicode char \u8:Δ not set
up for us with LaTeX.
etc. I definitely came across this problem before, but I don't
remember if I eventually solved it or if I found it couldn't be
solved... Anything I can try to resolve this? (or typeset everything
in... ugh.. M$ w*rd??)
Thanks,
Constantinos
--
What's your Dream?
Make it happen with www.dostpost.com
Has anyone created an upload command when mp3s are dragged onto a
document? This would be a great podcasting feature for the blogging
bundle.
Thanks,
Graham English
I have noticed that if I set Line Endings to "CRLF (Windows)" (when
collaborating with windows people), line endings are correctly
translated to windows style. I forgot to set Textmate back to Unix
standard (LF), opened a text file, and when I next saved it it had
CLRF line endings. When I changed Textmate back to LF mode, the line
endings stayed as CRLF. Even if I delete then re-do all the
linebreaks, they are still CLRF. I need to get this sorted right
away, so I have used Fink to install dosunix to convert these
"CRLFed" documents.
Is this a bug in TextMate? It would be nice if there was some way to
set the line endings by file, rather than having an app wide setting.
Also, it would be great if this could be put in a bundle (LF->CRLF
and vice-versa).
Thanks,
Nick Forge
Hi All,
I am trying to use FileMerge for the 'Diff with...' commands in the
Subversion bundle.
The help file says to set $TM_SVN_DIFF_CMD to fmdiff. I guess that
should be fmdiff.sh, which needs to be downloaded and installed first
from elsewhere (help should mention that).
Anyhow after I did set that up and run a diff, it does open in
FileMerge, but the "Accessing Subversion Repository" panel in
TextMate sticks around until FileMerge is quit. Am I doing something
wrong, or is that a problem with the bundle?
Thanks
Gerd
Hello,
while testing mercurial I noticed that the diff commands in the
Mercurial Bundle behave differently than what I'm used to from the svn
bundle.
When I select a folder in the drawer and issue any diff command using
the subversion bundle, I get a diff for all files under that selected
folder.
The mercurial diff commands always use the currently active file in the
diff commands.
Changing the hg_diff.rb file enables me to select a folder and get a
diff for everything under it:
@@ -6,7 +6,7 @@
module Mercurial
def Mercurial.diff_active_file( revision, command )
hg = ENV['TM_HG'] || 'hg'
- target_path = ENV['TM_FILEPATH']
+ target_path = ENV['TM_SELECTED_FILE'] || ENV['TM_FILEPATH']
work_path = ENV['WorkPath']
path = target_path.sub(/^#{work_path}\//, '')
output_path = File.basename(target_path) + ".diff"
(patch is attached)
While I'm here .. I had to change all diff commands do something like
(
"${TM_RUBY:=ruby}" -I "$TM_BUNDLE_SUPPORT/" <<END
require 'hg_diff'
Mercurial::diff_active_file("-r$rev2 -r$rev1", "Diff Revisions…")
END
) | iconv -t UTF-8 -c
since without the iconv call I'd get empty diff windows (probably
because of incorrectly encoded german special chars inside the generated
diff) -- but I'm not shure if this is just a local problem.
Bye,
Eike
Index: /Library/Application Support/TextMate/Bundles/Mercurial.tmbundle/Support/hg_diff.rb
===================================================================
--- /Library/Application Support/TextMate/Bundles/Mercurial.tmbundle/Support/hg_diff.rb (revision 7253)
+++ /Library/Application Support/TextMate/Bundles/Mercurial.tmbundle/Support/hg_diff.rb (working copy)
@@ -6,7 +6,7 @@
module Mercurial
def Mercurial.diff_active_file( revision, command )
hg = ENV['TM_HG'] || 'hg'
- target_path = ENV['TM_FILEPATH']
+ target_path = ENV['TM_SELECTED_FILE'] || ENV['TM_FILEPATH']
work_path = ENV['WorkPath']
path = target_path.sub(/^#{work_path}\//, '')
output_path = File.basename(target_path) + ".diff"
I'd love to have a command that can put the current symbol on the
clipboard, and this would be short-work if the current symbol where
available via a TM_* variable, but I'm not seeing it.
My particular use case is Python and I'd like to be able to easily
construct "<module>.<class>.<method>" or "<class>.<method>".
I see no way of getting this information, short of writing a python-
specific parser to grab it (using TM_LINE_NUMBER to figure out where
the cursor is). Am I missing something?
j.
I have a user of my FlickrMate bundle getting the following error...
error 63 (File name too long) opening sem /tm_dialog async/
> nilsborchers/4.
> tm_dialog (async_update): Window '4' doesn't exist
> /Applications/TextMate.app/Contents/SharedSupport/Support/lib/
> dialog.rb:83:in /bin/bash: -c: line 1: unexpected EOF while looking
> for matching `''
> /bin/bash: -c: line 4: syntax error: unexpected end of filecall'
> from /Applications/TextMate.app/Contents/SharedSupport/
Support/lib/
> progress.rb:36:in /bin/bash: -c: line 1: unexpected EOF while
> looking for matching `''
> /bin/bash: -c: line 3: syntax error: unexpected end of filecall'
> from /Applications/TextMate.app/Contents/SharedSupport/
Support/lib/
> progress.rb:49:in /bin/bash: -c: line 1: unexpected EOF while
> looking for matching `''
> /bin/bash: -c: line 3: syntax error: unexpected end of filefork'
> from /Applications/TextMate.app/Contents/SharedSupport/
Support/lib/
> progress.rb:47:in /bin/bash: -c: line 1: unexpected EOF while
> looking for matching `''
> /bin/bash: -c: line 3: syntax error: unexpected end of filedialog'
> from /Applications/TextMate.app/Contents/SharedSupport/
Support/lib/
> progress.rb:40:in
It's occurring during the "Browse Flickr Photos" command. If anyone
is familiar with that particular error, could you please let me know
what it might be related to?
Thanks,
Brett
Hi. This may be an another obvious thing I have missed, but:
Running Ruby produces beautiful output, through Rubymate. But running
shell commands splats the output into a plain window, with output and
errors thrown in together, and line endings ignored.
Is there any way to pipe shell output through Rubymate, or any similar
functionality for the shell?
---
Bruno
Hi TextMaters,
I recently started to translate TextMate manual into Japanese.
Subversion repository is located at http://macromates.com/svn/Bundles/
trunk/Manual/pages .
`en` directory is a Markdown version of Allan's original manual,
which I use as a source of translation and as a template. We can,
therefore, expect the same look of the translation, sharing the same
graphics and layout if Allan can tweak his script a bit.
`ja` is used for the translation. Except for a `_read_me.mdown` file,
the directory will have the same file names. My plan is to translate
the all contents quickly but roughly, and polish the translation
later on. At the moment, there's no way to *compile* a book from the
files. (Note: I haven't even translated 5% of the Manual yet.)
**Caution**
TextMate doesn't support CJK at this moment. Users including those
who use [Fake CJK Support](http://macromates.com/blog/archives/
2006/11/09/faking-cjk-support/) are encouraged *not* to open files
other than `_read_me` file in the directory with TextMate. TextMate
or the entire system may hang. You may be able to open, but
converting the Markdown to HTML may also be a cause of this hang.
From my personal experience, handling lots of CJK text prones to
this issue.
Since I can't find anyone else who is using TextMate with a large set
of Japanese text, the problem may be personal. But for now, my
suggestion is that you not use TextMate to open the files. I get a
few emails saying I'm putting virus, but .mdown files are just plain
text files.
Takaaki
--
Takaaki Kato
http://samuraicoder.net
I'm having a problem running the default task with RakeMate. Rake reports
an error saying that '(default task)' is not a valid task. I worked around
the problem by converting the 'task' variable returned by TextMate::
UI.request_item to a string on line 58 of rake_mate.rb:
task = task.to_s
Apparently request_item is return an Array, so 'task == DEFAULT_TASK'
returns false. Converting task to a string fixes it. I'm using TextMate
1383, which is the latest cutting edge I believe.
Steve
I've been using CSSEdit for the last few days, and it's got a really
nice interface. There is a left-hand pane which is the equivalent of
the popup menu for functions in Textmate. And crucially, there is a
live search box at the top which filters that pane, so you start
typing, say 'news', and it shows all selectors with a class or id
containing that word.
I personally think that would be a great feature for Textmate to have,
perhaps in a drawer on the other side from the Projects drawer. The
popup menu is pretty unwieldy (IMHO) with big documents.
---
Bruno
Hello all,
I'm working on a command that generates some functions for a set of
variables, and I'd like to print out the result in line with the text
that is selected. Is there any really clean way to do this that I'm
not aware of? I need to get the tab indentation of one of the
selected lines of text.
Thanks,
Michael
Dear All,
I have a strange situation wherein the output of a command appears
properly if I select "Show as HTML", but disappears if I select
"Create New Document" (i.e., a blank file appears). Why does this
happen?
Here is the full story:
I wanted to modify the subversion Diff commands to use wdiff instead
of subversions built-in capacities. I added an enviornment variable
called "TM_SVN_DIFF_CMD", with a value "wdiff_svn_wrapper.sh".
"wdiff_svn_wrapper.sh" is simply a wrapper script that calls "wdiff
$6 $7". I do this in order to get read of the numerous options that
subversion attaches, and retain only the file names.
If I then use the commands "Diff Revisions..." or "Diff With
Revision..." everything works perfectly: I get the appropriate
comparison between the appropriate revision. If I use "Diff With
Newest (Head)" or "Diff With Working Copy (Base)", etc., I get the
appropriate output if I select "Show as HTML" for the output, but a
blank document if I select "Create New Document" as output. What can
be happening?
Thanks,
Zvi