Aug 24, 2014

More on Komodo Edit macros

Using git grep inside 

It's a very great experience.
To set up, fill following as in images:

^(?P.+?):(?P\d+):(?P.*)$
git grep %(w:orask:Search Term) -- "%(ask:File Pattern:*)"
The result will be parsed and display in Komodo-style find results. I can even click on it to open the files!
Right click project structure to to mkdir is not a straight way at all. Finally I was able to create a folder using keyboard by this JS macro! I set it to Shift + Cmd + N
var koView =  ko.views.manager.currentView;
if (koView) {
    var folder = koView.koDoc.file.dirName;
    var names = ko.dialogs.prompt("New folder at: " + folder);
    if (!names) return;
    var path = folder + '/' + names;
    ko.run.runEncodedCommand(window, 'mkdir -p "' + path + '"');
} else {
    ko.places.viewMgr.addNewFolder();
}
// Another way - reference: https://github.com/Komodo/KomodoEdit/blob/trunk/src/components/koIOs.idl
// var os = Components.classes["@activestate.com/koOs;1"].getService(Components.interfaces.koIOs); 
// os.mkdir(path);
By the similar way, I also created 1 macro for creating file within current project folder or current file folder (if available)
var koView =  ko.views.manager.currentView;
if (koView) {
    var folder = koView.koDoc.file.dirName;
    // Reference: https://github.com/Komodo/KomodoEdit/blob/trunk/src/views/koIFileEx.idl
    var file = Components.classes["@activestate.com/koFileEx;1"].createInstance(Components.interfaces.koIFileEx);
    var name = ko.dialogs.prompt("New file at: " + folder);
    if (!name) {
        return;
    }
    var path = folder + '/' + name;
    file.URI = ko.uriparse.pathToURI(path);
    file.open("w");
    file.close();
    ko.open.URI(path);
} else {
    ko.places.viewMgr.addNewFile();
}