Делалось достаточно давно еще когда работал на прежнем месте работы изначально под 3.0, потом переделывал под 4.0. Для работы необходим Tabax. Инструкцию, иконки и сам проект прикладываю в архиве (пока к сожалению версия только под 4).
Единственное что требуется для вмешательство в систему дописать в Editor один метод и дополнить один существующий. Свой исключил из проекта, поскольку у нас много мусора в нем.
Создаем
	PHP код:
	
		
			
void DevelopersComment(Editor e)
{
    int startLine = e.selectionStartLine();
    int endLine   = e.selectionEndLine();
    int startCol;
    str startStr;
    // >> GEV() 25 Авг 2009 GEV_NewProjectWithComment Создание новых проектов
    boolean         header = startLine == 1 && endLine == 1 && e.selectionStartCol() == e.selectionEndCol();
    ;
     if (header)
     {
        DEV_Scripts::commentCreateMethod(e);
     }
     else
     {
        DEV_Scripts::commentChangeMethod(e);
     }
} 
		
	
 Исправляем getApplicableScripts и добавляем то что стоит между тегами 
	PHP код:
	
		
			
 // >> GEV() 29 Сен 2009
 ...
    // << GEV() 29 Сен 2009 
		
	
 В итоге должно получиться что то вроде такого кода.
	PHP код:
	
		
			
// Use this method to control what scripts are shown on the scripts popup menu in the editor
container getApplicableScripts(Editor e)
{
    classId id = classnum(EditorScripts);
    TreeNode AOTNode = EditorScripts::getVersionControllableNode(e);
    DictClass dc = new DictClass(id);
    int i;
    container scripts;
    str methodName;
    boolean applicableMethod (int offset)
    {
        DictMethod mi = dc.objectMethodObject(offset);
        if (mi.noParms() != 2)
            return false;
        if (mi.name() == methodstr(EditorScripts, showScripts))
            return false;
        if ((mi.name() == methodstr(EditorScripts, versionControl_checkOut) ||
            mi.name() == methodstr(EditorScripts, versionControl_getLatest)) &&
            (!versioncontrol.parmSysVersionControlSystem() || !AOTNode ||
            versioncontrol.allowEdit(AOTNode)))
                return false;
        if ((mi.name() == methodstr(EditorScripts, versionControl_undoCheckOut) ||
            mi.name() == methodstr(EditorScripts, versionControl_checkIn)) &&
            (!versioncontrol.parmSysVersionControlSystem() || !AOTNode ||
            !versioncontrol.allowEdit(AOTNode)))
                return false;
        if (mi.parameterType(1) == Types::Class)
            return mi.returnType() == Types::void;
        return false;
    }
    // >> GEV() 29 Сен 2009
    ;
    // > AxAssist, 10.10.2007
      if(DEV_AxAssistSingleton::getThisClass().parmAltMEmulate())
    {
        DEV_AxAssistSingleton::getThisClass().parmEditor(e);
        DEV_AxAssistSingleton::getThisClass().parmAltMEmulate(false);
        return connull();
    }
    // < AxAssist, 10.10.2007
    // << GEV() 29 Сен 2009
    // Insert menu items.
    for (i = 1; i <= dc.objectMethodCnt(); i++)
    {
        if (applicableMethod (i))
        {
            methodName = dc.objectMethodObject(i).name();
            scripts += methodName;
        }
    }
    return scripts;
} 
		
	
 Ну а дальше читаем инструкцию и пользуемся). Будут проблемы пишите постараюсь помочь.