30.11.2012

"Insert Tag" - python script для Notepad++

Для Notepad++ поперевыбирал кучу плагинов в надежде получить тривиальную штуку - текущее выделение обрамить HTML-тегом, который вначале будет запрошен.
НИГДЕ нет!


В результате написал код для плагина Python Script:
def openingTag(tagStr):

    return "<" + tagStr + ">"

def closingTag(tagStr):
    pureTag = tagStr.partition(" ")[0]
    unclosedTags = ["br", "input", "img", "link", "hr", "area",
                    "frame", "wbr", "meta", "base", "col",
                    "isindex", "param", "basefont"]
    if pureTag in unclosedTags:
        return ""
    return "</" + pureTag + ">"

tagStr = notepad.prompt("Tag with attributes:", "Insert HTML/XML tag")
if not tagStr is None:
    editor.beginUndoAction()
    
    selStr = editor.getSelText()
    editor.replaceSel(openingTag(tagStr) + selStr + closingTag(tagStr))
    
    editor.endUndoAction()

Делает следующее:
1. Спрашивает у пользователя тег с аттрибутами.
2. Обрамляет текущее выделение текста запрошенным тегом.
3. Понимает отсутствие выделения текста.
4. Понимает теги, которые не требуется закрывать.

Можно подвесить на клавишу, я подвесил на Alt+X через Shortcut Mapper, или на контекстное меню через редактирование contextMenu.xml.

1 комментарий:

  1. Огромное спасибо!! Я уж было отчаялся найти подобную штуку. Ты мне очень помог! Повесил на хоткей и гори в аду этот дримвьювер. ))

    ОтветитьУдалить