Linux/mono ide fixes (#3330)
* Update CodeCompletionActions.cs Показ Code Completion Window по Ctrl-Space, если курсор находится сразу после точки (как сделано в Win версии). Текущее поведение - после точки ccw не показывать, только если курсор переместить на несколько символов вправо от точки. * [LIN][IDE] Update TextView.cs - fix GetVisualColumn with empty content На некоторых дистрибутивах Линукс (Убунту в частности) возникает ошибка времени выполнения IDE, Описываю действия - открываю сохраненную на диске программу, запускаю, закрываю, копирую текст программы и вставляю в новую вкладку, не сохраняя, запускаю и закрываю -- в логах пошли ошибки.. но такое не всегда происходит, иногда ошибок нет.. но похоже всё таки, что проявляется, когда есть вкладка с не сохраненным кодом. Причем интересно дефолтный каталог не сохраненной программы зависит от того, из какого каталога загружалась "сохраненная" программа, но не некий "по умолчанию". В результате иследований дошли до функции GetVisualColumn() которая подсчитывает количество столбцов текста в редактируемом документе на основе анализа графического отображения, но в случае если текст отсутствует (Document.Content == ""), на Linux/Mono происходит краш. Предлагаю избегать подсчёта столбцов при отсутствии текста, а сразу возвращать 9 (ноль) * [LIN][IDE] AssemblyResolveScope.cs -- fix OnAssemblyResolve event На некоторых дистрибутивах Linux (Ubuntu 22.04 в частности). При загрузке больших исходников, например GraphABC.pas или GraphABCHelper.pas в IDE на Linux/Mono могут перестать открываться новые вкладки редактора IDE и другие элементы интерфейса IDE. Было обнаружено, что в обработчик OnAssemblyResolve в этом случае приходит значиние поля входной переменной args.RequestingAssembly равное null. Это происходит по какой то причине и не всегда. Но если обрабатывать эту ситуацию, то IDE работает стабильно в этом случае.
This commit is contained in:
parent
9e4b2bcca9
commit
5996f4bbc2
|
|
@ -778,6 +778,7 @@ namespace ICSharpCode.TextEditor
|
|||
public int GetVisualColumn(int logicalLine, int logicalColumn)
|
||||
{
|
||||
int column = 0;
|
||||
if (TextArea.Document.TextContent.Length > 0) //fix crush under linux after clear document content - no content = zero columns
|
||||
using (Graphics g = textArea.CreateGraphics()) {
|
||||
CountColumns(ref column, 0, logicalColumn, logicalLine, g);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -146,6 +146,8 @@ namespace PascalABCCompiler.NetHelper
|
|||
|
||||
private Assembly OnAssemblyResolve(object obj, ResolveEventArgs args)
|
||||
{
|
||||
if (args.RequestingAssembly == null) //fix Linux/Mono IDE missworking after loading a huge pas source such as GraphABC.pas or GraphABCHelper.pas
|
||||
return null;
|
||||
var requestedName = new AssemblyName(args.Name);
|
||||
if (_assembliesByName.TryGetValue(requestedName.Name, out var assembly))
|
||||
return assembly;
|
||||
|
|
|
|||
Loading…
Reference in a new issue