mozers
 
  
  Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору zvyagaaa   Не надо никого "умолять". Сделай сам путную раскраску, api, abbrev для своего Паскаля - и выкладывай сюда. Удачно получится - добавим в сборку. Неудачно - кто нить поможет поправить.   Лично я в Паскале не пишу. В чем пишу (JS, VBS, BAS, LUA) - то и модернизирую потихоньку...   Вот новый скрипт выкладываю: Код: -- Вывод списка функций / процедур, имеющихся в коде   -- mozers™ icq#256106175 (выполняя пожелание ALeXkRU при активном тестировании mimir)   -- Использованы идеи: Grisper и gansA   -----------------------------------------------------------------------      -- паттерны для разных языков программирования (корректируйте, дополняйте)   -- шлите ваши варианты на <mozers@mail.ru>   local findRegExp = {   --~     ['cxx']="\n[^,.<>=\n]-([^%s,.<>=\n]+[(][^.<>=\n)]-[)])%s-%b{}",       ['cxx']="([^.,<>=\n]-[ :][^.,<>=\n%s]+[(][^.<>=)]-[)])[%s\/}]-%b{}",         ['h']="([^.,<>=\n]-[ :][^.,<>=\n%s]+[(][^.<>=)]-[)])[%s\/}]-%b{}",   --~     ['pas']="\nprocedure ([^(]*%b()).-\n%bb;"       ['pas']="\nprocedure ([^(;]-)[;(].-\n%bb;"   }   local findPattern = findRegExp [props["FileExt"]]   if findPattern == nil then   -- универсальный паттерн для всех остальных языков программирования       findPattern = "\n[SsFf][Uu][BbNn][^ ]* ([^(]*%b())"   end      -- дальше - банальный поиск заданнго паттерна по всему тексту   output:ClearAll()   editor:MarkerDeleteAll(1)   local textAll = editor:GetText()   local startPos, endPos, findString   local count = 0   startPos = 1   print("> Список функций / процедур:")   while true do       startPos, endPos, findString = string.find(textAll, findPattern, startPos)       if startPos == nil then break end       -- убираем переводы строк и лишние пробелы       findString = string.gsub (findString, "\r\n", "")       findString = string.gsub (findString, "%s+", " ")       local style = editor.StyleAt[startPos]       -- если функция не закомментирована, то выводим ее в список       if not (style == 1 or style == 2) then           local line = editor:LineFromPosition(startPos)           editor:MarkerAdd(line,1)           print(props['FileNameExt']..':'..(line+1)..':\t'..findString)        end       count = count + 1       startPos = endPos + 1   end   if count > 0 then       trace("> Найдено: "..count.." функций / процедур\nДвойной щелчок на строке с результатом установит курсор на оригинальную строку")   else       trace("> Функций / процедур не найдено!")   end     |       Вот теперь он действительно ВСЕ языки понимает. Ну если не поймет где - то всех делов - паттерн добавить.     Была мысль сделать чтобы он результат в раскрывающийся список выводил...   Подумал трезво - "А оно надо???". Прикольнее? - ДА, удобнее? - НЕТ. |   Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено:  16:02 12-07-2006  | Исправлено: mozers,   11:50 21-07-2006    |  
  |