syntax highlight (.tmLanguage) in Sublime Text 3 for packages - python-3.x

I work on this plugin
Syntax highlight does not work with Sublime Text 3 when plugin is installed using package control.
Error loading syntax file "Sublime Text 3/Installed Packages/robot.tmLanguage": Unable to open Sublime Text 3/Installed Packages/robot.tmLanguage
The plugin is under Installed Packcages/Robot Framework Assistant.sublime-package, the file 'robot.tmLanguage' in inside Robot Framework Assistant.sublime-package archive.
Here is how I set paths
https://github.com/andriyko/sublime-robot-framework-assistant/blob/master/rfassistant/init.py
My question is similar to this thread, but in my case the plugin is installed as archive(.sublime-package) not folder with with files.
I am not sure that my path settings mentioned above are correct in python3.
How can I refer to tmLanguage file that is inside .sublime-package file?
Where should I put that file? It is totally confusing why does it work on Sublime Text 2 and Sublime Text 3(when installed into dir from github) but does not work when installed via Package Control.
So, how do I set path to tmLanguage file and where should I store it. Just want to clarify, that it works fine when plugin is installed from github zip file(because I put it's content into RobotFrameworkAssistant folder under Packages directory). It does not work when plugin is installed via Package Control.

Quick summary of my manual solution of adding custom .tmLanguage files based on others' suggestions:
Put the myLang.tmLanguage file into a folder with your desired syntax
name.
Zip the folder so that it's named myLang.zip
Rename the zip archive to myLang.sublime-package
Put the myLang.sublime-package into the Sublime 3 packages folder. It will now appear in the sublime syntax highlighting menu.
Based on ST3 docs, I can't seem to find an alternative to this manual method right now, but it will work.
Package control will likely do everything you need behind the scene

Do you need the content of the tmLanguage file? If so, you shouldn't be accessing it directly. Instead, you should be using sublime.load_resource(name), where name is something like Packages/Robot Framework Assistant/robot.tmLanguage. If you are just trying to set the file syntax, you should be using view.set_syntax_file(syntax_file), where syntax_file is like name for the resource. I did not look at your plugin in detail, so please clarify what you are trying to do if both of those answers are incorrect.
As a side note, based on that error, you would probably see issues in ST2 also. You are only looking at the root packages folder, not in your package.
In ST3, jps decided to make plugins runnable from .sublime-package files, rather than needing to be extracted. These files are simply renamed .zip files. Updates do need to be made if you are accessing resources within your plugin, but the API has been extended to support it.
This isn't a great list, but it covers some of the changes in ST3 from ST2.
http://www.sublimetext.com/docs/3/porting_guide.html

The issue seems to be solved. Please refer to this fix.
Why I had problems with syntax settings(.tmLanguage) in ST3?
Because it is totally confusing and not clear from ST3 docs where that file should be located.
(Even if it says that files lookup is continued in Packages directory if file was not found in Installed Packages).
There are two 'main' folders under Sublime Text 3 directory: Installed Packages and Packages.
When the plugin is installed using Package Control it goes into Installed Packages directory packed into archive file called like Robot Framework Assistant.sublime-package (which is actually ZIP file).
The robot.tmLanguage file (syntax file) is inside Robot Framework Assistant.sublime-package.
So, in few words, my question was: how to refer to that file (what path should be provided to view.set_syntax_file method)?
Unintuitive, but I should refer to non-existent path Packages/Robot Framework Assistant/robot.tmLanguage. Actually, in my case the Packages directory contains only Users folder. The only thing, that I can guess is that folder name should be the same as package name(Robot Framework Assistant in my case).

Related

Sublime Text 3 customizations vanished, is the Packages folder not being read?

After restarting my mac, all my sublime text customizations (packages, key bindings, syntax specific settings etc.) have vanished.
It's as if it were a fresh new install.
Upon investigating, I've noticed that the Browse Packages menu item now points to "/Applications/Sublime Text.app/Contents/MacOS/data/Packages" as opposed to what it used to (and where my packages are still present), which is "/Users/xxxxx/Library/Application Support/Sublime Text 3/Packages".
I feel like I should just copy the folder from one place to another, but I don't want to create a mess.
How do I get everything back to it's original state where my customizations are read?
Some additional info about my mac and ST3 (maybe relevant):
Sublime has an internal notion of where it's Data directory should be located, which is based on the operating system that you're using but resides somewhere in your home directory. The Data directory is the place where things like packages that you install and your User package (which contain your settings) is located, among other things.
If you create a folder named Data in the same location as the sublime text binary, that location becomes the Data directory instead of the default.
This is how the Windows portable version of Sublime works, and although it is not documented, it also works under MacOS and Linux (additionally the folder has to have the proper case of Data if your file system is case sensitive, which is not the default on MacOS or Windows).
The fastest expedient would be to quit sublime, and then rename /Applications/Sublime Text.app/Contents/MacOS/data to /Applications/Sublime Text.app/Contents/MacOS/data_old and restart. That should get you back your settings as they previously existed.
Once you've done that you can see if anything inside of the data_old/Packages folder is anything you care about and copy it to the appropriate location.

Where do some sublime packages and default settings go?

Sometimes I install a new sublime package and a new directory gets added to the /Users/max/Library/Application Support/Sublime Text 3/Packages directory, which I like because I can use a bookmark with FuzzyFileNav and quickly browse the default .sublime-settings and .sublime-key files to get my bearings about what is going on with this package. However sometimes there is no entry added, as shown below (ironically with FuzzyFileNav)
So then the way I would find the .sublime-settings and .sublime-keymap files is to use the dropdown menu in sublime also shown below:
What I'm wondering is:
Why do some packages add entries to my Packages directory and other don't?
If there is no entry in Packages then where do the package specific .sublime-settings and .sublime-keymap files live?
My main goal is to be able to quickly navigate between my User and Default settings but it makes it hard when I'm feeling like Hansel and wondering where'd all the files go...you know :)
One workaround that might work is to copy all the Default .sublime-settings and .sublime-keymap files that don't live in the Packages directory and put them in the User directory and rename them to PackageName.sublime-settings and PackageName.sublime-keymap and then I'll be able to browse them anyways because I also have a bookmark to User. I think that would work because it would overwrite all the Default settings (that live somewhere) with all the exact same settings. Or maybe I could do that same thing except put the files in the Default directory; however, from what I've been reading it's bad form to modify the Default directory. Obviously the most ideal thing would be to just figure out where the heck these files are.
Sublime Text uses different folder locations for different kinds of packages. For instance, all packaged files install to Installed Packages and are self-contained in a standard Zip file using the file extension .sublime-package. When a package includes a file .no-sublime-package, the package will be extracted. All extracted packages are stored in the Packages folder.
Settings and keymaps are stored within both packed and unpacked packages. Those can be overruled/extended by saving them to Packages/User.
Detailed information on package locations and hierarchy can be found in the Package Control documentation.
idleberg's answer contains a good explanation of why you were unable to find .sublime-package files & unpackaged files in the same location.
The following information details an alternative method you can use to navigate all package files, whether packed or unpacked.
All of SublimeTexst's installed package files can be navigated and edited via PackageResourceViewer's PackageResourceViewer: Open Resource command.
Any files that are edited from a .sublime-package file will have a new instance created at Packages/PackageName. The new file will now override the original file ( which still exists in the .sublime-package file ). The original file can be reactivated by deleting the edited file.
Files edited from an unpacked package will be affected directly.
If both packaged & unpackaged instances of a file exist, PackageResourceViewer will open the unpackaged instance.

How to rename a file in Sublime Text 3?

I wonder if there is a way that allows me to rename an opened file in Sublime Text 3?
Renaming would include that the currently opened file is created under a different name and deleted under the old name.
There's way too many people suggesting plugins for something simple and built into Sublime's Package Manager.
In Sublime 3 there is a built in command within Package Manager. So:
Shift+(Ctrl|Cmd)+p -> Rename File
Here is a package for Sublime Text 3 I wrote:
https://github.com/brianlow/FileRename
There's the SideBarEnhancements plugin that does this.
You can find it on GitHub here: https://github.com/titoBouzout/SideBarEnhancements/tree/st3
I recently added the functionality to AdvancedNewFile. It should rename the currently opened view, assuming you have the appropriate permissions at the source and destination locations. If you try it and run into an issue though, please create an issue on the github page.
Install AdvanceNewFile package from package manager.
Link: https://github.com/skuroda/Sublime-AdvancedNewFile
Use ctr+shift+p to open command window of sublime.
Enter Rename and select ANF: Rename File
Advantage of this package is you can also move and delete the file with rename.

Where are the default packages in Sublime Text 3 on Ubuntu?

I'm migrating from Sublime Text 2 to 3. In Sublime Text 2, I changed a lot of the default settings of the editor -- such as the tab bar height, sidebar color, etc. -- by modifying the Default.sublime-theme file in sublime-text-2/Packages/Theme - Default. I was also able to modify the colors of the default color schemes in a similar fashion. I've been trying to figure out how to do this for Sublime Text 3, but can't seem to find these files. ~/.config/sublime-text-3 only seems to contain overrides for user settings, not the default settings.
This link on the Sublime Text forums seems to give the location for Windows and Mac, but not for Ubuntu. I've searched a bit to no avail. Does anyone have suggestions?
Thank you!
To amplify on #skuroda's answer - ST3 contains all of its data that, in ST2, was stored in Packages/PackageName, in PackageName.sublime-package files that are basically just zip files, or "Resources" as they're now known. Using PackageResourceViewer, you can easily edit the individual files contained within the resource, then save it back again. When saved, the proper directory structure under Packages/PackageName will be created, allowing you to edit the file directly next time. The way file precedence works in Sublime, any file that exists in ~/.config/sublime-text-3/Packages/PackageName/ will override any file of the same name stored in PackageName.sublime-package.
However, since you don't want these files to be accidentally overwritten, I would suggest creating ~/config/sublime-text-3/Packages/User/Themes/ and User/Color Schemes directories and storing your customized files there instead. The User/ directory is protected from overwrites during upgrades, etc., and unless you're planning on creating a customized theme or color scheme for redistribution through Package Control, it's best practice to keep your files in there.
EDIT
I just realized you hadn't gotten an answer to your original question - where are the files stored? If you installed the .deb file from sublimetext.com, all the .sublime-package files are in /opt/sublime_text/Packages.
If you want the easiest way to save your customized settings first copy all the default settings and paste into a new file named Preferences.sublime-settings.
Then make your changes and save the file to:
/home/**username**/.config/sublime-text-3/Packages/User
In order to see the .config folder you will have to enable show hidden files.
The instructions are written at the top of the default settings list in case you are wondering where got this from.
In the ST console, try entering sublime.executable_path(). This should get you close to where you need to be. Also, you should copy the content of the file out and move them (under a new name to the packages folder). You probably don't want your modifications to be reverted on subsequent update. An alternative method is to try overriding the files you need to. I haven't done that for theme files, so I'm unsure if everything will work as it should. If you take the override route, I'd recommend using PackageResourceViewer. I wrote it to help with browsing/overriding package files in ST3.
You can use
dpkg -L <package name>
For example
dpkg -L subli<tab>
Just open up sublime text, hit ctrl+` to open sublime text console, then run these command accordingly
sublime.packages_path() to see user installed packages directory
sublime.installed_packages_path() to see zipped packages (with .sublime-package file type) directory
Mostly likely, you'll find the Default package inside zipped packages directory.
You can use PackageResourceViewer to see zipped packages's contents as #MattDMo suggested, but more over, you can actually extract zipped packages into user installed package directory directly using PackageResourceViewer's extract command.

Vim plugin Align fails to work. Can it be installed without vimball?

I've happily installed the vim Align plugin on my home computer, but on the Red Hat servers at work, the installation doesn't work. The servers at work have a very old copy (2006) of vimball, which from Googling I know doesn't support more recent vimballs, including Align. I can't get the systems group (IT department) to upgrade vimball, so I thought perhaps I could simply copy the various files into ~/.vim/plugin by hand. I copied the 3 files from my home system AlignMapsPlugin.vim AlignPlugin.vim cecutil.vim, but when I attempt to use Align from within vim I get the following error message
E117: Unknown function: Align#Align
I know that it's seeing the plugin, because when I remove the plugin the error message is different (it says "Not an editor command Align").
Is there a workaround for this? I love "Align" and would sure like to use it at work as well as at home.
{rtp}/plugin is not the only location where plugin files can be placed. The name of the function suggests that there is at least one file in {rtp}/autoload named Align.vim (autoloaded functions must have names looking like path#to#file#with#function#without#leading#autoload#function_name(), this example is for function located in {rtp}/autoload/path/to/file/with/function/without/leading/autoload.vim). But I strongly suggest that if #LucHermitte’s solution is not acceptable, you should use something that supports holding plugins in separate directories. If you used VAM all you needed to do (assuming that you have already installed align using VAM) is to look for files in ~/.vim/vim-addons/Align%294 and copy all of them.
Update: Forgot to say, you may try to install newer vimball plugin into your ~/.vim. In order to do this you need copy a file placed in /usr/share/vim/vim73/autoload/vimball.vim to ~/.vim/autoload (there is another related file, /usr/share/vim/vim73/plugin/vimballPlugin.vim, but it is not likely to be changed). No need to make IT department to upgrade anything, unless the newest version uses the newest vim features.
Install a recent (/the latest) vim in your $HOME. I've been doing this for ages now. It's the easiest way to get the job done (i.e. to have a proper environment).

Resources