On 17.11.2023 03:35, Andreas Kohlbach wrote:
> On Fri, 17 Nov 2023 02:44:45 +0100, Janis Papanagnou wrote:
>> On 17.11.2023 00:08, Andreas Kohlbach wrote:
>>> VIM erlaubt per Default das Einfärben von maximal 3000 Zeichen pro Zeile.
>>>
>>> Ich habe Dateien, die länger sind.
[...]
> Ich dachte halt, dass die 3000er Grenze vielleicht geschaffen wurde, als
> die Hardware noch unter 1 GB RAM und 1-Kern Prozessoren hatte. Heutige
> Hardware (meine ist 10 Jahre alt, sollte aber immer noch als "modern"
> gelten) sollte auch bei 10000 Zeichen keinen zu großen Schluckauf haben.
Selbst bei "alten" Systemen sind diese Größenordnungen nicht wirklich
ein Problem.
Meine Vermutung war gewesen, dass es vielleicht ein "buffering" Problem
ist; oft werden da statische Größen verwendet, die als sinnvoll und
ausreichend angesehen werden. Ist ja meistens auch so; das Coloring ist
ja ein Feature für die interaktive Orientierung in den Daten, und wenn
man Zeilenlängen in den 1000ern hat, dann ist nicht mehr viel los mit
der Orientierung. - Das wäre jedenfalls meine Vermutung und Erklärung
für solch ein Limit.
Ich habe mal kurz (und zum ersten Mal) in den Sourcecode reingeschaut.
Eine verdächtige Codesequenz mit einer Konstante im 3000er Bereich ist:
{"synmaxcol", "smc", P_NUM|P_VI_DEF|P_RBUF,
#ifdef FEAT_SYN_HL
(char_u *)&p_smc, PV_SMC, NULL, NULL,
{(char_u *)3000L, (char_u *)0L}
#else
(char_u *)NULL, PV_NONE, NULL, NULL,
{(char_u *)0L, (char_u *)0L}
#endif
Das ("synmaxcol") deckt sich mit deiner oben geäußerten Vermutung!
Von der Namensgebung her ist das wohl die Synhronisations-Kontextlänge
für die syntaktischen Prüfungen? (Ich spekuliere hier aber nur.) Wenn
das aber stimmt, dass dies die Ursache ist, und da es eine statische
hart-codierte Größe ist, wirst du das nur durch Neucompilieren des Vim
ändern können.
Janis