Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sublime text creating new view

Just taking a look at Sublime Text 2 with a view to extending it. I've popped up the console with CTRL ', and tried to do:

>>> x = window.new_file()
>>> x 
<sublime.View object at 0x00000000032EBA70>
>>> x.insert(0,"Hello") 

A new window does indeed open but my insert seemingly doesn't work:

Traceback (most recent call last):   File "<string>", line 1, in <module> Boost.Python.ArgumentError: Python argument types in
        View.insert(View, int, str) did not match C++ signature:
        insert(class SP<class TextBufferView>, class SP<class Edit>, __int64, class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >)

Any idea what I'm doing wrong?

like image 364
Dave F Avatar asked Mar 25 '23 07:03

Dave F


1 Answers

The .new_file() call returned a View object, so the .insert() method takes 3 arguments:

insert(edit, point, string)
int
Inserts the given string in the buffer at the specified point. Returns the number of characters inserted: this may be different if tabs are being translated into spaces in the current buffer.

See the sublime.View API reference.

The edit parameter is meant to be a sublime.Edit object; you need to call view.begin_edit() to create one, then call view.end_edit(edit) to demarque a undoable edit:

edit = x.begin_edit() 
x.insert(edit, 0, 'Hello')
x.end_edit(edit)

The Edit object is a token to group edits into something that can be undone in one step.

like image 163
Martijn Pieters Avatar answered Apr 05 '23 20:04

Martijn Pieters