Proportional Tabs
Uncomment debug output
When developing for the web many developers tend to use the basic method of echoing out their debug messages and variables. However, setting these debug messages on and off is a tedious task. So when I comment out my debug messages I often use a given syntax (// Debug: my debug message for an example) in PHP so that I later on can search for // Debug: and uncomment these lines.
But I was thinking that since Textmate has knowledge of how comments are used in the different languages that it could use such a syntax that becomes invisible for the eye, but available for Textmate to, with a simple click, turn on and off.
This would clearly boost productivity when developers have hundreds of debug messages to maintain.
Show invisible characters through selection
I find one particular "Pages"-feature very useful: Automatical display of invisible characters in selected text; whenever a passage is selcted (highlighted), the contained invisibles become visible. Not only obviates this the "Show invisibles"-toggle but makes checking for tabs/spaces/returns etc. blindingly fast and intuitive.
Intellisense/AutoCompletion
I would absolutely LOVE to see true intellisense/autocompletion (without having to use Esc or Alt+Esc) in TextMate. This would be a feature you would need an on/off switch for because not everyone would want it. Could you let us know if this is something that is coming in TM2?
Keep up the awesome work!
-- Scott
Ditto. This is the ONLY reason why I still use SubEthaEdit for Python programming.
-- Tiago
Multiple words selection
the 'e' editor for Windows allows selection of multiple words, regardless of their location in a file, and editing them in place simultaneously. This is really cool feature and is missing in TextMate.
-- Martin
Seconded. I really like the multiple words edit, and i think TextMate should have it
-- Andronicus
I created a tciket for this feature: http://macromates.com/ticket/show?ticket_id=4AC5352B
--Hendrik
Smart Soft/Hard tab guessing'
It would be nice if, when opening a file, TM could adjust itself to whether it uses hard/soft tabs and how big the tabs are by looking at said file. that is, if I open a file using hard tabs, adjust automatically to use hard tabs. If its using soft tabs of 8 spaces, adjust to do that same thing.
Of course I realize thats not what everyone would like, but you could always add the ability to toggle it in the prefs, say a checkbox "Adjust tab settings when opening file" that would be unchecked by default.
Full Screen Editing
I'd love to have the ability to shift into a full screen mode for editing (to get rid of distractions—think Writeroom [http://hogbaysoftware.com/projects/writeroom]), especially if it contained all of the file group stuff.
--Marcus
I second it. The "Edit in Writeroom" input manager actually implements this functionality and can be used from the Bundle Editor, but this menu option is greyed out when in textedit window. This provides a useful getaway for those times when you just want to focus on putting your thoughts in text.
--Girish
Go to symbol (all files)...
It would be great to have the "Go to Symbol..."-command over all files in a project, too.
-- nils
Code Focus
I would like to be able to have all text not in the current method I am editing to appear in a dimmer colour scheme. I feel that would allow a user for focus more on the task at hand rather than unrelated code. This may be very useful for Rails developers who have many short methods in their source code.
--Marc Argent
Unlooseable Undo
You know how if you type some text, undo a whole bunch and then type some more, you loose the bunch of text that you just undid. It would be nice if there was a mechanism where you could do recover it. Somewhat like emacs.
Repeat Macros
I'd like to see the ability to replay a macro multiple times, either by bringing up an optional dialog when replaying macros, or having a key binding to specify the number of repetions (like Emacs' C-U). I just wrote a macro to clean up a data file and had to Cmd-Shift-R 470 times!
-- Penny
Seconded. You can just hold down the key command, but that often wreaks havoc when you get to the end of the file. I often find that recording a macro is faster than thinking about a regular expression, but they're hard to use on big documents.
-- jibberia
Option to disable em-space
The worst typo I make is press option-space occasionally, which creeps up as hard to find “Illegal character” compile errors. This is probably a job for a macro, but my macro-fu wasn't up to it.
-- Mikko Lehtonen
Free Ctrl-H for editing
Ctrl-H is used for "Help" (or similar) in a dozen or so bundles. This makes it very hard to use it for what it is traditionally used for: Backspace. By default Ctrl-H works as Backspace in Cocoa and even in Carbon applications. Especially on notebooks with no dedicated Backspace key this is very useful.
I've finally managed to replace ^H with F1 in all bundles but this was quite a bit of work. Would be nice if TextMate would leave it alone by default.
-- joh
Comment hiding/folding
I'd like to see a way to hide or fold comments in source code.
-- Alistair Holt
"use vim within textmate"
as many suggestion suggested, it would be great if we could use vim in textmate, maybe just add one control button that we can switch to a vim mode in textmate; - actually just use a terminal within textmate? ... vim is great to edit pages of several screen long to me, but seems that I really like many other feasures of textmate provide in addition.
-- isaac pei
Reverse Transpose It would be nice to have a command in Text→Convert that does the opposite of what "Transpose" does. It can be done for two single characters with a macro, but I think it would be somewhat more difficult with selections across lines and so on...
-- Jonas Due Vesterheden
This request is confusing - what are you trying to achieve? Something like emacs M-t, which transposes words instead of letters?
Improve "Go to Line..." Make it possible to type something like 20,15 in the "Go to Line..." dialog in order to go to line 20, column 15. That would be very useful when debugging lexers/parsers on sample files.
-- Jonas Due Vesterheden
Highlight Matching Variables/tokens/etc One feature I didn't notice I rely on so much in Eclipse is its context-sensitive highlighting. If the cursor is in a variable or function/class/etc name, it will highlight all instances of that thing in the current document.
Also, in this vein, a command to "go to the first mention of this string" would be nice too - but that could be done fairly easily in the bundle editor, methinks.
While I would LOVE this feature, it's *really* hard for a general-purpose text editor to get right, given complex scoping rules and whatnot.
-- jibberia
Proportional Tabs I just saw this linked from Joel Spolsky's blog: http://nickgravgaard.com/elastictabstops/ . It's a suggestion to improve the behavior of tabs in text documents, by making tab characters acts as delimeters between cells, rather than a "move-the-cursor-to-a-multiple-of-x-spaces" key.
TextMate already has great support for hard and soft tabs, and I think that supporting this kind of tab in TextMate would be a killer feature, and simplify many lives greatly. (The link above even includes simple Java code to implement the tab algorithm.)
Anyone else interested in this? -Devin Chalmers
I am! The demo Java app is very cool. -Daniel Lyons
I was a devoted user of Vantage/MacSink right up to the moment OSX stopped supporting OS9 backward-compatibility on my MacBook. One of the many features which made it indispensible to me was its ability to manipulate columns in textual data. That is, if one had text in the format
characters <tab> characters <tab> characters <cr> characters <tab> characters <tab> characters <cr>
one could use menu commands to move the second column to the left of the first column, cut copy and paste by columns, et cetera. There was also conversion between space-delimited and tab-delimited columns. And very good wildcard support in both target and replacement values in search-and-replace. But that's another story. Please liberate me from having to switch back and forth between Textmate and Excel (which can only handle 65536 lines, anyway)!
Thanks,
-Bill Woodcock
I take sometime some parts of code of a project to put in a new one, as I don't have a very big screen I have to passe many times from one project to an other and the risk is high to make unintended modifications in the wrong file. It would be a great improvement if I could open a whole project or singles files as read-only, with a different background color.
Denis
"Edit each Line" should function properly. Ticketsystem won´t take my bug so i post it here:
Here´s the file i wanted to edit (Just copypaste it in new textmate document and you´ll see). I wanted to remove all the "<?=$fb_prefix?>" parts. For that i think the Edit each Line- Feature would be suitable.
What did i do? Selected all the lines containing the snippet i wanted to remove, activated "Edit each Line", then put mousecoursor to the right point in the first line and then i started pressing the "backwards-delete" key.
What was expected? Removal of all the occurences of "<?=$fb_prefix?>" in all selected Lines.
What happened instead? In every line something was deleted - b u t - not the snippet (even though it had the same position in each line) (i put a result of it in the end of this message).
Original File:
<ul id="navlist"> <li><a href="<?=$fb_prefix?>index.php" id="indexnav">Wir über Uns</a></li> <li><a href="<?=$fb_prefix?>partnerprogramme.php" id="partnernav">Partnerprogramme</a></li> <li><a href="<?=$fb_prefix?>produktportfolio.php" id="prodportnav">Produkt Portfolio</a></li> <li><a href="<?=$fb_prefix?>marketing.php" id="marknav">Marketing</a></li> <li><a href="<?=$fb_prefix?>impressum.php" id="impressumnav">Impressum</a></li> <li><a href="<?=$fb_prefix?>anmeldeformular.php" id="anmeldnav">Anmeldeformular</a></li> <li><a href="<?=$fb_prefix?>../standard/feedback.php">Feedback</a></li> <li><a href="login.html" onclick="popUp(this.href); return false;" id="loginnav"><b>Login</b></a></li> </ul>
Result of described action above (pressing forw del several times):
<ul id="navlist"> <li><a href="fb_prefix?>index.php" id="indexnav">Wir über Uns</a></li> <li><a href="<?=$fb_prefiartnerprogramme.php" id="partnernav">Partnerprogramme</a></li> <li><a href="<?=$fb_prefix?duktportfolio.php" id="prodportnav">Produkt Portfolio</a></li> <li><a h"<?=$fb_prefix?>marketing.php" id="marknav">Marketing</a></li> <li><a href="fb_prefix?>impressum.php" id="impressumnav">Impressum</a></li> <li><a href="<?=$fb_pr?>anmeldeformular.php" id="anmeldnav">Anmeldeformular</a></li> <li><ef="<?=$fb_prefix?>../standard/feedback.php">Feedback</a></li> <li><a href="login.html" onclick="popUp(this.href); return false;" id="loginnav"><b>Login</b></a></li> </ul>
Extra Space at the Bottom Textmate REALLY needs to add some extra space to the bottom of a document or at least add a preference for it. I'm sick of my neck hurting as I reach the bottom of the available screen space. And fix the damn line numbers.
Comment folding especially for DOCComments. I have classes with lenghty documentation for doxygen.
Filenames for Autocompletion
It would be very nice to have all the filenames which are currently associated with the project (all the files in the project-drawer) available for autocompletion via ESC.
=#ExtremeCandy#= would be if being inside an include("") would trigger not only the insertion of the filename but also the path to that file relative to the current one.
(The latter would be incredibly useful since - having multiple folders from possibly totally different "levels" added to the project - the project drawer does not give any insight to questions like "how many times to i need to walk upwards to get to this file?hrmm..". Right now i have to switch to finder to complete tasks like that) (^-^)
Arnski
I figured out how to solve my problem (through the bundle editor), so you can now ignore my suggestion. ~David Dennis
- For those of us who write both code and prose, it would be very nice if there was a full-screen mode for getting very intimate with your text, sans interface. Visually blocking out the other apps is a great technique for maintaining focus. Ideally it would still allow all the same commands, like the infinitely important word count via show statistics. ~Phillip
- Regex Syntax Highlighting in Find/Replace (while searching with regex) --David
- Nested Tab Triggers When hitting tab to go between tabstops in a snippet, you aren't able to use another tab triggered-snippet at the current stop. This would be useful for example, in LaTeX if you want to add an equation containing the ratio of integrals, and you have a \frac snippet and a \int snippet, both using tab triggers. Not sure of an obvious mechanism for enabling this, maybe something like ctrl-tab? Has someone mentioned this already? -- Jim Bagrow
- I really need this, too. Maybe giving tab triggered new snippets higher preference over the nth jump in another snippet that is already inserted? -- Daniel
- Overloaded snippets / multi-snippets. I often find myself generating a dozen or more snippets, all with the same tab trigger, so I can get a popup menu to select from. Allan suggested doing just this to get a menu of greek letters in LaTeX. It's really cumbersome to create a lot of these snippets all at once. Would it be useful to come up with some syntax for defining all the separate snippets in one dialog? I imagine some kind of switch statement or other way to list menu_name => snippet_text, all having the same activation and scope. Something to generate that menu all at once would be handy! What do you guys think? -- Jim Bagrow
- Please bring back the replace in selection option in find and replace, this is something I used often. -- David
- When you hold down shift in the find dialog, it turns the 'replace all' button into a 'replace in selection' button. Is this what you mean? -- Jim Bagrow
- Thats exactly what I was looking for. Although IMHO the checkbox option was a better solution, because it let you perform all of the actions to selected text. --David
- Thats exactly what I was looking for. Although IMHO the checkbox option was a better solution, because it let you perform all of the actions to selected text. --David
- When you hold down shift in the find dialog, it turns the 'replace all' button into a 'replace in selection' button. Is this what you mean? -- Jim Bagrow
- Vim key bindings have been mentioned before, but the thing I miss most is the option to autoclose/open folds. I love the way you can set vim to close a fold as the cursor leaves it - very tidy and makes managing text files in an outliner style an absolute snap. Any chance of this coming to Textmate? --nigeldg
- Here is a good idea, but you better patent it before someone else does. :) Many times I want to jump to a location in a document that I can easily recognize by the document structure. But the document is too large to fit in a single window. An apple like expose feature in the text window would be a cool idea to let me see the complete file in the visible window and when I click on a location in the expose view it jumps to that location. -- Jim F
- Gutter shouldn't move when scrolling right/left (bug?)
- Window Splitting support, please! please!
- Bindinds for commenting selection.
- On windows I've binded ultraedit to comment every line of a selection with ctrl-. and uncomment with ctrl-, not sure if those are good choices on mac, but similiar bindings would be helpful. -- scoopr
This exists now in the "Source" bundle: ⌘/ will toggle comments for the selected text. -- Brad Choate
- On windows I've binded ultraedit to comment every line of a selection with ctrl-. and uncomment with ctrl-, not sure if those are good choices on mac, but similiar bindings would be helpful. -- scoopr
- The ability to use scopes for filtering the target of a find/replace. The use case here is for search/replace in an HTML document where you don't want to affect any tags or attribute elements within those tags. -- Brad Choate
- Extending Brad's suggestion above it would be great to be able to scope a project search. For example to be able to search for a regular expression across only html files in your project. A specific use case: I am searching a current project for {(?!(include|literal|/literal)) to find smarty tags so I can evaluate how tags have been used up to this point in order to figure out how to simplify the most common ones. This search also matches css declarations which is a bit irritating. -- UltraBob
- This is really needed. Especially for large projects where you have thousands of files to manage. Even if you can't specify the file extension, if you could target the search at a particular sub-directory of the project it would make it more manageable. -- Mike C.
- Extending Brad's suggestion above it would be great to be able to scope a project search. For example to be able to search for a regular expression across only html files in your project. A specific use case: I am searching a current project for {(?!(include|literal|/literal)) to find smarty tags so I can evaluate how tags have been used up to this point in order to figure out how to simplify the most common ones. This search also matches css declarations which is a bit irritating. -- UltraBob
- The ability to undo while the find/replace dialogue is foregrounded would be a great help for when you aren't sure of your regex.
- Two jEdit functions that make life easier :)
- Pressing the Home button (or ⌘+left-arrow) takes you to the first non-space character, and pressing twice to the "real" beginning of the line. This is useful when you have identation, and you actually need to get to the beginning of the text and not the line (most of the times I believe this is true). e.g:
if (true) {
do something
}
Pressing Home would put the cursor on "d". - When putting the cursor behind any kind of a block character (round, curly & square brackets) jEdit "selects" the closing partner, so you can see where it is. Very useful when you have a few blocks inside each other. It also puts a line in the gutter which starts & ends with the block.
-- yoav
- Pressing the Home button (or ⌘+left-arrow) takes you to the first non-space character, and pressing twice to the "real" beginning of the line. This is useful when you have identation, and you actually need to get to the beginning of the text and not the line (most of the times I believe this is true). e.g:
- Tab and Shift-Tab should indent/unindent selection. Current cmd+] cmd+[ are IMHO not intuitive and non-standard compared to other editors.
--kL
⌘[ and ⌘] are the standard Apple keys. But as mentioned elsewhere, you can also use ⌥⇥ and ⌥⇤
-- Allan Odgaard
I would second this aswell. Is there no way to even configure this? -- scoopr
I would third this - this would be a great config option - tab to indent a selection makes more sense - apple standard or not. -- Graham MacDonald
Another one. Coming from SlickEdit, which has this bindig too. On the german keyboard the Apple style is arkward.
--Udo Willers
Me too. Hoping on the bandwagon. Is it possible to write a snippet to commit this action?
--Jon Wherhol
The default keybinding doesnt even work on a german keyboard. Please make this (or all) keybindings configurable. Or try to map the keybindings to something sensible for non-us keyboards.
-- urandom
- Foreign Language Support
What is a "foreign language"? Foreign coming from a monolingual American? When I log in to Mac OS X for the first time, I get to choose from a number of languages as my default, and can input and output in several dozen (hundred?) languages. I'm requesting including "libiconv" so that Textmate can seamlessly read and write regardless of encoding, but I am not going to write requesting that CJK text be supported - This is a BUG. Don't let someone tell you different.
--Ryan
I would like to see native support for inputting CJK (Chinese Japanese Korean) languages inline. Changing the input method to CJK causes the input to freeze and the characters displayed are jumbled and scrunched as to be almost unreadable. There are many people in Japan who want this tool.
--Sam
Another vote for CJK support.
--Shun
A third vote for CJK support. Yee haw!
--Martin
A fourth vote for CJK support. TextMate becomes lately really useless to me because of the missing CJK support.
--Niels
And another vote for CJK support, double-width characters and kotoeri input method. I know it's not trivial, and I'm fine with waiting, but I have been hesitating for a long while before buying textmate, because of that issue, and I seriously hope that the fix will come, because switching to other apps to edit japanese text is not something I want to do forever...
--olivier
Absolutely necessary to have CJK support. Right now it's impossible to code japanese characters in my HTML pages. (I'm forced to switch between bbedit and textmate to have proper editing, which is kind of painful).
--karl
I also have to resort to BBEdit for Japanese text editing. Lack of CJK support is my only problem with TextMate, but it's a serious shortcoming. Hence another vote, in the hope turning "eventually" into "soon"...
--Carsten
I want textmate to support Chinese text! I would buy a license if he can do it, I guess it's not hard to do and I am ready to test that feature!
--Maxime
CJK support is a prerequisite for me to use this lovely piece of software. Another vote for this feature for me. Please don't leave this for the extended long term!!!
--Lars
Simply having TM not lock up when trying to input Japanese characters would be a huge plus. I don't know how often I switched to another application, typed something in Japanese, returned to TM, forgot that I was still in Kotoeri mode and had TM freeze up on me, forcing me to close the app and reopen all my windows. Just a simple fix for that would be great, true CJK support can wait...
--David
This is non-trivial and thus not around the corner, but hopefully TextMate will eventually support different input modes and international text rendering.
-- Allan Odgaard
* Please add drag and drop support for images in CSS. Inserting "url(directory/image.jpg) width:10px; height:10px;" at the location of drag would do I think. (i second that!)
This is what drag commands are for. Look e.g. at the HTML image drag command (bundle editor), and if you make one for CSS, please submit it so that it can be included in the default CSS bundle.
-- Allan Odgaard
Not sure how to do the whole submit thing but here's the code I've come up with:
File Types: png, jpeg, jpg, gif
Command(s):img="$TM_DROPPED_FILE"
echo "background-image: url('$img');"
sips -g pixelWidth -g pixelHeight "$img" \
| awk '/pixelWidth/ { printf("width: %d;\n", $2) }
/pixelHeight/ { printf("height: %d;", $2) }'
Output: Insert as Snippet
Scope Selector: source.css
-- Ben Perry
* Also character and word counts would be nice in the status bar.
-- Shmuel
⌃⇧N will give this information. It is not in the status bar because the information is not available without scanning the entire document, it may appear in a later version.
-- Allan Odgaard
- Great Text-Editor. Got the DemoVersion since an Hour and I'm already fallin in love with it. What I'm still missing is the possibility of softTabs and defining the amount of spaces per Tab (you're talking about View->Tab Size in the FAQs - I can't find that) and FTP from within. The Bracket issue is another thing. I really enjoy it the way it works in JEdit.
The tab size (and soft tabs) is now in the status bar, I've updated the FAQ.
-- Allan Odgaard - I have a request which I figure would be a minor but nice touch: when syntax hilighting calls for italicizing (like asterisks in Markdown mode), the text in the editor is simply obliqued. It would be nice if before that, Markdown checked to see if there is already an italic face attached to the current font. – Z. D. Smith
The systems text rendering functions should do this, but a bug unfortunately prevents it with some fonts. This problem only seems to be with ATSUI, which is why not all applications are affected.
-- Allan Odgaard - I have some small suggestions, they may be silly (or already exist?):
- I would like the escape-completion of words to stop in the event of a tie, like typical tab-completion. I believe that, currently, the nearest word that matches is inserted. Maybe have the whole word flash for a second, reminding you to add the letter(s) needed to break the tie.
- In regards to the awesome column typing. I often find myself with a column of words that are identical except for a number which is incremented by one on each row ($array1, $array2, $array3, etc). It would be neat if you were able to type an integer with a modifier key, option-5 for example, and that would insert 5 in the first row, 6 in the second row, 7 in the third row, etc... instead of just putting 5 in all the rows. Of course, the modifier should only work when in column typing mode. This seems like a cool idea to me at least. I would definitely find it useful.
- In a lot of text editors, if you double-click near a brace, it will flash over ALL the text inside that brace. I use this all the time to see if I've missed a closing brace. Would be a nice feature to have. I know when you arrow past a brace now, the matching brace flashes too, which is very helpful, but I would like (at least the option) of having all enclosed text flash.
- In most every editor/IDE I've used, selecting text and then hitting the back arrow will place the cursor at the beginning of your selection. Likewise, hitting the forward arrow, places the cursor at the end of the selection. This is a very handy way to quickly place the cursor at the beginning or end of a document, as well (select-all, then right/left arrow).
Good on you, son. That's exactly the way TextMate works. Do you have a question or something? Oh, I see. It works that way except in the case of select-all. I wonder if that's a bug or a feature.
Yes, that's a feature, sort of like “undo” for doing selections. As for moving to the begin/end of the document, I've bound home/end to that, but with the default key bindings, command arrow up/down does the same.
-- Allan Odgaard
Try select all, then up or down arrow
- A useful feature I'd love to see (taken from SubEthaEdit) would be the ability to toggle show(highlight)/hide changes. I love to be able to look at a section of code and see where I've made changes during a session of editing.
It's however non-trivial to add, but 1.3 or later will introduce dynamic scopes where I also plan to allow them to markup things like this.
-- Allan Odgaard - I think one of the most valuable features you could possibly add would be a VI mode. Doesn't have to implement all the features of VI but some small set would be nice. Mice are slow.
TextMate is modeless, VI works because it is not. I don't know why you mention that mice are slow, I can do basically everything in TM from the keyboard.
-- Allan Odgaard - Click on line number in gutter should select entire line (style of many Windows editors)
- Spell check language independence! My Mac OS X login account runs in Spanish. However, I code in English. If I have "check spell as I type" turned on, all correctly spelled English words are highlighted as errors. So I go to Edit:Spelling and select English as my language. Seems to only work for running the current spell-check, not for selecting a different language for "check spell as I type." I assume you're using built-in OS X APIs, but is there no way to make the "check spelling as I type" option applicable to whatever language the user chooses, rather than relying on the login account's base language? Thanks for all your work.
I'm not sure I understand this. If I open the spelling panel, change language to Svenska (in lack of Danish :) ), quit TextMate and start it again, it then uses Svenska (Swedish) to spell check files. I.e. it is sticky. Does that not work for you?
-- Allan Odgaard - Is there a way to add a function to match Braces and Brackets? BBEdit had Balance Character, and also in jEdit you can make jRdit look for the corresponding Brace or Bracket. I often copy/paste to jEdit to use this functionality.... -- Joost
- I second this. The momentary highlighting of the matching brace is useless if the braced section does not fit on the screen.
The closest is currently the Edit → Select → Block (⇧⌘B) which will select the every inside the braces.
-- Allan Odgaard
Actually, that is perfect. I hadn't noticed that command before. Thanks!
\\- I don't like selection, I prefer simple "Jump to matching brace" function.
- I second this. The momentary highlighting of the matching brace is useless if the braced section does not fit on the screen.
- Make the incremental search bar more like FireFox's:

- Make "font-size" absolute and relative values in CSS appear enlighted. http://www.w3.org/TR/REC-CSS2/fonts.html#propdef-font-size. Thanks.
--Jo Campos
Improving the indenting mechanism
I would very much like to see an updated indenting mechanism, for example in TextMate 2.0. Is this a planned feature? The current mechanism is probably insufficient for advanced indenting tasks like aligning parameters in a multi-line function call. I think it is an important feature in a programming editor, because it greatly improves readability in messy situations like nested function calls. This is probably not a quick change, but I'd like to know if it is a priority before deciding to buy TextMate.
-- Tuomas Launiainen
It would seem others agree with me:
- Is there anyway to get emacstyle indenting? Where, in certain circumstances, the amount indented isn't based on the number of spaces and instead aligns itself according to the line above it? For example (in php):
$a = array('one',
'two',
'three');
-- Zack Charter
- I'd like to second this. I find multi-line arguments are much more readable when aligned with each other. In general, I would love an emacs-style indentation mode that could line-up arguments and properly indent lines whenever tab is hit.
- I'd like to 'third' this. I love textmate but multi-line arguments really should line up at the parenthesis, either when return is hit on the previous line or when tab is hit on the current line.
- I'd like to 'fourth' it. There are a few features that make emacs the best, and TextMate has most of them. Sophisticated, intelligent indenting, unfortunately, it lacks. This probably needs to be customizable by bundles as well, not sure if it is now or not.
- fifth - I really miss my indents not lining up 'properly' on multi-line function definitions. -- Graham MacDonald
- Add another voice to this. Flexable, on-the-fly, indentation is what keeps me in emacs. If TextMate could do it, I'd never look back.
- seventh'd - Seriously. I will not pay for TextMate until this feature is implemented.
- How about text autocompletion via support for BBAutoComplete ( http://c-command.com/bbautocomplete/ )? Or maybe somebody knows how to make that work now?
TextMate already has a similar feature, press escape to get a completion based on context. You can also overload that feature to give completions based on other criteria.
-- Allan Odgaard - Autocompletion is something very usefull and time saving. Typing an HTML page with a good auto-complete feature is 50% faster (you type only 30% of the code). The ergonomy of the function his is a lot of work and create the definitions for each language is a huge task but definitively worth it.
All in good time…
-- Allan Odgaard - Support for Eclipse style multiline comment editing would be cool, where the editor automatically inserts an asterisk in front of a new line when pressing enter between /* */ comment delimiters. Especially useful for making clean looking JavaDoc comments.
You can set it up to do that yourself: Make a snippet that inserts the newline plus asterisk, set the key equivalent to enter and the scope to “comment.block”, and volla, enter will now insert the asterisk when pressing the key inside comment blocks!
-- Allan Odgaard
Beautiful, thanks -- Douglas - this page makes no sens... how come you are not using Trac or Bugzilla ?
I really do not like Bugzilla, and haven't gotten around to requesting that my ISP install Trac for me (doesn't seem to be something I can do on my own).
-- Allan Odgaard - Consider Mantis then -- PHP based, lightweight, but still with handy things like RSS feeds. I think Trac is the best if you can swing it.
I went with FogBugz (and later wrote my own to minimize the amount of work related to dealing with tickets)
-- Allan Odgaard
- I would love a feature where a block of code with #if 0 .... #endif around it would be colored like a comment.
Update: this is native behavior for 1.1b13+ and even works for #if 01 … #else … #end etc.
Assuming you're using 1.1b12 or later, select View -> Languages -> Edit Languages…, unfold the C bundle and for the C language enter this rule:{ name = "comment.block.preprocessor.c";begin = "^\\s*#\\s*if\\s*0\\s*$";end = "^\\s*#\\s*(else|endif)\\s*$";},
Though it won't work for the case of#if 01 … #else … #endif(i.e. coloring the else-part as a comment), and there might be problems with nesting (and currently the begin/end keywords are also included in the comment — I've added the rule to my own C language, so I may update it later (and include it in the “official” language definition if it works out well).
-- Allan Odgaard - Where do I report bugs?
I think I found a bug in the snippet code,
if you make a snippet
${1:first}${2:second}$0
when you change first, and jumps to the next field (Tab) ,
second is supposed to be selected, but instead the whole text is selected.
- Sune Simonsen
That'd be bugs at this domain. I'm however aware of this current limitaiton with snippets. You need at least one character between placeholders. The problem is emphasized if e.g. you insert the above snippet, press delete, tab, delete. Then you have 3 placeholders at the exact same position in the text. With the proper bookkeeping I hope to be able to solve it though.
-- Allan Odgaard
See BugReporting for more detail on reporting bugs.
- Make the code snippets work only in the mode they where created for, like jedit's abbreviations.
Version 1.1b6 and onward has scopes for this.
-- Allan Odgaard - Highlight all types of brackets (() [] {}) like XEmacs does. By default it uses kinda greenish background, and draws it between matching brackets. Very useful feature.
- XML autocompletion from an XML schema (XSD): So far the only app that can do this well for Mac OS is OxygenXML. It is a java application and has a terrible interface but the functionality of autocompleting is done very well. Based on contextually where the cursor is, tags and attributes are suggested that fit within the rules layed out in the schema. If a native app like Textmate took on XML editing, this would set it apart from all others and get high adoption from the growing community of XML/XSLT developers that prefer the Mac OS.
- Snapshot save: This would be a temporary copy of the file stored in memory. The concept being you make a snapshot, make edits, save the file, and if you don't want the changes you can revert to the snapshot.
wouldn't just select all > copy > new document > paste do the same thing?
-> Yes and no. The above method is how I do it now. It works, but presents a few ugly qualities: the new document does not have the proper syntax highlighting, the title is Untitled and there is no association with the original. The snap shot save would be fewer steps and have the above qualities. This is by no means a killer feature, but it would be useful to myself, and others. Photoshop uses this feature. - Word completion should look for completion candidates in all open buffers, not just the current buffer. (Better yet, a ctags tag file.)
See e.g. this letter for how to change the default completion command (to search more buffers).
-- Allan Odgaard - The Shift Right / Shift Left commands should apply to the entirety of the lines, even if some lines are only partially selected. Current behaviour is that only the selected text is shifted, which seems very nonstandard (jEdit, BBEdit, IntelliJ, and Eclipse all shift the entirety of every selected line, not just the selected portions).
- I second this request -- Ben Linton
- Thirded. This is a de facto standard.
- It may appear in a future version, if you want it now, use Start Macro Recording, then do Edit -> Select -> Line (extends the selection to entire lines) and shift left/right. Stop Macro Recording and save the macro, giving it the key equivalent of shift left/right.
-- Allan Odgaard
- Home/End keys move the cursor to the beginning/end of lines instead of the view to the beginning/end of the document. Holding the Apple Key while pressing Home/End will move the cursor to the beginning/end of the document.
TextMate (for the most part) uses the standard OS key bindings. You can change the behavior for home/end either for TextMate or all Cocoa applications if you desire the non-OS X behavior for home/end (see Help / Key Bindings)
Update: also see this blog entry for instructions.
-- Allan Odgaard - Clicking on a line number (on the left) will select the whole line (even if it is wrapped to more than one line)
- How about a simple sort command that will sort all lines in a current buffer? Could get fancy with some kind of sort by startColum to endColumn but a general sort would be handy. -gcoller (forget it, I found it under "filter through command"). Maybe just add some keywords to the help file? Search on sort returns nothing in current help.
- Make Hex values in CSS appear with the color they represent as their background color. I prefer to edit CSS in a text editor, the only thing that sucks about it is that the color you want to change is hard to find. Showing the colors for HEX values somehow would be helpful. -d723
Since TextMate is a general purpose text editor, chances for this feature are slim.
-- Allan Odgaard
But couldn't this and other creative applications conceivably be addressed by allowing syntax coloring bundles to be dynamic (i.e. execute code, rather than simply define regular expressions and static colors)? Not necessarily a great idea, but at least interesting to consider.
--jrk
Sort of, yes -- what could be done is that in beta 6 styles are given to language elements based on style sheets, and if only these style sheets could access the captures of the matches, then the feature would sort of be there (would need a way to convert the color (i.e. capture) to the proper format) -- and my goal with TM is definitely to expose as much as possible in a way that makes it easy for the user to change behavior (i.e. innovate :) ) -- but for now it's a lot of work to make a “general” system that's really just tailored to one use-case (though I do actually have a few other things in mind), so I'll give this some more thought before I open up the syntax system furter (than what I've done for beta 6).
-- Allan Odgaard - Please add ability to automatically indent a selection or the whole buffer. I guess this will require indentation rules to be specified for each supported language. Take a look at what Eclipse offers in this area. -- tomek
Yes, this does require special rules for each and every language, and each and every language have dozen of different coding styles, so this is certainly not a simple thing to add. I'd suggest you instead find a code beautifier for your language and setup a command to pipe document/selection through that command.
-- Allan Odgaard
True, however, I would agree with tomek - this is the main thing that I like about xcode over textmate. i haven't played too much with xcode and am still evaluating textmate (under a deadline and just switched back to freelancing so i can now use my mac again for development (amen and hallelujah)). So far I really dig textmate, but in the cases where i copy the code from a super class to another class that extends it (for the purposes of overriding the super class function), i often have to go back through and manually reset all the tabbing. I understand that it would be quite an undertaking, but from my view, this is the main reasoning for making such a request. Would this be something that could be built into the language definition perhaps?
-- riaiN (new here) - Please allow to save a UTF-8/UTF-16 file either with BOM or without BOM. BOM header can cause trouble for Java or Ruby IO routine. -- Anthony
Does the presence of a BOM in UTF-16 cause problems for Ruby or Java? Could you be specific about this problem (since everyone should expect to find a BOM in an UTF-16 file)?
-- Allan Odgaard
''In PHP the BOM cause trouble as it's the first characters in the file. It will then be sent before any call to session_start() or header() can be sent and thus a session cannot be initialized. -- Martin
- Please allow to select ISO-8859-2 (Latin 2) encoding in file save dialog. We have a lot of old code here, that uses Latin 2 and the change to UTF-8 is not possible. I don't like to use jEdit :)
--Zila
Yes! I join Zila in this request. Latin-2 is used in several countries, so this is not a one-person's fancy.
--Komor - Arrows should move insertion point to end of selection range: In the other editors I just tested (BBEdit, TextEdit, MS Word, AppleWorks, Mail), when a range of characters is selected and an arrow key is pressed, the insertion point jumps to the start (left/up arrow) or end (right/down arrow) of the selection. In TM, it "appears" that the insertion point moves to the approximate location of the cursor. Am I missing something?
I dunno. The standard Mac behavior is exactly how TM behaves on my Mac. Could be your keybindings are messed up somehow. Might wanna send a note to Allan or, probably better, to the mailing list. -- Chris Thomas
this happens to me too sometimes. other times it works right. not really sure what's going on, but it looks like a bug.
If you select word/line/paragraph/all and move caret afterwards, it will preserve the position from before you selected the unit. Otherwise it'll go to the begin/end of the selection. I'm not aware of any bugs in this function.
-- Allan Odgaard
I'd consider that a bug. A selection containing a word is no different than any other kind of selection. It shouldn't matter how the selection was created.
Since I designed it that way, it's not a bug! I don't know if you got from my description that I'm not talking about manually selecting a word etc. but using the “select word” action. The reason I did it this way is if e.g. you hit cmd-A by mistake, your caret position is not lost, or if you select line and move the selection two lines up, you most likely would like the caret to be at the same column position as before you moved the current line up.
-- Allan Odgaard
By design or not, that Isn't How It's Supposed To Work :p I can definitely see the value in it though... Could there be two bindable selectors? - selectWord: and selectWordAndKeepPoint: or something. Or the special selection actions could be made undoable. It's like the home/end key behavior - I just expect certain things to behave in a certain way, whether or not there's another way that may make more sense for a programmer's editor.
Look at it this way: losing your insert location when you make a selection is a bug that many other editors have that TextMate doesn't have. --MichaelJohnston - Better folding support for Python: I don't know if this has been addressed elsewhere, but as Python does not use braces for scope, one cannot take advantage of folding. Are there any ways around this?
This should be doable in the system as is, I believe. Lua does not support braces for scope either, so I am using the function -> end elements to determine folding, as well as if () then -> end to determine those portions as well, and it seems to be working ok so far. --Wes Houghton - SmartTyping; it would be great to be able to control how this is entered. For instance, in a C-like syntax, when I type ( i want the ) next to the opening parenthesis, with the caret in between, as it is now. However, it would be really slick to be able to type { and have the closing } appear 2 lines lower, at the same indent, with the caret in between; i.e. actually setting the braces as they will end up once I finish with them. I realise this would require some extra config / preference setup to handle, but it would be a great feature.
If you type a { and then press return, it will end up as you desire. The reason it doesn't do it until return is, that there are situations where you want both brackets on the same line. But if you want to have it done immidiately, you can record the insertion of this sequence as a macro and bind it to the { key.
Update: actually, a snippet with { as key equivalent is probably more appropriate.
-- Allan Odgaard - shift delete = forward delete preference. I tend to edit on my laptop, and I like ot be able to set a preference that using shift-delete removes the character AFTER the prompt, not prior to it. --Wes Houghton
This could probably be the default behavior, since shift-delete is currently unused. Though before it becomes default, you can use Automation / Start Macro Recording to record a forward delete and save that macro with shift-delete as key equivalent.
Come to think of it, you just need to insert this line in your ~/Library/KeyBindings/DefaultKeyBinding.dict file to get the behavior system-wide:
"$\U007F" = "deleteForward:";
-- Allan Odgaard
I went with the macro route, as I'm not wild about altering system behaviors when not overly necessary. I probably would have done it, if there was an existing KeyBinding file, but creating it from scratch just crossed that line for me. Much less, how on earth does one learn that $\U007F is equivalent to Shift-Delete? ;-) (Wes)
The name of the file might be misleading, but this file (DefaultKeyBinding.dict) is augmenting the system default keys. I have a dozen keys setup in there. There's a bit more info about it in the TextMate help book. Basically $ means shift, and \U007F is the key code for delete.
-- Allan Odgaard - transparent tag-completion. Tag should be completed by typing '</' (as in TestXSLT) this makes it much more intuitive IMHO and adding this feature shouldn't break the existing tag-completion function.
Well, adding that feature is very hardcoded, and TextMate is a general purpose text editor. But there will be a system for context sensitive completion in the future.
-- Allan Odgaard
Update: See e.g. this ML post for an example macro that closes current tag when typing '</'. - Better search and replace functions, please. The search and replace boxes should be multiline. It would also be great to have the scope changed to include both the file I'm editing as well as a directory, scratch files, open windows, etc.
For the latter, there is Find in Project.
-- Allan Odgaard - Selecting the newline character
- An option for replacing the space when inserting a return at the end of a long line (Vim does this when 'autoindent' is on).
Can you clarify?
I suspect they mean this; you have a long line of text, and move the caret to your chosen break-point. Hitting enter will insert a carriage return. If the first character of the new line is a space, you probably don't want that space in the text any more.
Okay, this could probably be done by a macro that does a conditional regexp replace on the space, and then the return. See e.g. the “Overtype ')'” in the Lisp bundle, which conditionally overtypes the ')' character.
-- Allan Odgaard - Modifying the Indented Paste behavior
- I write Lisp code. Functions apparently become longer than a single page; parenthesis matching does not work in this case. To match parentheses on long blocks, and for other convenient actions, can double click on a parenthesis mark to the matching one?
-- David Tolpin
It's possible to press ⇧⌘B to select the current block.
-- Allan Odgaard - Please bring back the behaviour-menu.
i think the behaviour-menu from the previous versions was a really handy and fast feature. just do 2 clicks and change the current behaviour. i dont want the preference-pane to be removed but for doing fast changes for just one file i find it really handy and better than than always going in the preferences. if not the whole behaviour-menu, so please bring back at least the tab-emulation stuff, this is what mostly annoys me.
-- Torsten Becker - When a line automatically wraps at the edge of the window with soft line wrapping, the second half of the line should be indented one tab beyond the current line. Of course no actual characters should be created, but it would lead to a great deal more visual clarity in situations with excessively long lines.
-- Mike Powell
I'll second that and suggest it as a preference option. It makes wrapped lines much easier to read, IMO. I first noticed this indent behavior in a printout from Visual InterDev (but not on the screen?!); as soon as I saw the indents, I fired off a request to Maarten Hekkelman (way back when) to add the feature to Pepper. He did, and it's one of the few reasons I still use Pepper by default instead of TextMate. You can convert me...
-- St. Chris
I'll third that one. But make where it wraps to configurable. I'm used to TextPad on Windows, which wraps an indented line to the same level as the indent.
-- Dan Barber
And I'll fourth that one. I have Xcode.app set to work this way. That is, the soft-wrapped part indented one level beyond the non-wrapped part of the line.
-- Daniel Ericsson
This is planned for 1.3 (yes, distant future)
-- Allan Odgaard
And I guess I'll fifth that one, since we are at 1.5.x and the feature is still unimplemented (I think?). If it's available could somebody let poor ol' me know where it is? And if not, check out Kate (KDE linux text editor), they do soft wrapping perfectly.
-- James Andres, www.projectopus.com
Another vote for the soft wrap indenting feature, and in particular for making the amount of indentation configurable. It would truly do wonders for document legibility where soft wrapping is used.
-- Michael Lee
And another vote for the soft wrap indenting feature. As most source code editing tools have this feature, a lot of developers do not have their source code hard wrapped. If you have tons of source code that way already, not having a soft wrapping feature that produces reasonably readable output is definitely a show stopper and a (or probably the only) big reason _not_ to switch to TextMate!
-- J. Deepwell
- Add 'wrap lines by character' mode, like SEE has. It's quite useful for writing obj-c with reallyLongMethodNames:andArgumentLists:
- Undo behavior. I would like to see a more standard Undo behavior. Instead of command-z removing the last character typed (which can make it very tedious for extensive undos) having it based on either time or formatting. I'm not sure how the other text editors do it, but they seem to remove chunks at a time.
-- Ben Parzybok
Reply: http://lists.macromates.com/pipermail/textmate/2004-December/002080.html
Wow, it has been *30 months* since Allen's last comment on this subject, and still no traction on this subject. Allen, can you give us any idea when you plan to fix this problem?
As a comment, this is the only thing that is preventing me from using TextMate. I love the whole design, love how it works... but just can't use it with undo this way, it takes too long to change my mind about the three lines I just wrote.
-- Anonymous
This really is a deal breaker for me - I'd love to move away from BBEdit but the one-letter, one-undo mode just feels oddly un-natural. No chance of the feature being bumped up the todo list?
No. I get lots of letters from people stating their various deal-breakers, but development of TextMate is best done by having me plan the work.
-- Allan Odgaard
Another vote for a changed undo-behaviour. The "one undo = one keystroke" behaviour is unnatural and not at all mac-like. An undo should take back all keystrokes until the last delete/paste action, or the last time the insertion mark was moved. This logic is fairly simple, and just the way every other text editor out there behaves
I'm going to have to agree on the Undo behavior. It's a complete deal breaker. TextMate is lamed with the current method.
Wow, I'm throwing in my vote on this too. I looked at TextMate over a year ago and saw the developer's comment above. Looks like it's still doing the single character undo. I would say this is the single most glaring non mac-like feature of textmate and is certainly a deal-breaker for me too. Please please bump the importance of this up on the list. I guess it's back to BBedit again for now :(
Yet another vote on the undo behavior. Doing the undo in chunks is the de-facto standard in the Mac world. Deal breaker for me too.
Just switched from BBEdit after 11 years of use. This is the only thing that is still bothering me after the switch too. Have to throw in my vote as well.
I switched to TextMate and then switched back, entirely because I just couldn't get used to the undo behavior. I'm a 20 year mac user and chunk undo is hardwired into my typing.
I am afraid I must second that too: the undo character by character is really annoying and the reason of my love/hate relationship with TextMate. I rank undo by chunk as my number one requested feature by far.
Hear Hear! This single letter undo thing is driving me nuts. Don't get me wrong, I love TextMate, but just wish I could toggle to chunk undos. That, and select text and drag it to a new location (without the pause).
-- Tolmark
I have to Nth this. Single character undo severely cripples this otherwise fantastic editor. Is there any hint as to when this will be implemented, if ever?
-- Pieter van den Berg
nth + 1 here. This behaviour has finally pushed me to emacs.
-- Aaron Olson
Undo letter by letter is the only thing keeping me from adopting Textmate. Allan's disinterest in changing this is odd since it seems to be a deal-breaker for alot of people.
-- Karl
Another vote for undo-by-chunk. I'm willing to concede that I could probably re-learn my whole text-editing workflow to avoid the need for this usage (for instance: thinking a whole sentence in my head before typing it). And really, who am I to say what Allan should put in his software? But what bugs me so much about this non-feature is that it seems like the purpose of TextMate is to make coding speedier--not more cumbersome. I can't think of one single reason why anyone would prefer the current behavior, unless you know how to code without making any mistakes. ever.
-- Steve
- Be able to fold a block up then highlight and cut/paste it, as a complete chunk, to a new location in the document. Would be handy when wanting to quickly re-arrange functions/subroutines in a file.
Drag & Drop too. mmm... - Multiple selections, by either holding Cmd while selecting or having a selection history a'la The Humane Interface. Following this, simultaneous editing of multiple selections, like columnar editing but possibly at arbitrary points in the document.
--Reid Orsten - Eclipse-like Incremental Find/Search Function - I used it a lot in Eclipse. When you press a shortcut (Apple + J in Eclipse) it changes into incremental-find-mode and just can just start typing the first letters of the search string. They appear in the bottom status bar. As yout type, the first matching line/word appears highlighted in the middle of the screen. Another letters narrow down the match. In the incremental-find-mode you can use the up/down arrow to get the next/previous match. Escape exits this mode.
-- Peter Traskalik
Already there - Ctrl-s
This is a wonderful function, however when I searched for a word, and found a match, I then tried hitting Command+G to go to the next match, and that didn't work. Ctrl-s really should work like a quick version of Command+F.
You can press ctrl-S again to find next (or shift-ctrl-S for previous). As for having the incremental search use the find clipboard, I'm not sure, but probably it makes sense.
-- Allan Odgaard - Search bar at bottom of window should move window to current occurrence of the query, but should highlight "every" instance of that query string in the document, a la emacs - also I have a difficult time finding the highlighted string, so perhaps the color could be made brighter, or user adjustable?
-->I'd like to second the highlight "every" instance request - Vim does it this way too.
-->I'd like to third that. This one the few features that I love in vim and really miss in TextMate.
Also, when using the Find Panel, if you hit the summation button to give the total number of incidences of a string, it would be great if all incidences could be highlighted.
-- StuartWheeler - New File from Template: Right now it appears you can only create a new file from a template if you are in a project. I would like to see the File menu have a new subitem which allows you to create files from templates (html, java, perl, etc), independent of a project.
Yes, this will be fixed real soon now :)
-- Allan Odgaard - Toggle Foldings at level: More levels?
1.1b6 and onward now has 9 levels, enjoy!
-- Allan Odgaard - How about multiple-character smartTypingPairs and highlightPairs? I'm building a Fink Package bundle, and would like to allow '<<' to be used this way...
--Tony Arnold
The input pattern (as an activation method) will allow you to set a (sort of) regular expression that is matched against the input typed by the user, and thus you could match such a sequence and insert proper snippet or similar -- this isn't currently implemented, but I think this will be the solution to this request. For highlight pairs, let me think about that :)
-- Allan Odgaard - XML tag auto-close, just like the auto-closing of paired characters like (), [], and "". -- John Lianoglou
You can record a macro that inserts >, executes the Insert Closing Tag action (from the automation menu), and then move the caret back in front of the <. Save this macro and set key equivalent to >. This I think will give you the behavior you seek. Personally what I do is use the default supplied (HTML) macro on ctrl-space, it takes the word to the left of the caret and turns it into: <word></word>.
-- Allan Odgaard - Tab / Shift-Tab to indent / unindent selected blocks
Use option-tab / shift-option-tab
-- Allan Odgaard- I have LiteSwitch on option-tab, I'd really like just simple Tab / Shift-Tab to indent / unindent, to me that's the logical behaviour.
As stated on this page and a dozen other places, I need tab to overwrite the selection with a tab.
-- Allan Odgaard
- I have LiteSwitch on option-tab, I'd really like just simple Tab / Shift-Tab to indent / unindent, to me that's the logical behaviour.
- Home / End "Wintel" emulation (hard for switchers)
Here's how you can get these keys system-wide (assuming you don't already created a custom key bindings file), from Terminal.app run these two commands:
mkdir ~/Library/KeyBindings
echo >~/Library/KeyBindings/DefaultKeyBinding.dict '{ "\UF729" = "moveToBeginningOfLine:"; "\UF72B" = "moveToEndOfLine:"; }'
After this, restart TextMate, Mail.app etc. and you should be able to use home/end for begin/end of line.
-- Allan Odgaard - Subword navigation. In Xcode 2.0 ctrl-left/right arrow will stop at capital letters. Is there a way to get this in TextMate?
Forward movement can be done by a macro that does a regexp search. Currently though regexp searches are only forwards, so backward movement is problematic (but backwards regexp search will be added).
-- Allan Odgaard - A small bug in the Ruby syntax highlighting. Regular expressions inside of curly braces that end in ',', '%', '&', and possibly other characters act as if as though they're unterminated. Example: a = { /hi,/ => "Hi" }
(Oh, and Textmate has almost single-handedly been responsible for convincing me to buy a Mac. If I do shell out for an iBook, Textmate will be the first thing I buy and install.)
- Is there any capacity for multiple-keystroke shortcuts? Specifically, when editing LaTeX in jEdit, I found it very convenient to be able to define shortcuts for Greek letters that all took the form ctrl-shift-g <next char>, e.g., 'CS-g a' for \alpha, etc. I would love for simiilar functionality to be present in TextMate (and its presence would virtually guarantee that I purchase a license). Thanks!
--Eric Malm
What you can do is, create snippets for your miscellaneous Greek letters and give them all the same key equivalent, then TextMate will show a menu when you press that key (and the menu has keyboard support, including typing letters to select the entry starting with that letter)
-- Allan Odgaard - (Not sure this is the right place). In the latex bundle, folding footnotes (ala LyX) would greatly increase readability.
Instead of having something like:
This is only one\footnote{This is a footnote, I've already lost track of the sentence I was reading...} sentence.
We'd have:
This is only one\footnote{...} sentence.
-- Gabriel Ripoche
XCode/Script Editor style Auto Completion I think it would be best if code completion worked like the Tiger ScriptEditor application, where the best code completion appears to the right of the caret in grey letters and escape completes it. In the case of multiple possibilities the matching characters are placed to the right of the caret and an ellipses is used to denote the presence of more than one completion. Hitting escape then brings up a menu like Dreamweaver, etc.
I think this would be the best compromise, and of course would be exactly the thing to finally woo me away from BBEdit for good.
--Errol Sayre
Already Implemented
- Non ASCII txt conversion tools: Very useful for me in bbedit is the straighten quotes, convert to ASCII, etc tools. I often receive bundles of Word docs from clients and need to run these tools to get them web-ready . This can probably be done w/ Macros, but might it might be useful to have it as a permanent part of the app if it's oft requested. (?) -- Ben Parzybok
Not sure exactly which tools you want. Much can be done by piping the text through various unix commands, e.g. iconv with transliteration to convert the text to 7-bit ASCII. I'll add a bundle with the commands I can come up with (next version will have a better bundle system that makes it more transparent what's from which bundles and the ability to toggle visibility of bundle functions).
I suspect Ben wants the set from BBEdit: Educate (Smarten) Quotes, Zap Gremlins (remove control and invisible characters), Convert to 7-Bit. I'm not sure if iconv can do all of that or not.- Added in 1.1b3 (Run Commands > Text Utilities)
- Remove trailing spaces from end of line.
--Mark Patterson
I may include some default strip-whatever stuff, but for now you can record a macro that does a “Replace All” with:
Find: “\s+$”
Replace: “”
Replace All Scope: “Entire File”
Options: “Wrap Around” and “Regular Expression”
-- Allan Odgaard- Added in 1.1b3 (Run Commands > Text Utilities > Strip Trailing Spaces)
- Line numbers in the margin would be nice.
Try View -> Gutter -> Line Numbers (option-cmd-L).
-- Allan Odgaard- Added in 1.0, I believe
- Keep BOM! Textmate drops UTF-8 BOM, which is the wrong thing to do. BOM at the beginning of a file is the only way to convince Internet Explorer that a web page is in UTF-8, really. I (and others) use it for just that purpose, and there are other cases when it is important too.
-- David Tolpin
I'll add it to beta 4 (sorry about not getting it done for the beta just released)
Okay, I've made it preserve BOM for UTF-8, but I haven't made any GUI for this. Though I'm not sure you are correct about IE. Are you sure that your server is sending the files as UTF-8? I have no problems getting my pages displayed correct in IE using UTF-8 and non-ASCII characters.- 1.1b4
- Better "smart typing" with quotes
-- Mike Powell- Added in 1.1b5
- Ctrl+D should delete the next character (standard Emacs/Cocoa keybinding)
Go to Automation -> Replay Macro -> Edit Macros… and delete the Duplicate Line macro (or assign it another key equivalent). - Ctrl+D as the default for Duplicate Line. Eclipse and other IDE's use command D to duplicate a code line, and is probably the more expected behavior. -- Ben Honda-Rottler
- I would expect backspace on tab to remove the tab. It replaces tab with spaces and replaces the last space. Is it doable with the macro facility, or is a change to the core algorithms is required?
-- David Tolpin
Sounds like you have enabled freehanded editing (Edit -> Mode -> Freehanded Editing) in which case tabs are treated just as spaces (and end-of-lines are ignored).
That was it, my sin (actually, that was the default setting somehow, I did not change it). Switched it off, got what I wanted, thank you). - Autocomplete! As of OS X 10.3 all text views have a context sensitive autocomplete bound by default to the F5 key. I really miss this from 'etha!
You can use 'escape' to auto-complete. Although it's not exactly the same as the systems function (the system brings up a menu, TextMate just inserts the first match and lets you cycle between matches with [shift] escape).
I presume this can be changed? F5 is a lot easier to reach on my keyboard than esc is.
Yes, it can be changed. See Help / Key bindings for info.
-- Allan Odgaard - Use the Safari key shortcuts to change tabs.
The Safari keys actually conflict with the default key bindings to select to beginning/end of line (but you can change the default TM keys): http://lists.macromates.com/pipermail/textmate/2004-November/001115.html - XML, XSL, and XSD syntax highlighting, please!
- YAML syntax highlighting, especially if configuration blocks could use folding.
These requests belong to the bundle page! :)
-- Allan Odgaard - I use the alternate syntax in PHP, that is:
if ($something == $that):
// Do Stuff
endif;
The folding parser does not pick this syntax up. It only reads the {} sets.
If you keep if and endif at the same indent level, you can add these to the folding patterns to make them foldable. E.g. check out Ruby which folds on def/end.
Is there something I have to do to make that happen? I tried putting them at the same indent level, but nothing happened.
You need to modify the PHP syntax file to add this feature (or ask the PHP syntax maintainer to do it -- maybe ask on the mailing list).
- Something Textmate doesn't have at the moment is indenting to the right alignment. Pressing the tab character moves the cursor one indentation to the right, but I would like to have the cursor moved to the correct indentation.
For example:
if($this) {
if($that) {
_
}
}
Pardon my 'french', it's the worst nested 'if' you could have. ;) Pressing the tab character while the cursor is at the position of the _ character should insert two tabs, because of the nested 'if'. I know this requires a certain semantic awareness of Textmate, but it would be nice to have.
BTW: I can't get PMWiki to display tabs. Any ideas? (-> doesn't work for some reason) - What about a VIM compatibility mode? I'm not kidding, this would be very nice.
wouldn't that require multiple stroke keybindings? if so, it gets my vote for that reason alone :)
It would require that TextMate became a “mode” editor, where typing letters on the keyboard would do different things depending on the mode you were in.
-- Allan Odgaard - How can i make the new document default to a specific language, i.e. HTML?
Why is this under suggestions?
Anyway, to get HTML as the default for new untitled documents you'd (from Terminal) execute (while TextMate is not running):defaults write com.macromates.textmate OakDefaultLanguage '17994EC8-6B1D-11D9-AC3A-000D93589AF6'
The long alpha-numeric code is the UUID of the language you want to be default.
-- Allan Odgaard - Is there a way to default all tags, in HTML, to be UPPERCASE?
Again, this is not a suggestion. And I have no idea what exactly you refer to. The control-space macro works with whatever you type, so if you type it as uppercase, it'll make it uppercase. The snippets OTOH are written to insert it as lowercase, so you'd have to change these.
But consider switching to lowercase, since I think that's mandatory with XHTML.
-- Allan Odgaard
Using b14, I have softwrap turned off and I dont get a horizontal scroll bar when the document has long lines.
Known bug, and there's an update (http://macromates.com/textmate/files/TextMate_1.1b14_2005-07-14.zip) but 1.1b15 will soon be out.
Horizontal scrolling is extremely slow, much slower than vertical.
All lines needs to be drawn on h-scroll, and text drawing on OS X is very slow on some systems.
-- how about rendering the whole width of the document, within some reasonable heuristic for width - say 20% - so that when you scroll right it only requires a blit, and not rendering of text.
On OS X such workarounds are often just a source for new problems, e.g. sub-pixel anti-alias won't be applied in the same way to the off-screen rendering, there's no guarantee the off-screen bitmap ends up on the graphics card etc. Quartz Extreme 2D may solve the slow text rendering, which AFAIK only exist for AGPx2 systems.
When pasting indented text the original indents arent respected.
Disable re-indent pasted text in preferences if it doesn't work for you.
The in/out-dent functionality seems particularly obscure. The rule seems to be that the tab is added to the start of the selection on a given line, resulting in a partially selected first line being indented in the middle, and the last line being indented at the start. I suggest that the indent functionality operate on the start of the line, rather than the selection.
This is by design, since in/out-indent also works with column selections etc. -- you can record a macro that does Edit -> Select Line and then in/out-indent and store on the key, then it'll extend the selection to a line first. The default behavior may be changed, but it's undecided at present.
I also request that tab and shift-tab be used, rather than option-tab. Tab is now the common mechanism in most text editors, and I find it very hard to break the habbit ( keep command-] as well ). If you are concerned about consistancy with the 'replace selection' system, there are other keypresses in TM that dont replace the selection, the parenthesis surround the selection.
What I'm concerned with is the ability to replace selection with a tab, something I do a lot myself.
Then do this as SCiTE does it: when multiple lines are selected, tab/shift-tab acts as in/out-dent. When a selection spans no more than a single line, the selection is replaced by a tab upon hitting the key. I think this is a very good way of doing it.
Except that in two of the three cases where I select text and press tab to replace it, I do have multiple lines selected -- when macros get some extra features users can set this up themselves using a macro, but I'm not going to add it as standard, period!
Tooltip when mousing over a file in the project that has been ...ed, so that its full name can be seen.
This has been tried, but the tooltip was always in the way, so it got removed again.
Likewise, full path tooltip for the tabs.
They already have that.
I mostly develop in coldfusion, and Ive created a CFML language highlighter, nothing more than the HTML highlighter with a few tweaks. One of coldfusions 'features' is that comments can be nested. Ive got this for my comment highlighter { name = "comment.block.cfml";
begin = "<!---";
end = "--->";
patterns =({ include = "comment.block.cfml"; });
} But it doesnt recurse correctly, and single ---> will close all of the nested comments, which is incorrect behaviour. Ive tried having the include pattern be a copy, comment.block.cfml.nested, but that made no difference. Is this posslbe?
Individual rules can only be included when these are in the repository dictionary. See this blog entry for more info and examples about local rules.
btw: generally send these type of questions to the mailing list. -- Allan Odgaard
there's room for improvement in python support... (do it and I'll shell out my filthy euros!)
- folding seldom works right. keeping track of indenting widths can take you very far, but I'm not so sure it can be done with regexes. perhaps a "general mode" where folding is just based upon indenting would suffice... *anything* but the current mode :'(
- when python pops out an exception, bbedit pops out a list of the stack trace. screenshot here. double-clicking on an item opens the file and highlights the appropriate line. is there anything similar? :'(
Currently nothing exists for Python, but it shouldn't be a problem to make this. You can make a command that runs the Python script with output set to HTML, then pipe stderr into a script that parses errors and shows these as hyperlinks -- this is done for Xcodebuild, LaTeX & View and other commands.
-- Allan Odgaard
Yes but then YOU'll have to pay me $39 ;) Just joking, I'll have a look at it -- could be fun ;)
pymate is busy being born! I've been working on this script a couple days and it appears to work... let me know what you think of it! -- Domenico
Very nice stuff Domenico! Brad Miller have added it to the Python bundle on the repository.
-- Allan Odgaard
now you can check PyMate and DocMate development on http://pymate.blogspot.com, my first DevBlog. There's a BerliOS project (linked from the blog) where you can download the latest-and-greatest-and-most-unstable releases before they go in the SVN repository. Have a nice ride!
-- Domenico
I normall use Emacs with the PHP-mode.el installed. This has a great auto-indent feature, which is activated by pressing Tab. It will shift the line of text to increase.decrease indent, in relation to line above. If I come across a messy PHP file I just open it in Emacs and press Tab for every line, starting from top. You then end up with a beautifully formatted page, very quickly. Is there any way this can be acieved with Text Mate ?
--Will Macdonald
No, not without an external code beautifier to run your buffer through.
-- Allan Odgaard
- Found a bug with the syntax coloring for Perl, regarding "hereto" syntax. It works for the general case:
my $var = <<END;
Some text to set the var to
END
$object->print (<<END);
Some text to send to the "print" method of object
END
END)", but that won't compile in Perl properly.
- When invoking the find action, it would be nice if the find selection would be what my cursor selection is.
That would (sort of) make ⌘F destroy the shared find clipboard. Using the selection for find also seems counterproductive in combination with “Replace in Selection”. Learn to use the shared find clipboard, and I'm sure you will rarely see a reason to even open the find dialog (for other than stuff like e.g. the “Replace in Selection”).
-- Allan Odgaard - I would like to be able to set the wrap instead of taking the default or having to drag the wrap line in the window.
--Bob Hicks
- I'd like the wrap boundary to be invisible, or let me se its color. Currently, it's gray in that region even when I have wrapping off. EmEditor does a nice job with the various wrapping modes and it's not as intrusive as a big gray region (which may or may not actually provide me with any information that I need).
--G. Carpenter
- It'd be great if double clicking on a paren, brace, or bracket would automatically select to the opposite paren, brace, or bracket. For an example of this, you can look at the behavior of an ObjC file in XCode.
--Nick Brosnahan
- On most editors on Windows it is common that the word the cursor is currently 'inside' is the default word in the find-dialog. I would like this feature. (the word shouldn't be put on the copy buffer). It is kind of similar to the suggestion above but not quite..
-- Jon
On Mac there's a shared find clipboard, press command E with a selection, and it's copied to that, and will be in the dialog when you open it, but you actually don't need to, just press command G to find next occurrence. Placing the selection in the find dialog would sort of go against this shared find clipboard and would be counter productive for “replace in selection” operations.
-- Allan Odgaard
- It'd be nice if language definitions could set up scopes in which folding markers could be ignored. In my Lua files, I'm noticing folding-start markers in the margin whenever a comment or string literal contains "if" or "for" (which is kinda often). Aside from the visual pollution, this seems to keep clicking the folding-end markers from collapsing the fold correctly. (I'm seeing this less often in C-based languages, but only because I'm less likely to use unbalanced {} in comments and strings there).
-- Rick Roe
Currently not a simple change, but the folding system will (most likely) see some updating in 1.3
-- Allan Odgaard
- Add folding for if statements in javascript. It would be nice to be able to fold up your if/else statements at the braces. I know this can be done in the bundle editor, but I don't know how and I think it should be a default.
--Braxton Beyer
- Earlier someone asked for VI keybindings, and I understand what you're saying about modeless operation. If it can't be done, then it can't be done. However, if it could it would be very valuable to a lot of people. For VI addicts, switching to a non-vi editor can be very painful, with lots of stray characters showing up in the text. I am sure you are right that you can do most things with the keyboard, however, moving around with arrow keys is a lot slower for a fast typist than using home-row keys is. I can work very quickly within regions of text with vim.
--Mark Bainter
- I would like to see bracket/parenthesis code selection a la xcode/bbedit. If you double click a [, {, or ( the text/code until the last corresponding ] }, or ) will be highlighted. Kind of like what the command+shift+D command does, but I would rather doube click using the mouse.
--Reese
The encoding options for read/save should include a checkbox to list ALL the available Cocoa String encodings, or at least the 3 main Japanese ones: Shift_JIS, EUC, IS0-2022-JP. As long as TextMate can load -> save roundtrip such a file without destroying the multibyte text, I don't mind that I can't edit the text in TextMate, so long as I can edit the single-byte text that is 90% of my files, and then open the files in another app for the 10% that is Japanese.
Difference Editing similar to BBEdit's "Find Differences" command. The key thing I'm looking for is to be able to pull up two files side by side, and be able to easily merge changes from one to the other right there, without having to save a new file like Apple's FileMerge. The BBEdit implementation of this feature is really well polished now, and I'd love to see something like it show up in a future version of TM.
In the meantime, I attempted to write an Applescript that I could have called from a TM command that would take the two frontmost windows and send them to the bbdiff command line tool or to FileMerge. The problem seemed to be that although the Applescript dictionary for TM shows that documents of windows are accessible via Applescript, it didn't seem to work in practice.
When dragging and dropping text, honor NSDragAndDropTextDelay to allow more responsive dragging.
Is this in reference to the delay occurring when you click on a selected block of text to drag it? Is there any way to get rid of the delay?? I'm used to other editors which have no delay, and the delay is driving me bonkers :-)
--Mark
How about Dreamweaver or JBuilder style drop down autocompletion? For example, in a Javascript situation, after I hit "." it could show the list of available methods or in HTML, it could show the various style options when in a style or CSS attribute list.
The indentation behavior is the only thing keeping me from purchasing TextMate. I do a lot of code reformatting (manual, not automatic) and the indentation behavior drives me up a wall. In every single other code editor and text editor I've ever used, any line that is selected when you do an indent operation gets one indentation (usually a tab) placed at the beginning of the line. However, TextMate is more inconsistent. If you only have one line selected, it behaves as expected. If you have multiple lines selected, it inserts a tab at the beginning of the of the selection (regardless of if it's at the beginning of a line or not) and then indents the other lines as expected. I do so much quick selecting and indenting that I don't have the time to carefully select each line fully to make TextMate work. Is there a work-around for this? A plug-in perhaps? --Tyson
Some form of intuitive, mouseless, arrowless navigation would be very nice. Moving my hands to and from the arrow keys for simple movements really breaks up my flow -- the mouse even more so . Snippets are an amazing leap in productivity, but without efficient basic navigation, I can't afford to migrate from vim.
--Dan
Amen. You must understand I've been using vi/vim for 25 years now. Leaving the vi keybindings would be like using a dvorak keyboard. I *want* TextMate and I'd be delighted to pay for it, but if the basics don't work I'm stuck. --PeterMerel.
It would be nice if the Go to Symbol keystroke (Cmd-Shift-T) would also work to close the Go to Symbol palette if it's already open. --Ken
It would be nice if Cmd-g following Ctrl-s would take you directly to the next match.
This has been mentioned elsewhere, but highlighting all search term matches, like Vim's hlsearch option would be great.
Ideally, I'd want Ctrl-s like behavior that incorporated regex-based search and the hlsearch capabilities of VIM. --Mike Coyle
Is it possible to pass the current document to the completionCommand as stdin, rather than having to load the last saved version? It's counter-intuitive that only the last saved version of your document can be used for programmatically generating autocompletions.
-- Fletcher Penney
I want to be able to select columns using the keyboard and arrows, instead of having to grab the mouse. Again, this is a Vim ability that is really useful, especially when I'm trying to insert a column instead of change a selected column.
I'd also like to have the ability to tell TM to align using an arbitrary character, not just the equates ('=').
Also, how do we tell it the perltidy module to use a custom .perltidyrc? It seems to be ignoring my settings and I'd like the tidy function to be consistent with what I get when calling perltidy directly. This is tied to my previous paragraph, because I wanted to align some perl hashes on the '=>' operator and TM made them look like '= >', which made me dash for Vim to get the source looking like I want.
-- Greg Ferguson
It would be nice if spellchecking could be enabled only in certain scopes so that one could spellcheck (on typing in) in comments...
-- Arne Ehrlich
It would be useful if within a Snippet the shell output from `somecommand.sh` (backticks) could be evaluated as a Snippet. As some of the Snippets, e.g. JUnit Test Class, have to jump through some hoops to create the correct default variable names.
I think it would be useful for shell commands to create here documents that are evaluated as snippets, thus leveraging the language constructs of your favourite scripting language.
-- Wayne Allison
On the auto-compleation theme, but simply, doing closing tags, so there is <p>... then i type </ and the rest, p> is automaticaly put in
--Fred Nicollson
I'd love a way to locate the end tag of an element in an (X)HTML document if I know where the start tag is (and vice versa). And not just the next closing tag, but the *corresponding* closing tag, so that, for instance, if you had an <a></a> in an <li></li> in a <div></div>, you could stick your cursor in the <div> and it would show you the </div>.
--lawrence
Another vote for window-splitting, preferably side-by-side (have two tabs visible at the same time).
-- Julian Dreißig
One feature I used to use in XEDIT style editors that I found very useful was selective line editing, where you could filter which lines are visible and operated upon with regular expressions. A description is here: http://www.kedit.com/techart.all.html
For example, one could enter the following to only the show the <input/> tags in an html file:
all /input/
Then further filter by removing submit buttons:
less /submit/
All the hidden lines are still in the file and can easily be made visible, will be saved properly whenever you save the file, etc. But in the meantime, only the matching lines are visible. Other operations such as search and replace default to working only on the visible lines.
This becomes very useful when doing mass search & replace operations, as you can easily see & filter all the relevant lines in the file beforehand, then just hit "Replace All".
-- Dan Walters
I would really like to see an extra checkbox in the find/replace window to search on whole words only. This is a standard option in many other IDEs/editors I use and it is something I miss in TextMate. (See for example Xcode's Find dialog. Even TextEdit has this functionality in its find dialog.) Of course it is possible to accomplish similar functionality with regular expressions, but I don't think that's an option.
-- Frank van den Hoef
Auto autocompletion
I would really like to have autocompletions appear automatically, with the possibility to continue typing, accept with tab or return, or cancel: the best implementations I've used are those of KDE's Kate and XCode; but even OpenOffice's simplistic completion would be ok.
It's the single feature I miss the most when working in TextMate. The problem with the way it's implemented now is that hitting escape requires moving out of the home row, and, by the way, completions take too much time to appear. But most important of all, as it is now I have to make a conscious decison to autocomplete, and pause what I'm doing; if, on the other side, the menu appears automatically, hitting return (or tab) becomes automatic when you've typed "just enough". It really saves a great deal of keystrokes.
--Chase Taggart
Add me to the list for split Windows. I have to use Smultron when I have a dire need to have split windows. Is there any chance for this happening in TM?
--Bruce Garlock
Replace-All Progress/Cancel
It would be nice if it was possible to cancel a search/replace-all operation using Command-Period. When working with large text files such operations can easily take a minute and more. Extra awesomeness points would be awarded for a document-model dialog showing the progress of a long search/replace-all operation together with a cancel button and non-UI-locking behaviour.
--Fred Seiffert
- Any plans for code hinting? (Especially AS3?) -- Ben Honda-Rottler
Absurd waiting for long lines
I tend to push TextMate's performance limits quite a bit, since I do a lot of database work and sometimes, I will have megabytes of character data. My particular pet-peeve is that TextMate handles very poorly long horizontal lines. I noticed that this was discussed already above.
As a programmer I can understand the technical difficulties to get this to work properly. However, as a user of TextMate I find this to be unacceptable behavior. I should not have to wait minutes for TextMate to insert characters at the beginning of a long line, regardless of the size of the document, and also have by CPU utilization to skyrocket.
If the problem for this is horizontal scrolling and the current text architecture for this in Cocoa is shitty, then the scrolling behavior needs to be altered. Maybe horizontal scrolling should work in a non-conventional way. Maybe these computations should be done in a separate thread. However, the whole app should never freeze just because I typed a couple of characters in one of the windows.
-- Nick Hristov (nick.hritov at gmail dot com)
Adjustable line height in editor It'd be absolutely fantastic to be able to adjust the line height used in textmate, especially when switching to smaller font sizes!
-- Martin Kuplens-Ewart (mkuplens at gmail dot com)
- I agree with Nick Hristov on large files. When dealing with large text files from databases, for example, Textmate slows to a crawl and becomes unusable when performing actions on the text. I have to use BBedit to mess with large files (sad face here).
- Also I would like to see MACRO > Play to End of File function, like Ultra Edit on Windows, so that I don't have to keep replying the macro, it will just play till it reaches the end.
- Thanks for a "great text editor".
-- Kevin Ridgway (kridgway at gmail dot com)
Nedit-style live dragging of text
I love TextMate, but coming from nedit one thing which I miss is live dragging of text. In nedit I can highlight a subroutine, and as I drag it flows through the rest of the text, which wraps around it, much like an icon in the Dock does. I can also drag it beyond the end of the window, scrolling through the document.
Live dragging also helps with rectangular selections of text. I find it easy to rearrange columns of text in nedit, but can't get this to work in TextMate.
Indentation on Wrapped Lines!!
Could there please be an option such that wrapped text gets left-aligned to the indentation of the first line? It's somewhat jarring to see a line of code in a block three indentations deep start at column 0...
-Neil.
command + d = delete line, this is very useful in eclipse and i find myself automatically trying to do it when im using textmate.
Have the cursor stay with the moved text on "Line Up" and "Line Down" commands!!
This would make it easier to move a line up or down several rows.
-Drew