Author Topic: Проблема со списком функций (Navigation Bar) в C++  (Read 1704 times)

Offline megadrive

  • Newbie
  • *
  • Posts: 26
  • Karma: +0/-0
    • View Profile
alex
С закладками проблема.
Code: [Select]
#include <stdio.h>

int main(int argc, char *argv[])
{
printf("Hello, world\n");

return 0;
}

На второй строке ctrl-f2 жмем-устанавливается. А вот стереть уже не получается эту закладку. Версия: 1.51.18 x64.
И неплохо бы было иметь возможность в порядке добавления сортировать закладки.
Удобно бы было при разборе кода, так же, если к закладкам можно было свои комментарии добавлять.

Еще в конце функции после } не везде срабатывают добавления типа << void func() >>.

Еще в "List of labels in current file" хорошо бы прокрутку мышью по элементам сделать (ну или с shift или ctrl + мышь). А то крутит код на заднем плане сейчас. И хорошо бы переходить в этом списке на то место при его открытии, где сейчас курсор (ну или с shift или ctrl, например, переходить а если не нажато, то как сейчас).
« Last Edit: April 07, 2014, 08:28:24 am by megadrive »

Offline alex

  • Developer
  • Global Moderator
  • Hero Member
  • *****
  • Posts: 2170
  • Karma: +37/-3
    • View Profile
    • HippoEDIT
Привет,

Quote
С закладками проблема.
Поправил.

Quote
И неплохо бы было иметь возможность в порядке добавления сортировать закладки.
Не знаю насколько это затребованный сценарий, но я гляну. Если будет не сложно добавлю.

Quote
Удобно бы было при разборе кода, так же, если к закладкам можно было свои комментарии добавлять.
Да, удобно :)

Quote
Еще в конце функции после } не везде срабатывают добавления типа << void func() >>.
Я думаю там все нормально. Если расстояние между началом/окончанием блока меньше чем 20 линий (в области видимости) то End Annotation не показывается.
http://wiki.hippoedit.com/options/xml/end-annotation-minimum

Quote
Еще в "List of labels in current file" хорошо бы прокрутку мышью по элементам сделать (ну или с shift или ctrl + мышь)
Оно и так есть, если не открывать Dropdown (просто скроллить над окошком с метками). А изменения выделения а выпадающем списке по скроллу, не совпадает со стандартным поведением для этого элемента (активен элемент под курсором и меняется  при движении). Или я чето не понял.

Quote
А то крутит код на заднем плане сейчас.
Это поправил - теперь не крутит.

Quote
И хорошо бы переходить в этом списке на то место при его открытии, где сейчас курсор (ну или с shift или ctrl, например, переходить а если не нажато, то как сейчас).
Не понял.

Offline megadrive

  • Newbie
  • *
  • Posts: 26
  • Karma: +0/-0
    • View Profile
Привет.
Quote
Не понял.
Ну находится курсор в какой то функции, вызвал я выпадающий список List of labels in current file. Предлагал что б, например, с нажатым ctrl при вызове, список сам проскроллился до функции где курсор. Типа показал где я смотрю сейчас.
Quote
А изменения выделения а выпадающем списке по скроллу, не совпадает со стандартным поведением для этого элемента (активен элемент под курсором и меняется  при движении)
Вот не понял зачем отличается. Вызвал список и скроль бы себе мышой его пока не ткнешь либо в код, либо в список и он не пропадёт. Ан нет-заноси мышь над бегунком, нажимай кнопку, тяни... Сколько лишних действий!

Ну и с большими файлами по другому бы как то работать... Программеры они логи многогиговые тоже могут смотреть ;) Загружать бы большие файлы блоками как то (как lister в тотал коммандере)-огромный файл весь сразу грузить долго и озу не резиновое.

Offline alex

  • Developer
  • Global Moderator
  • Hero Member
  • *****
  • Posts: 2170
  • Karma: +37/-3
    • View Profile
    • HippoEDIT
Quote
Ну находится курсор в какой то функции, вызвал я выпадающий список List of labels in current file. Предлагал что б, например, с нажатым ctrl при вызове, список сам проскроллился до функции где курсор. Типа показал где я смотрю сейчас.
Ок. Понятно.

Quote
Вот не понял зачем отличается. Вызвал список и скроль бы себе мышой его пока не ткнешь либо в код, либо в список и он не пропадёт. Ан нет-заноси мышь над бегунком, нажимай кнопку, тяни... Сколько лишних действий!
А Вы не отрывайте список, а скрольте над закрытым - действий меньше а работает как хочется ;)
Выделение активного элемента в выпадающем списке, зависит от положения курсора (находится под курсором). Соответственно скролл списка, должен в том числе двигать выделенный элемент, что не является естественным. Я посмотрю, если какое то вариант мне понравиться - то сделаю, если же нет то не обессудьте.

Quote
Ну и с большими файлами по другому бы как то работать... Программеры они логи многогиговые тоже могут смотреть ;) Загружать бы большие файлы блоками как то (как lister в тотал коммандере)-огромный файл весь сразу грузить долго и озу не резиновое.
Оно все понятно и нужно, но внутренние структуры и алгоритмы не заточены для загрузки файлов порционно. Простейший пример не закрытый многострочный комментарий в начале файла, прокрученного в конец. Конечно все сделать можно, но работы очень много. Пока я не планирую.

Offline megadrive

  • Newbie
  • *
  • Posts: 26
  • Karma: +0/-0
    • View Profile
Проблема со списком функций (Navigation Bar) в C++
« Reply #4 on: September 09, 2014, 10:22:33 am »
Не показывает функции в "List of labels of cuurent file" дальше той, в которой есть комментарий // и /* */ следом.
Code: [Select]
#include <stdio.h>

int main(int argc, char *argv[])
{
printf("Hello, world\n");
//1
/* 2 */
return 0;
}

bool test1()
{

}

Offline alex

  • Developer
  • Global Moderator
  • Hero Member
  • *****
  • Posts: 2170
  • Karma: +37/-3
    • View Profile
    • HippoEDIT
Re: Проблема со списком функций (Navigation Bar) в C++
« Reply #5 on: September 09, 2014, 11:09:19 am »
Последняя версия HE 1.51.33, последняя версия схеми:

Не воспроизводится. Попробуйте с последней версией редактора и схеми.
forum.hippoedit.com/beta-version-test/beta-1-51/

Offline megadrive

  • Newbie
  • *
  • Posts: 26
  • Karma: +0/-0
    • View Profile
Re: Проблема со списком функций (Navigation Bar) в C++
« Reply #6 on: September 09, 2014, 11:28:19 am »
Да, как то нестабильно воспроизводится. Создал новый, первый коммент добавил, второй, функцию.. Всё последнее по версиям. Есть файл, на котором воспроизводится стабильно и пропадает эффект после удаления // перед /* */
Но я его не могу послать :(

Offline megadrive

  • Newbie
  • *
  • Posts: 26
  • Karma: +0/-0
    • View Profile
Re: Проблема со списком функций (Navigation Bar) в C++
« Reply #7 on: September 09, 2014, 12:26:57 pm »
Очень странное поведение :(
Даже на том файле где повторяется отсечка функций, стоит изменить хоть как то файл и снова посмотреть список функций-уже все функции видны становятся.
Установлен НЕ как портабл на win7 x64 если что.

Offline alex

  • Developer
  • Global Moderator
  • Hero Member
  • *****
  • Posts: 2170
  • Karma: +37/-3
    • View Profile
    • HippoEDIT
Re: Проблема со списком функций (Navigation Bar) в C++
« Reply #8 on: September 09, 2014, 08:38:50 pm »
я по моему воспроизвел.
там никак с комментариями не связано - можно воспроизвести просто на новом документе, если добавить функцию test в конце - он на появляется, пока до нее что-нибудь не поменяешь.

поправлю. думаю дело не в схеме, а в оптимизации пересчета меток.

P.S. блин, ну сколько раз я просил - начинайте новую тему для новой проблемы! не пост, а мусорка.

Offline megadrive

  • Newbie
  • *
  • Posts: 26
  • Karma: +0/-0
    • View Profile
Вобщем, не показывает в конце находящиеся функции в некоторых исходниках на С++(MS) до первой правки файла. Пробел вставишь в любое место-сразу все отображаться начинает. Версия 1.60.18 х64.

Offline alex

  • Developer
  • Global Moderator
  • Hero Member
  • *****
  • Posts: 2170
  • Karma: +37/-3
    • View Profile
    • HippoEDIT
Если в некоторых - надо пример.
Может дело в размере файлов?

Offline megadrive

  • Newbie
  • *
  • Posts: 26
  • Karma: +0/-0
    • View Profile
Не в размере дело...

Offline alex

  • Developer
  • Global Moderator
  • Hero Member
  • *****
  • Posts: 2170
  • Karma: +37/-3
    • View Profile
    • HippoEDIT
Да, я знаю - размер не главное :)
Посмотрю -> воспроизвел, довольно странно.
« Last Edit: August 18, 2015, 06:20:33 pm by alex »

Offline alex

  • Developer
  • Global Moderator
  • Hero Member
  • *****
  • Posts: 2170
  • Karma: +37/-3
    • View Profile
    • HippoEDIT
Re: Проблема со списком функций (Navigation Bar) в C++
« Reply #13 on: September 09, 2015, 10:52:55 pm »
Надо добавить ")" после "type_extDevTrouble" в первом комментарии.
Вылетает regexp поиск из-за переполнения стека. Только в x64.

Другой вариант, упростить регулярное выражение для функций в C++.
Замените следующее определение метки в cbase_spec.xml:
Code: XML
  1.       <Label group="Function" match="(?:^|[\s;}])([A-Za-z_][\w*&amp;]*)\s+([~\w]+)\s*\(((?:[^\(\)]|\\r|\\n|\((?-1)\))*+)\)(\s+\w+)?\s*\{" name="\2" descr="\1 \2(\3)\4" scope="1" image="18" style="function">
  2.         <Skip if="\2" equal="if"/>
  3.         <Skip if="\2" equal="while"/>
  4.         <Skip if="\2" equal="switch"/>
  5.         <Skip if="\2" equal="do"/>
  6.       </Label>
  7.  
На это (убрана рекурсия "\((?-1)\)" ):
Code: XML
  1.       <Label group="Function" match="(?:^|[\s;}])([A-Za-z_][\w*&amp;]*)\s+([~\w]+)\s*\(((?:[^\(\)]|\\r|\\n)*+)\)(\s+\w+)?\s*\{" name="\2" descr="\1 \2(\3)\4" scope="1" image="18" style="function">
  2.         <Skip if="\2" equal="if"/>
  3.         <Skip if="\2" equal="while"/>
  4.         <Skip if="\2" equal="switch"/>
  5.         <Skip if="\2" equal="do"/>
  6.       </Label>
  7.  
Но это определение не будет ловить функции с вложенными скобками. Например:
Code: C++
  1. bool coreSonar( a = fun())
  2. {
  3. ...
  4. }
  5.  
« Last Edit: September 09, 2015, 11:38:53 pm by alex »