Как стать автором
Обновить

Комментарии 4

Очень рад, что пригодилось

Юзаю форматирование в Notepad++ с помощью плагина jN.
Он позволяет использовать JavaScript для автоматизации N++.
В данном случае использую Tidy для форматирования html


кусок из trdmTidy.js
var gFso = new ActiveXObject("Scripting.FileSystemObject");
var gTempFolder = Editor.nppDir +"\\plugins\\jN\\Intell\\";
var gTidyConfig = "tidy_config.txt";
var gTidyConfigFPath = Editor.nppDir +"\\plugins\\jN\\Intell\\"+gTidyConfig;
var gTidyExe = Editor.nppDir +"\\plugins\\jN\\system\\tidy.exe";
var gShell = new ActiveXObject("WScript.Shell");

var scriptsMenu;
if (!jN.scriptsMenu){
    scriptsMenu = Editor.addMenu("Скрипты");
    jN.scriptsMenu = scriptsMenu;
} else { 
    scriptsMenu = jN.scriptsMenu;
}

function formatText(psSelText) {
    var rv = psSelText;
    if(!gFso.FileExists(gTidyExe)) {
        return rv;
    }
    //debugger;
    var dt = new Date;
    var vTempFile1 = formatData(dt,"yyyyMMdd_hhmmss_ms")+".html";
    var vTempFile1F = gTempFolder +  vTempFile1;
    var vTempFile2 = formatData(dt,"yyyyMMdd_hhmmss_ms2")+".html";
    var vTempFile2F = gTempFolder + vTempFile2;
    saveToFile(rv, vTempFile1F);
    gShell.CurrentDirectory = gTempFolder;
    var gFilePath = gFso.GetFile(gTidyExe); 
    var cmdLine = ""+gFilePath.ShortPath+" -i -o "+ vTempFile2; //var cmdLine = ""+gFilePath.ShortPath+" -i -o "+ vTempFile2 + " -raw --wrap 120 " + vTempFile1;
    if(gFso.FileExists(gTidyConfigFPath)) {
        cmdLine = cmdLine + " -config "+gTidyConfig+" ";
    }
    cmdLine = cmdLine + " -raw --wrap 120 " + vTempFile1;   //message(cmdLine);
    gShell.Run(cmdLine,0,true);

    rv = loadFromFile(vTempFile2F);
    var vBodyPresentSrc = psSelText.indexOf('<body>');
    var vBodyPresent = rv.indexOf('<body>');
    if(vBodyPresentSrc == -1 && vBodyPresent>0) {    
        // если добавлены теги. Даже с настройками не хочет убирать разметку.
        rv = extractNecessaryText(rv);
    }   

    gFso.DeleteFile(vTempFile2F);
    gFso.DeleteFile(vTempFile1F);
    return rv;
}

// форматирование выделения
function myFormatText() {
    //debugger;
    var rv = '';
    IntellPlus.init();
    if(! (IntellPlus.curExtension == "html" || IntellPlus.curExtension == "htm")) {
        return;
    }
    var selText = "";   
    var selText = Editor.currentView.selection;
    if(selText.length > 0) {
        var selText2 = formatText(selText);
        if(selText2 != selText) {
            Editor.currentView.selection = selText2;
        }

    }   
    return rv;
}

// структура для добавления хоткея и меню
var myFormatTextCommand = {
    text: "Форматировать html \tCtrl+Y", 
    ctrl: true,    shift: false,    alt: false,
    key: 0x59, 
    cmd: myFormatText
};

addHotKey(myFormatTextCommand); 
scriptsMenu.addItem(myFormatTextCommand);

Немного моего "творчества" на основе плагина jN

Возможностей расширения функционала Notepad++ очень много. Через JavaScript-плагин? Почему бы и нет.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории