Разные недочеты/баги

main Alexey
Posts: 2245
Joined: 25.08.2021 18:15

Post by main Alexey »

main Alexey
Posts: 2245
Joined: 25.08.2021 18:15

Post by main Alexey »

наше главное репо- https://github.com/Alexey-T/CudaText . оттуда и качать.
плагин тут - https://github.com/Alexey-T/CudaText/tr ... a_addonman
mix-7
Posts: 741
Joined: 11.05.2018 11:02

Post by mix-7 »

Это ветка дерева каталогов репозитория, я там не нашел кнопки скачать zip.
Скачивать пофайлово?


Воспроизвести ошибку с Addons Manager не удалось.
Посмотрел
ls /tmp/cudatext_addon_man/
data.json lexers.json plugins.json
kv-addons.json linters.json snippets.json
plugins.json был в порядке, корректный на взгляд.

Addons Manager работал.

Пробовал
Plugins - Addons Manager - Install from Git
указал

Code: Select all

https://github.com/Alexey-T/CudaText/tree/master/app/py/cuda_addonman
получил сообщение
Got empty list of Git branches for that repo

CudaText GTK по-прежнему менял разрешение, и сеанс завершался.
Отладку в Lazarus там не пробовал еще.
А недостаточно в Lazarus открыть один первый файл формы?
Наверное, будут ссылки на другие функции, и компиляция и сборка не пройдут, исполняемого модуля для отладки не получится?
main Alexey
Posts: 2245
Joined: 25.08.2021 18:15

Post by main Alexey »

>Это ветка дерева каталогов репозитория, я там не нашел кнопки скачать zip.
качать zip можно только из страниццы "корень репозитория". оно качает весь репозиторий.
>Пробовал
Plugins - Addons Manager - Install from Git
указал https://github.com/Alexey-T/CudaText/tr ... a_addonman
а так нельзя. можно указать только URL репозитория, корня.
>А недостаточно в Lazarus открыть один первый файл формы?
в Лазарусе есть кнопка тулбара "forms". жмите и выберите форму fmMain.
потом- кнопка тулбара 'toggle form/unit view'.
в этом юните fmMain найдете FormClose метод.
>Наверное, будут ссылки на другие функции, и компиляция и сборка не пройдут
если не компилит, дайте тут сообщения ошибок из окна Messages.
IDE: View / Messages.
mix-7
Posts: 741
Joined: 11.05.2018 11:02

Post by mix-7 »

Обнаружил опасный баг.
Хотел выделить текст с середины до конца строки и вставить время шорткатом, назначенным плагину Insert Time.
Но ошибся и при выделении выделял не Shift+End, а случайно нажажал Shift+Ctrl+End, потом Ctrl+S - сохранение.
Время вставилось вместо огромного "хвоста" файла, а Undo по Ctrl+Z не работало.
Выделение (было сверху вниз, x,y < x1,y1) значит, вставка была по replace, а не insert.
Хорошо, что файл имел резервные копии, удалось восстановить.

Да, скопировал этот файл в копию, проверил воспроизводимость бага на копии - именно так, в стеке Undo нет того, что удалилось при замене выделенного на время, только текст до курсора без времени и с ним.

С Lazarus попробую
main Alexey
Posts: 2245
Joined: 25.08.2021 18:15

Post by main Alexey »

на мелком файле состоящим из строк

ddd
ddd
ddd
ddd

баг повторяяется? у меня с ним - undo работает. как повторить невозможность undo? нужен большой файл? нужен ваш settings/user.json? по шагам, плз.
mix-7
Posts: 741
Joined: 11.05.2018 11:02

Post by mix-7 »

> баг повторяяется?

да, повторил

> нужен ваш settings/user.json?

Code: Select all

{
  "pylib__linux" : "/usr/lib/python3.11/config-3.11-x86_64-linux-gnu/libpython3.11.so",
  "ui_toolbar_show" : true,
  "lexer_folding_max_lines" : 311000,
  "ui_max_size_lexer" : 3,
  "ui_statusbar_show" : true,
  "ui_sidebar_show" : true,
  "ui_theme" : "",
  "ui_theme_syntax" : "",
  "mouse_middle_click" : 2,
  "ui_lexer_themes" : false,
  "ui_reopen_session" : true,
  "ui_reopen_session_cmdline" : true,
  "micromap_show" : true,
  "micromap_bookmarks" : true,
  "micromap_on_scrollbar" : false,
  "scrollbar_themed" : true,
  "ui_max_history_edits" : 20,
  "ui_max_history_menu" : 25,
  "ui_max_history_files" : 25,
  "ui_max_history_clipboard" : 15,
  "ui_links_confirm" : false,
  "ui_save_always" : false,
  "ui_font_name__linux" : "Sans",
  "ui_font_size__linux" : 9,
  "auto_copy_clp" : "p"
}
> по шагам

У меня рабочий файл, файл ~504 КB UTF-8, на котором сегодня обнаружил этот баг.

Еще ранее был подобный баг по безвозвратному удалению текста по Ctrl+A, пробел.
У меня записано.
Это было год назад примерно, не нашел ссылку на форум.
Вместо Ctrl+S иногда случайно нажимаешь Ctrl+A
Текст выделяется, потом - бах - на пробел.
И все! Текст пропадает, а Undo не работает!

А может, так и не написал в форум?
Тогда пишу здесь, не повтор.





Проверил на тестовом файле (см. этот файл ниже) - все так же текст пропадает.


> по шагам

Вот тестовый пример:

Lib.ru/Современная литература: Федюкин Вениамин Константинович. Теория сверхдианамагничиваемости взамен ошибочной теории сверхэлектропроводимости тел
http://lit.lib.ru/f/fedjukin_weniamin_k ... edit.shtml


Сохранил как текст в FF в текстовый файл
/home/one/Загрузки/Lib.ru_Современная литература Федюкин Вениамин Константинович. Теория сверхдианамагничиваемости взамен ошибочной теории сверхэлектр.txt

(FF при сохранении как текст очищает текст от тегов html, сохраняет гораздо компактнее).

Открыл в CudaText, указал кодировку KOI-8R
CudaText 1.196.0.0, linux-x86_64-gtk2, fpc 3.2.3

В 849 строке выделил примерно посередине и вниз до конца по Ctrl+Shift+End (вместо Shift+End случайно, машинально, т.к. вставка времени у меня на похожий шорткат Ctrl+Shift+T )
И Ctrl+Shift+T

Время вставилось, но текст пропал, в консоли и модальном окне ошибки, скриншоты и текст ошибок привожу ниже.
После этого макро и вставка времени перестали работать (в другой вкладке)
Undo после рестарта в тестовой вкладки содержало только "голову" строки 849 до примерно середины, без timestamp

Скриншоты:
скриншот
скриншот
скриншот
скриншот
Консоль:

Code: Select all

Loaded session: "history session.json", 330ms, 26 file(s) + 1 modified
Startup: 720ms, plugins: 70ms (macros 45ms, code_tree_x 1ms, vim_mode 2ms, breadcrumbs 17ms)
Init: cuda_tree_wikidpad
Saved session: "history session.json", 27 file(s), by timer at 23:00:54
Init: cuda_insert_time
Saved session: "history session.json", 27 file(s), by timer at 23:01:25
Init: cudatext
Saved session: "history session.json", 27 file(s), by timer at 23:01:58
Saved session: "history session.json", 27 file(s), by timer at 23:02:28
Saved session: "history session.json", 27 file(s), by timer at 23:02:59
class Bread: def __init__(
Saved session: "history session.json", 28 file(s), by timer at 23:10:39
ERROR: Exception in CudaText for ins_default: List index (849) out of bounds
ERROR: Exception in CudaText for on_state: Access violation
ERROR: Exception in CudaText for cuda_breadcrumbs.on_state: Access violation
ERROR: Exception in CudaText for on_state: Access violation
ERROR: Exception in CudaText for cuda_code_tree_x.on_state: Access violation
ERROR: Exception in CudaText for on_state: Access violation
ERROR: Exception in CudaText for cuda_vim_mode.on_state: Access violation
ERROR: Exception in CudaText for on_state: Access violation

Original exception was:
ERROR: Exception in CudaText for cuda_breadcrumbs.on_state: SystemError: unknown opcode
ERROR: Exception in CudaText for on_state: Access violation
ERROR: Exception in CudaText for cuda_code_tree_x.on_state: AttributeError: 'int' object has no attribute 'APPSTATE_CODETREE_AFTER_FILL'
ERROR: Exception in CudaText for on_state: Access violation
ERROR: Exception in CudaText for cuda_vim_mode.on_state: AttributeError: 'int' object has no attribute 'active_was'
ERROR: Exception in CudaText for on_state: Access violation
ERROR: Exception in CudaText for on_state: Access violation
ERROR: Exception in CudaText for cuda_code_tree_x.on_state: AttributeError: 'int' object has no attribute 'APPSTATE_CODETREE_AFTER_FILL'
ERROR: Exception in CudaText for on_state: Access violation
ERROR: Exception in CudaText for cuda_vim_mode.on_state: AttributeError: 'int' object has no attribute 'active_was'
ERROR: Exception in CudaText for on_state: Access violation
Traceback (most recent call last):
  File "/home/one/.config/cudatext/py/cuda_code_tree_x/__init__.py", line 42, in on_state
    if state == APPSTATE_CODETREE_AFTER_FILL:
       ^^^^^
TypeError: unsupported operand type(s) for //: 'NoneType' and 'int'
ERROR: Exception in CudaText for cuda_code_tree_x.on_state: TypeError: unsupported operand type(s) for //: 'NoneType' and 'int'
ERROR: Exception in CudaText for on_state: Access violation
Traceback (most recent call last):
  File "/home/one/.config/cudatext/py/cuda_vim_mode/__init__.py", line 947, in on_state
    if not self.active_was:
           ^^^^
TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
ERROR: Exception in CudaText for cuda_vim_mode.on_state: TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
ERROR: Exception in CudaText for on_state: Access violation
Traceback (most recent call last):
  File "/home/one/.config/cudatext/py/cuda_code_tree_x/__init__.py", line 42, in on_state
    if state == APPSTATE_CODETREE_AFTER_FILL:
       ^^^^^
TypeError: unsupported operand type(s) for //: 'NoneType' and 'int'
ERROR: Exception in CudaText for cuda_code_tree_x.on_state: TypeError: unsupported operand type(s) for //: 'NoneType' and 'int'
ERROR: Exception in CudaText for on_state: Access violation
Traceback (most recent call last):
  File "/home/one/.config/cudatext/py/cuda_vim_mode/__init__.py", line 947, in on_state
    if not self.active_was:
           ^^^^
TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
ERROR: Exception in CudaText for cuda_vim_mode.on_state: TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
Saved session: "history session.json", 28 file(s), by timer at 23:11:23


...


on in CudaText for on_state: SystemError: unknown opcode
ERROR: Exception in CudaText for on_state: SystemError: unknown opcode
ERROR: Exception in CudaText for cuda_vim_mode.on_key: Access violation
ERROR: Exception in CudaText for on_key: Access violation
ERROR: Exception in CudaText for cuda_vim_mode.on_key: AttributeError: 'int' object has no attribute 'h'
ERROR: Exception in CudaText for cuda_vim_mode.on_key: Access violation
ERROR: Exception in CudaText for on_key: Access violation
ERROR: Exception in CudaText for cuda_vim_mode.on_key: AttributeError: 'int' object has no attribute 'h'
ERROR: Exception in CudaText for cuda_vim_mode.on_key: Access violation
ERROR: Exception in CudaText for on_key: Access violation
ERROR: Exception in CudaText for cuda_vim_mode.on_key: AttributeError: 'int' object has no attribute 'h'
ERROR: Exception in CudaText for ins_default: SystemError: unknown opcode
ERROR: Exception in CudaText for cuda_vim_mode.on_key: Access violation
ERROR: Exception in CudaText for on_key: Access violation
ERROR: Exception in CudaText for cuda_vim_mode.on_key: AttributeError: 'int' object has no attribute 'h'
ERROR: Exception in CudaText for on_state: SystemError: unknown opcode
ERROR: Exception in CudaText for on_state: SystemError: unknown opcode
ERROR: Exception in CudaText for on_state: SystemError: unknown opcode
ERROR: Exception in CudaText for cuda_tree_wikidpad.get_headers: SystemError: unknown opcode
ERROR: Exception in CudaText for on_state: SystemError: unknown opcode
ERROR: Exception in CudaText for on_state: SystemError: unknown opcode
ERROR: Exception in CudaText for on_state: SystemError: unknown opcode
Saved session: "history session.json", 28 file(s), by timer at 23:12:58
ERROR: Exception in CudaText for cudatext._menu_proc_callback_proxy: Access violation
ERROR: Exception in CudaText for cudatext._menu_proc_callback_proxy: Access violation
main Alexey
Posts: 2245
Joined: 25.08.2021 18:15

Post by main Alexey »

'List index' ошибку повторил. и поправил.
невозможность undo вижу!
спасибо, буду искать причину. отличный баг репорт.
main Alexey
Posts: 2245
Joined: 25.08.2021 18:15

Post by main Alexey »

отлаживаю. причина тут
atstrings_editing.inc
тут код заходит в else-block и очищает undo!

Code: Select all

  if (ALine2-ALine1)<FUndoList.MaxCount then
  begin
    //delete slowly with undo
    //AWithEvent=false to fix freeze by NN sec, by Ctrl+A,Del during lexer parsing
    for i:= ALine2 downto ALine1 do
      LineDelete(i, false{AForceLast}, false{WithEvent});
  end
  else
  begin
    //delete fast
    FList.DeleteRange(ALine1, ALine2);
    ClearUndo;
  end;
думаю.
main Alexey
Posts: 2245
Joined: 25.08.2021 18:15

Post by main Alexey »

код очищает undo так как "undo_limit":5000 а выделение имеет более строк - гдето 7000. как решение пока что поставьте "undo_limit" 10000 чтобы выделение влезло в лимит.
Post Reply