Full implementation of the procol
This commit is contained in:
242
lib/buffer.js
242
lib/buffer.js
@@ -1,130 +1,254 @@
|
||||
var Types = require("types.js");
|
||||
|
||||
function Buffer (vimClient) {
|
||||
|
||||
/**
|
||||
* Represents a buffer
|
||||
* @class
|
||||
* @param {InternalClient} client The vim client linked to the buffer
|
||||
* @param {number} buffId Id of the buffer
|
||||
*/
|
||||
function Buffer (client, buffId) {
|
||||
"use strict";
|
||||
|
||||
var buffId;
|
||||
var typeNum = 0;
|
||||
var typeNum = 0; //WARNING : check if this should be unique to a buffer
|
||||
var serNum = 0; //WARNING : check if this should be unique to a buffer
|
||||
|
||||
/* COMMANDS */
|
||||
|
||||
var addAnno = function (annoType, off) {
|
||||
|
||||
/**
|
||||
* Place an annotation
|
||||
* @function
|
||||
* @param {number} annoType Returned annoType by defineAnnoType
|
||||
* @param {number|number[]} offset Position of the annotation
|
||||
* @return {number} Serial number of the anno
|
||||
*/
|
||||
this.addAnno = function (annoType, off) {
|
||||
serNum += 1;
|
||||
client.sendCommand("addAnno", buffId, serNum, annoType,Types.position(off), 0 );
|
||||
return serNum;
|
||||
};
|
||||
|
||||
var close = function(){
|
||||
|
||||
/**
|
||||
* Close the buffer.
|
||||
* @function
|
||||
*/
|
||||
this.close = function(){
|
||||
client.sendCommand("close", buffId);
|
||||
};
|
||||
|
||||
var defineAnnoType = function (typeName, glyphFile, fg, bg) {
|
||||
/**
|
||||
* Define a type of annotation for this buffer
|
||||
* @function
|
||||
* @param {string} typeName Name that identifies this annotation type
|
||||
* @param {string} glyphFile Name of icon file
|
||||
* @param {string|number} fg Foreground color
|
||||
* @param {string|number} bg Background color
|
||||
* @return {number} Identifier of the annotation type
|
||||
*/
|
||||
this.defineAnnoType = function (typeName, glyphFile, fg, bg) {
|
||||
typeNum += 1;
|
||||
client.sendCommand("defineAnnoType", buffId, typeNum, Types.string(typeName), Types.string(""), Types.string(glyphFile), Types.color(fg), Types.color(bg));
|
||||
return typeNum;
|
||||
};
|
||||
|
||||
var startDocumentListen = function () {
|
||||
|
||||
/**
|
||||
* Mark the buffer to report changes with "insert" and "remove" events
|
||||
* @function
|
||||
*/
|
||||
this.startDocumentListen = function () {
|
||||
client.sendCommand("startDocumentListen", buffId);
|
||||
};
|
||||
|
||||
var stopDocumentListen = function () {
|
||||
|
||||
|
||||
/**
|
||||
* Mark the buffer to stop reporting changes
|
||||
* @function
|
||||
*/
|
||||
this.stopDocumentListen = function () {
|
||||
client.sendCommand("stopDocumentListen", buffId);
|
||||
};
|
||||
|
||||
var guard = function (off, len) {
|
||||
|
||||
/**
|
||||
* Mark an area in the buffer as guarded
|
||||
* @function
|
||||
* @param {number|number[]} off Starting position
|
||||
* @param {number} len Length of the area
|
||||
*/
|
||||
this.guard = function (off, len) {
|
||||
client.sendCommand("guard",buffId, Types.position(off), len);
|
||||
};
|
||||
|
||||
var initDone = function () {
|
||||
|
||||
/**
|
||||
* Tell Vim that the buffer is ready to be used and make it the current buffer
|
||||
* Fire the BufReadPost autocommand event
|
||||
* @function
|
||||
*/
|
||||
this.initDone = function () {
|
||||
client.sendCommand("initdone", buffId);
|
||||
};
|
||||
|
||||
var putBufferNumber = function (pathname) {
|
||||
|
||||
};
|
||||
|
||||
var netbeansBuffer = function (isNetBeansBuffer) {
|
||||
|
||||
/**
|
||||
* Tell Vim an initial insert is done
|
||||
* Trigger a read message being printed
|
||||
* @function
|
||||
*/
|
||||
this.insertDone = function () {
|
||||
client.sendCommand("insertDone", buffId);
|
||||
};
|
||||
|
||||
var removeAnno = function (serNum) {
|
||||
|
||||
/**
|
||||
* Tell Vim that the buffer is owned by the controller
|
||||
* @function
|
||||
* @param isNetBeansBuffer
|
||||
*/
|
||||
this.netbeansBuffer = function (isNetBeansBuffer) {
|
||||
client.sendCommand("netbeansBuffer", buffId, Types.bool(isNetBeansBuffer));
|
||||
};
|
||||
|
||||
var save = function () {
|
||||
|
||||
|
||||
/**
|
||||
* Removes a previously added annotation
|
||||
* @function
|
||||
* @param {number} serNum Identifier of the annotation to remove
|
||||
*/
|
||||
this.removeAnno = function (serNum) {
|
||||
client.sendCommand("removeAnno",buffId,serNum);
|
||||
};
|
||||
|
||||
var saveDone = function () {
|
||||
|
||||
/**
|
||||
* Tell Vim to save the buffer
|
||||
* Vim fire a setModified event when done
|
||||
* @function
|
||||
**/
|
||||
this.save = function () {
|
||||
client.sendCommand("save", buffId);
|
||||
};
|
||||
|
||||
var setBufferNumber = function () {
|
||||
|
||||
/**
|
||||
* Tell Vim the buffer has been saved
|
||||
* @function
|
||||
*/
|
||||
this.saveDone = function () {
|
||||
client.sendCommand("saveDone", buffId);
|
||||
};
|
||||
|
||||
var setDot = function (off) {
|
||||
|
||||
/**
|
||||
* Set Vim cursor position and set the buffer as current buffer
|
||||
* @function
|
||||
* @param {number|number[]} off Position of the cursor
|
||||
*/
|
||||
this.setDot = function (off) {
|
||||
client.sendCommand("setDot", buffId, Types.position(off));
|
||||
};
|
||||
|
||||
var setFullName = function (pathName) {
|
||||
|
||||
/**
|
||||
* Set the name of the buffer.
|
||||
* It does not read the file content
|
||||
* @function
|
||||
* @param {string} pathName Name of the buffer
|
||||
*/
|
||||
this.setFullName = function (pathName) {
|
||||
client.sendCommand("setFullName", buffId, Types.string(pathName));
|
||||
};
|
||||
|
||||
var setModified = function (modified) {
|
||||
|
||||
/**
|
||||
* Toggle the buffer modified mark
|
||||
* @function
|
||||
* @param {bool} modified Value of the modified flag
|
||||
*/
|
||||
this.setModified = function (modified) {
|
||||
client.sendCommand("setModified", buffId, Types.bool(modified));
|
||||
};
|
||||
|
||||
var setModtime = function (time) {
|
||||
|
||||
/**
|
||||
* Update a buffer modification time
|
||||
* @function
|
||||
* @param {number} time Modification time to set
|
||||
*/
|
||||
this.setModtime = function (time) {
|
||||
client.sendCommand("setModtime", buffId, time);
|
||||
};
|
||||
|
||||
var setReadOnly = function () {
|
||||
|
||||
/**
|
||||
* Mark the buffer as readonly
|
||||
* @function
|
||||
*/
|
||||
this.setReadOnly = function () {
|
||||
client.sendCommand("setReadOnly", buffId);
|
||||
};
|
||||
|
||||
var setTitle = function (name) {
|
||||
|
||||
/**
|
||||
* Set the title of the function (used by controller only)
|
||||
* @function
|
||||
* @param {string} name Name of the buffer
|
||||
*/
|
||||
this.setTitle = function (name) {
|
||||
client.sendCommand("setTitle", buffId, Types.string(name));
|
||||
};
|
||||
|
||||
var setVisible = function (visible) {
|
||||
|
||||
/**
|
||||
* Goto the buffer
|
||||
* @function
|
||||
*/
|
||||
this.setVisible = function () {
|
||||
client.sendCommand("setVisible", buffId, Types.bool(true));
|
||||
};
|
||||
|
||||
var showBalloon = function (text) {
|
||||
|
||||
/**
|
||||
* Display a balloon containing the text (GVim only)
|
||||
* @function
|
||||
* @param {string} text Text to show
|
||||
*/
|
||||
this.showBalloon = function (text) {
|
||||
client.sendCommand("showBalloon", buffId,Types.string(text));
|
||||
};
|
||||
|
||||
var unguard = function (off, len) {
|
||||
|
||||
/**
|
||||
* Ungard the text
|
||||
* @function
|
||||
* @param {number|number[]} off Start position of the text to unguard
|
||||
* @param {number} len Length of the text to unguard
|
||||
*/
|
||||
this.unguard = function (off, len) {
|
||||
client.sendCommand("unguard", buffId, Types.position(off), len);
|
||||
};
|
||||
|
||||
this.editFile = function (pathName){
|
||||
client.sendCommand("editFile", buffId, Types.string(pathName));
|
||||
};
|
||||
|
||||
|
||||
/* FUNCTIONS */
|
||||
|
||||
var getCursor = function (callback) {
|
||||
|
||||
this.getCursor = function (callback) {
|
||||
client.callFunction("getCursor", buffId, callback);
|
||||
};
|
||||
|
||||
var getLength = function (callback) {
|
||||
|
||||
this.getLength = function (callback) {
|
||||
client.callFunction("getLength", buffId, callback);
|
||||
};
|
||||
|
||||
var getAnno = function (serNum, callback) {
|
||||
|
||||
this.getAnno = function (serNum, callback) {
|
||||
client.callFunction("getAnno", buffId, serNum, callback);
|
||||
};
|
||||
|
||||
var getModified = function (callback) {
|
||||
|
||||
this.getModified = function (callback) {
|
||||
client.callFunction("getModified", buffId, callback);
|
||||
};
|
||||
|
||||
var getText = function (callback) {
|
||||
|
||||
this.getText = function (callback) {
|
||||
client.callFunction("getText", buffId, callback);
|
||||
};
|
||||
|
||||
var insert = function (off, text, callback){
|
||||
|
||||
this.insert = function (off, text, callback){
|
||||
client.callFunction("insert", buffId, Types.position(off), Types.string(text), callback);
|
||||
};
|
||||
|
||||
var remove = function (off, length, callback) {
|
||||
|
||||
this.remove = function (off, length, callback) {
|
||||
client.callFunction("remove", buffId, Types.position(off), length, callback);
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user