| | 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
 | 
 |