The whole point of this little exercise is to be able to write the current date in a file. In Notepad2 the shortcut is Ctrl+F5. Being just a teeny bit more ambitious, I wanted to have the date at the top of the file with the cursor in a blank line underneath - sort of a LOG file system. And my keyboard shortcut would be Ctrl+Shift+F5. So here goes:
Using the menu command 'Tools - New Plugin' I created a plugin and saved it under 'C:\Documents and Settings\username\Application Data\Sublime Text\Packages\User\InsertDateAtTop.py'. Here's the code:
- Code: Select all
import sublime, sublimeplugin
from datetime import date
# This simple plugin will insert the current date/time at top of the buffer when run.
# To run it, save it within the User/ directory, then open the console (Ctrl+~),
# and type: view.runCommand('InsertDateAtTop')
#
# See http://www.sublimetext.com/docs/plugin-basics for more information
class InsertDateAtTop(sublimeplugin.TextCommand):
def run(self, view, args):
now = date.today()
view.insert(0, now.strftime("%Y.%m.%d %a %H:%M") + "\n\n")
view.runCommand("move line -1")
This is my first try at python, so there's bound to be some bugs in it!
Anyway, I saved the file, and the console panel says:
Writing file C:\Documents and Settings\username\Application Data\Sublime Text\Packages\User\InsertDateAtTop.py with encoding UTF-8
Reloading plugin C:\Documents and Settings\username\Application Data\Sublime Text\Packages\User/InsertDateAtTop.py
So that sounds good.
Following the instructions in the HelloWorld sample, I opened the console and typed:
>>> view.runCommand('InsertDateAtTop')
Nothing. No output. Now I assume if there's an error in the code it would spit it out in the console. But the console is helpfully silent.
OK, that's one issue. The other is setting up the keybinding.
The Plugin Examples page says:
Duplicate
This defines a simple command, "duplicate" that duplicates the current line. To run, add this line to Default.sublime-keymap:
<binding key="ctrl+alt+d" command="duplicate"/>
(or type view.runCommand('duplicate') in the console.)
This information is also very terse. It doesn't say in which 'Default.sublime-keymap' file to add the binding. It could be Packages/Default or Packages/User. I assumed since I put the code in the User folder, that's where the keybinding would go. So I wrote this code there:
- Code: Select all
<bindings>
<binding key="ctrl+shift+f5" command="InsertDateAtTop"/>
</bindings>
You guessed it, nothing happens, no text in the console. I tried putting the binding in Packages/Default, same result.
What is wrong here? And why is a $60 product not being documented?
I don't consider the 'Support' section to live up to that name. Everywhere on the site I see 'documentation is in progress ;).' Opensource projects for the most part are very lively with screenshots, tutorials and even screencasts. I guess they have to try harder.
Looking through the forum I saw one of you guys ('sublimator') is busy creating screencasts with camtasia. Kudos to you! Unfortunately I can't make head or tails of what you are trying to say. There's no narration and the mouse and letters just rush all over the place. I tried installing the 'Persistent Shell' package and type 'ls -lah' in a file, as seen in the screencast http://blogdata.akalias.net/console3/console3.htm. An excercise in futility. Mainly because I don't know how sublimetext works!!
I know this post sounds ranty, but I really would like to use the product. It has the greatest interface on the market (Monokai!), and with just a little more effort with the docs people will be really happy and make you rich.
So pullease Jon, Nick et al. write a simple help file for people to get started, OK?
Oh yeah, what's wrong with my code?