OberonCore https://forum.oberoncore.ru/ |
|
Фикс DevReferences https://forum.oberoncore.ru/viewtopic.php?f=131&t=3471 |
Страница 1 из 1 |
Автор: | ilovb [ Понедельник, 06 Июнь, 2011 10:34 ] | ||
Заголовок сообщения: | Фикс DevReferences | ||
Иногда ложно срабатывает переход к исходнику, т.к. идентификатор попадается в комментарии. Чтобы это пофиксить, нужно в DevReferences поправить процедуру SearchIdent как дано ниже: Добавлена вложенная процедура Comment и два IFа ее вызывающие Код: PROCEDURE SearchIdent (t: TextModels.Model; ident: TextMappers.String; VAR beg, end: INTEGER; bold: BOOLEAN);
VAR r: TextModels.Reader; found: BOOLEAN; ch: CHAR; len, i: INTEGER; PROCEDURE Comment; BEGIN INC(beg); r.ReadChar(ch); LOOP LOOP WHILE ch = "(" DO INC(beg); r.ReadChar(ch); IF ch = "*" THEN Comment END END; IF ch = "*" THEN INC(beg); r.ReadChar(ch); EXIT END ; IF r.eot THEN EXIT END ; INC(beg); r.ReadChar(ch) END; IF ch = ")" THEN INC(beg); r.ReadChar(ch); EXIT END ; END END Comment; BEGIN end := 0; IF ident # "" THEN len := 0; WHILE ident[len] # 0X DO INC(len) END; r := t.NewReader(NIL); found := FALSE; beg := 0; r.SetPos(0); r.ReadChar(ch); WHILE ~r.eot & ~found DO (* search legal start symbol *) WHILE ~r.eot & ((ch < "A") OR (ch > "Z") & (ch # "_") & (ch < "a") OR (ch > "z")) DO INC(beg); r.ReadChar(ch); IF ch = "(" THEN INC(beg); r.ReadChar(ch); IF ch = "*" THEN Comment; END; END; END; i := 0; WHILE ~r.eot & (~bold OR SpecialFont(r)) & (i # len) & (ch = ident[i]) DO r.ReadChar(ch); INC(i) END; found := (i = len) & ((ch < "0") OR (ch > "9") & (ch < "A") OR (ch > "Z") & (ch # "_") & (ch < "a") OR (ch > "z")); IF ~r.eot & ~found THEN (* skip rest of identifier *) beg := r.Pos() - 1; WHILE ~r.eot & ~((ch < "0") OR (ch > "9") & (ch < "A") OR (ch > "Z") & (ch # "_") & (ch < "a") OR (ch > "z")) DO INC(beg); r.ReadChar(ch); IF ch = "(" THEN INC(beg); r.ReadChar(ch); IF ch = "*" THEN Comment; END; END; END END END; IF found THEN end := r.Pos() - 1 END END END SearchIdent;
|
Автор: | Info21 [ Понедельник, 06 Июнь, 2011 22:54 ] |
Заголовок сообщения: | Re: Фикс DevReferences |
ilovb писал(а): Иногда ложно срабатывает переход к исходнику, т.к. идентификатор попадается в комментарии. Пож., объясните пояснее
|
Автор: | Евгений Темиргалеев [ Понедельник, 06 Июнь, 2011 23:45 ] |
Заголовок сообщения: | Re: Фикс DevReferences |
ilovb писал(а): Добавлена вложенная процедура Comment и два IFа ее вызывающие Изменения, наверное, лучше выделять цветом (али ещё как) и прикладывать в тэге Code StdCoded-кусок odc-документа. Это удобнее, нежели уплощённый код с пояснениями, --- как для писания так и для понимания.
|
Автор: | ilovb [ Вторник, 07 Июнь, 2011 08:38 ] |
Заголовок сообщения: | Re: Фикс DevReferences |
Info21 писал(а): Пож., объясните пояснее Возьмите любой модуль. И, например, в разделе констант в комментарии напишите имя какой-нибудь процедуры модуля и сделайте болдом. Потом в логе напишите ИмяМодуля.ИмяПроцедуры, выделите сие и давите "source" в контекстном меню на выделенном. Ну и попадете в комментарий, а не туда куда должны были. |
Автор: | Info21 [ Вторник, 07 Июнь, 2011 12:30 ] |
Заголовок сообщения: | Re: Фикс DevReferences |
ilovb писал(а): ... попадете в комментарий, а не туда куда должны были. Теперь понял, спасибо.
|
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |