top | item 4854933

tabIndent.js - A JavaScript Library For Tab-Enabled TextAreas

76 points| Hirvesh | 13 years ago |julianlam.github.com | reply

33 comments

order
[+] fratis|13 years ago|reply
This is awesome. I'd love if the developer would add (even if it were optional) Command+[ / Command+] functionality to indent multiple lines at a time.
[+] ya3r|13 years ago|reply
multiple lines indentation at a time is supported. You have to select multiple lines and press tab (to indent) or shift+tab (to remove indentation).

I like the fact that if you select multiple lines with one line partially selected, it works as expected (selecting whole of the partially selected line)

[+] arcatek|13 years ago|reply
Windows/Emacs user here. What does these shortcuts do ?
[+] julianlam|13 years ago|reply
Thanks for your interest! It has been noted. Once I work through the existing backlog of bugs, I'll revisit ideas such as this one.
[+] kibwen|13 years ago|reply
Something like this would make markdown editing in Github comments usable.
[+] dergachev|13 years ago|reply
Awesome. One could make a useful bookmarklet out of this.

I'm worried about accessibility.

Most of the time tabs are used to navigate between fields, so it'd be cool if this was "opt-in", eg entering the textarea would render an icon to click that enabled this feature. Or at least some way to tell the user that pressing the ESCAPE key is how you should tab-out of the field.

[+] mtrimpe|13 years ago|reply
You could also let people tab-through by not enabling this functionality until you move within the text-field.
[+] adroitec|13 years ago|reply
Very interesting. I recently explored several different projects for tab-enabled textareas and currently use https://github.com/wjbryant/taboverride.

One interesting thing about most implementations of tabs in textareas is that the insertion of a tab typically breaks the browser undo/redo stack for the textarea. This guy implemented it correctly though as mentioned in the bug filed on tabIndent.js: http://www.reddit.com/r/javascript/comments/13tfpf/burned_th...

[+] wjbryant|13 years ago|reply
I'm a little late to the discussion here, but thought I'd post a comment anyway. My project (https://github.com/wjbryant/taboverride) has been around for a while and I'm always open to pull requests and feature enhancements / improvements. It looks like you're trying to solve the same problems and implement features which I've already implemented. Why not collaborate?
[+] julianlam|13 years ago|reply
Hi everybody, this is Julian, the author of the project. I had no idea a small weekend project like this would be so widely accepted! Thank you all for your comments -- I'll be keeping track of them, and implementing features based on demand.

Follow the development on the issue tracker: https://github.com/julianlam/tabIndent.js/issues

Thanks again!

[+] romaniv|13 years ago|reply
It's rather unfortunate that tab is also used for keyboard navigation between fields, since this would be the default behavior of text areas I would like.
[+] julianlam|13 years ago|reply
Indeed. Many of the commenters have suggested alternatives, such as using Ctrl-[ and Ctrl-] instead, but the best by far that I've seen would be also binding a listener to the "escape" key, so that tab functionality is restored.

I believe I'll probably end up doing that, unless somebody else does it before I do.

[+] sokrates|13 years ago|reply
Feature wish: when pressing enter, indent the new line as deep as the previous line.
[+] rpicard|13 years ago|reply
I don't see a license specified anywhere. What is it released under?
[+] julianlam|13 years ago|reply
Hi rpicard, as Hirvesh mentioned, the project is released under MIT. I will be adding the license details to the repo files shortly. Thanks for your interest!
[+] lowboy|13 years ago|reply
Good stuff! I was going to point out the undo/redo and multiline tabbing affecting the line with the cursor on it, but bugs are already filed on 'thub.
[+] ilink|13 years ago|reply
Very nice, it would be great if stackoverflow used this.
[+] ollysb|13 years ago|reply
Seeing as delete will remove a tab I think shift-tab would be better used for the normal behaviour, take you to the next input.
[+] archangel_one|13 years ago|reply
Shift-tab generally has the meaning of "untab" already. Overloading it to mean "move to next input" would be very confusing for those of us expecting the old behaviour, and not at all discoverable for anyone else.
[+] undershirt|13 years ago|reply
shift-tab over selected lines removes one level of indentation.
[+] mistercow|13 years ago|reply
Very cool. Now somebody just needs to pack this into a Chrome extension so that all text areas do this.
[+] ilink|13 years ago|reply
Done! Well, I hope it's done - I haven't made a chrome extension before. Let me know if it breaks... https://github.com/Ilink/tabIndent.js Cloned the project, should be available in the "extension/chrome" directory.
[+] jasdeepsingh|13 years ago|reply
This is really awesome! I've always wondered why is this not the default behaviour on a text area?
[+] CWIZO|13 years ago|reply
Because it would brake tab-index functionality.
[+] todd3834|13 years ago|reply
Pretty cool! Would be even cooler with vim commands ;-)