Sublime Text 2 is a text editor for OS X, Linux and Windows, currently in beta.

+2

The ability to expand sublime user setting in the .sublime-build, like the limited build variable expansion.

Mike Chilton 13 years ago updated by Emanuele D'Osualdo 13 years ago 1
For example:-
In  makefile.sublime-build I could do the following set up
"cmd": ["make","${settings:buildtype}"],
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${project_path:${folder:${file_path}}}",
"selector": "source.makefile", 
So as a user I could define a user setting "buildtype:"release" which I could change to "buildtype:"debug" to quickly change between build types, this would also allow me to easily create new ones, like "master", by simple editing my my build system (which is different to make) and changing the user settings, without having to create variants or edit the .sublime-build file etc.  Would be most useful for such things as multi-platform builds, as I could also define multiple user settings, for example settings for a  buildtype and buildplatform in so doing create multiple platform builds with "cmd": ["make","${settings:buildtype}_${settings:buildplatform}"]. I think this would be a simple but powerful addition to the sublime-build implementation.
+2

Non indentation folding by custom %codes or phrases%

Denis Abramov 11 years ago 0

Currently if I have a large code. I'm separating it by comments and indentations to fold them later.


For example:


// Views

... some views code here ...


// Models

... some models here


But when the code gets really big, indentation becomes so large, that it's starting to annoy.


Would be better if there would be some codes for folding, to avoid indentation at some point of hierarchy.


For example:


// Views fold_start_1

... some views code here without indentation at all ...

// fold_end_1


Now you can fold all the code between fold_start_1 and fold_end_1.


Ofc folding codes could be shorter, it's just as an example

+2

Ruby API, pleeeeeeeease!!!

Juan Falgueras 13 years ago 0

I have been programming in Tcl for Alpha on Macs for many years.  It had very complete API, similar to the ST2 one.  TextMate came with this very short API based only in environmental variables, but with those genial ideas. In that case the programming language was totally free, since TM is based in external scripting.  And now ST2.  It obliges you to script in Python.  I didn't know Python, although read a lot about and programmed a bit on it.  But each time I dig into the ST2 API to program on Python… I miss Ruby so much!  Please, try Ruby!  Give it an opportunity.

+2

Catch and deny key presses before they get into the view

Oktay Acikalin 14 years ago updated 14 years ago 2
How can I catch key presses and deny them before they get into the view without setting up key bindings? I want to catch all user input and then decide what to write into the view.
+2

Change newline_at_eof installation preference to true

MarkDBlackwell 12 years ago 0

It is a general, widely known practical observation that (at least some) people will leave (at least some of) their software preferences unchanged after installation.

Upon installation, the preference whether newlines are ensured at EOF on save is false.

This installation default is wreaking a small degree of havoc with programmers using versioning systems including git.

The reasonable and usual practice of software in Unix and elsewhere is to expect, and to maintain, that all lines end with a newline. This includes the final line. For more information, here are two links:

http://stackoverflow.com/questions/729692/why-should-files-end-with-a-newline

http://slashdot.org/comments.pl?sid=165492&cid=13808398

To be more precise, after installation, in Default/Preferences.sublime-settings these statements occur:

  // Set to true to ensure the last line of the file ends in a newline
  // character when saving
  "ensure_newline_at_eof_on_save": false,

This should be changed instead so after installation automatically the statements are:

  // Set to false to ensure the last line of the file does not end in a newline
  // character when saving
  "ensure_newline_at_eof_on_save": true,

Further, the editor must not display a new empty line after saving as it does now when this preference is set to true. This even though there is a final newline.

The editor may be treating newlines erroneously as line separators and not correctly as line terminators. This possibility is described in the links above.

+2

package control plugin broken in Sublime 3 on OSX

Sean Carolan 11 years ago in Plugin announcements 0
When I try to install a plugin I get this:

startup, version: 3059 osx x64 channel: stable
executable: /Applications/Sublime Text.app/Contents/MacOS/Sublime Text
working dir: /
packages path: /Users/seancarolan/Library/Application Support/Sublime Text 3/Packages
state path: /Users/seancarolan/Library/Application Support/Sublime Text 3/Local
hardware concurrency: 8
zip path: /Applications/Sublime Text.app/Contents/MacOS/Packages
zip path: /Users/seancarolan/Library/Application Support/Sublime Text 3/Installed Packages
found 5 files for base name Default.sublime-keymap
found 1 files for base name Default.sublime-mousemap
found 1 files for base name Main.sublime-menu
loading bindings
loading pointer bindings
found 1 files for base name Default.sublime-theme
theme loaded
app ready
wrote startup cache, added files: 1 orphaned files: 3 total files: 151 cache hits: 150
pre session restore time: 0.19615
using gpu buffer for window
using gamma: 1 (err: 0)
first paint time: 0.304532
startup time: 0.325608
found 1 files for base name Default.sublime-theme
theme loaded
launching: /Applications/Sublime Text.app/Contents/MacOS/plugin_host
reloading plugin Default.block
reloading plugin Default.comment
reloading plugin Default.copy_path
reloading plugin Default.delete_word
reloading plugin Default.detect_indentation
reloading plugin Default.duplicate_line
reloading plugin Default.echo
reloading plugin Default.exec
reloading plugin Default.fold
reloading plugin Default.font
reloading plugin Default.goto_line
reloading plugin Default.history_list
reloading plugin Default.indentation
reloading plugin Default.kill_ring
reloading plugin Default.mark
reloading plugin Default.new_templates
reloading plugin Default.open_file_settings
reloading plugin Default.open_in_browser
reloading plugin Default.pane
reloading plugin Default.paragraph
reloading plugin Default.paste_from_history
reloading plugin Default.save_on_focus_lost
reloading plugin Default.scroll
reloading plugin Default.set_unsaved_view_name
reloading plugin Default.side_bar
reloading plugin Default.sort
reloading plugin Default.swap_line
reloading plugin Default.switch_file
reloading plugin Default.symbol
reloading plugin Default.transform
reloading plugin Default.transpose
reloading plugin Default.trim_trailing_white_space
reloading plugin CSS.css_completions
reloading plugin Diff.diff
reloading plugin HTML.encode_html_entities
reloading plugin HTML.html_completions
reloading plugin Vintage.vintage
reloading plugin Vintage.vintage_commands
reloading plugin Vintage.vintage_motions
plugins loaded
loaded 837 snippets
>>> import urllib.request,os,hashlib; h = '7183a2d3e96f11eeadd761d777e62404e330c659d4bb41d3bdf022e94cab3cd0'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://sublime.wbond.net/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)
132375
reloading plugin Package Control.Package Control
found 2 files for base name Main.sublime-menu
Package Control: Skipping automatic upgrade, last run at 2014-02-14 10:48:26, next run at 2014-02-14 11:48:26 or after
Package Control: Error parsing JSON from channel https://sublime.wbond.net/browse.
Exception in thread Thread-7:
Traceback (most recent call last):
File "X/threading.py", line 639, in _bootstrap_inner
File "package_control.downloaders.background_downloader in /Users/seancarolan/Library/Application Support/Sublime Text 3/Installed Packages/Package Control.sublime-package", line 61, in run
File "package_control.providers.repository_provider in /Users/seancarolan/Library/Application Support/Sublime Text 3/Installed Packages/Package Control.sublime-package", line 77, in prefetch
File "package_control.providers.repository_provider in /Users/seancarolan/Library/Application Support/Sublime Text 3/Installed Packages/Package Control.sublime-package", line 77, in <listcomp>
File "package_control.providers.repository_provider in /Users/seancarolan/Library/Application Support/Sublime Text 3/Installed Packages/Package Control.sublime-package", line 219, in get_packages
File "package_control.providers.repository_provider in /Users/seancarolan/Library/Application Support/Sublime Text 3/Installed Packages/Package Control.sublime-package", line 111, in fetch
File "package_control.providers.repository_provider in /Users/seancarolan/Library/Application Support/Sublime Text 3/Installed Packages/Package Control.sublime-package", line 153, in fetch_location
File "package_control.download_manager in /Users/seancarolan/Library/Application Support/Sublime Text 3/Installed Packages/Package Control.sublime-package", line 209, in fetch
File "package_control.downloaders.urllib_downloader in /Users/seancarolan/Library/Application Support/Sublime Text 3/Installed Packages/Package Control.sublime-package", line 202, in download
Package Control.package_control.downloaders.downloader_exception.DownloaderException: Error downloading repository. HTTP exception InvalidURL (nonnumeric port: 'pderichs') downloading http://github.com:pderichs/sublime_rubocop.git.
Exception in thread Thread-6:
Traceback (most recent call last):
File "X/json/decoder.py", line 368, in raw_decode
File "X/json/scanner.py", line 63, in _scan_once
StopIteration
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "package_control.providers.repository_provider in /Users/seancarolan/Library/Application Support/Sublime Text 3/Installed Packages/Package Control.sublime-package", line 168, in fetch_location
File "X/json/__init__.py", line 309, in loads
File "X/json/decoder.py", line 352, in decode
File "X/json/decoder.py", line 370, in raw_decode
ValueError: No JSON object could be decoded
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "X/threading.py", line 639, in _bootstrap_inner
File "package_control.downloaders.background_downloader in /Users/seancarolan/Library/Application Support/Sublime Text 3/Installed Packages/Package Control.sublime-package", line 61, in run
File "package_control.providers.repository_provider in /Users/seancarolan/Library/Application Support/Sublime Text 3/Installed Packages/Package Control.sublime-package", line 77, in prefetch
File "package_control.providers.repository_provider in /Users/seancarolan/Library/Application Support/Sublime Text 3/Installed Packages/Package Control.sublime-package", line 77, in <listcomp>
File "package_control.providers.repository_provider in /Users/seancarolan/Library/Application Support/Sublime Text 3/Installed Packages/Package Control.sublime-package", line 219, in get_packages
File "package_control.providers.repository_provider in /Users/seancarolan/Library/Application Support/Sublime Text 3/Installed Packages/Package Control.sublime-package", line 111, in fetch
File "package_control.providers.repository_provider in /Users/seancarolan/Library/Application Support/Sublime Text 3/Installed Packages/Package Control.sublime-package", line 170, in fetch_location
Package Control.package_control.providers.provider_exception.ProviderException: Error parsing JSON from repository https://sublime.wbond.net/.
Exception in thread Thread-3:
Traceback (most recent call last):
File "X/threading.py", line 639, in _bootstrap_inner
File "package_control.commands.install_package_command in /Users/seancarolan/Library/Application Support/Sublime Text 3/Installed Packages/Package Control.sublime-package", line 43, in run
File "package_control.package_installer in /Users/seancarolan/Library/Application Support/Sublime Text 3/Installed Packages/Package Control.sublime-package", line 54, in make_package_list
File "package_control.package_manager in /Users/seancarolan/Library/Application Support/Sublime Text 3/Installed Packages/Package Control.sublime-package", line 260, in list_available_packages
File "package_control.downloaders.background_downloader in /Users/seancarolan/Library/Application Support/Sublime Text 3/Installed Packages/Package Control.sublime-package", line 52, in get_provider
KeyError: 'https://sublime.wbond.net/'
+2

Improve selected item highlight from the filtered list (the one used by "Goto Anything..." / CTRL-P)

Carlos K. 13 years ago 0
in some situations, with a low number of files in the filtered list (2 or 3) it's hard to tell apart the item that is currently selected from the other ones listed. Could we add a bit more of highlight love to that selection? Maybe a thin border around the row or something like that?

For instance, in the following image can you easily tell which item is selected?


+2

"Close All Files" in the File menu should close all saved files first.

Ronald Jett 12 years ago 0

Alternatively, you could implement a Close All Saved Files option. 

+2

Project File Definitions

AJ Michels 13 years ago 0

For project settings it would be nice to be able to define "files" as well as "folders".  Sometime there are files that might exist outside of a directory.  Rather than including an entire folder only to exclude all but one or two files it would be nice to be able to just include specific files.  This could take many of the same parameters as the folders, name, path, etc.  Of course the exclude patterns wouldn't make sense to include.


Example:

{
    "files":
        [
            {
                "path": "/path/to/my/file.txt"
            },
            {
                "path": "/path/to/my/other/file.txt"
            }
        ]
}


PS. Great work.  This is an awesome project.  I am hoping I can get our whole development team using it.

+2

Prose with Ease

Hamish 11 years ago 0
I'm a writer not a coder but Scrivener on Linux (still in beta) is not yet able to handle the number of files and the sizes that I'm working with.  Sublime Text can, though it lacks a few of the basic features that would make it just as useful.  I'm not talking about the text formatting, which really gets in the way anyway and can be done in a word processor/LaTex later.  But being able to compile and export files as EPUB / PDF / concatenated txt, also being able to arrange the different txt files into a tree structure and also being able to edit them in a continuous draft.  Sublime Text is great as it opens instantly, I can work with thousands of fragments at once, but there does not seem to be anyway of ordering these.  Also it is hard to find specific settings and resources, tutorials solely for the prose writer....make all this a bit easier, or even have another version without any of the coding tools, and you'll have a whole new market....