orbitalquark/textadept

Typing causes CPU heating at 500 lines 28 kByte large bash lexed file with large string areas.

Closed this issue · 11 comments

It's really annoying and making Textadept almost useless. Is it a general valid issue because of lexers written in Lua or can the bash lexer be improved? SciTE and other editors with comparable text highlighting do not have any delays and don't let the CPU-fans run hot while typing within the same file.
The sizes of the scripts I am writing are over time increasing. I was already some weeks ago wondering how does it come that the CPU-fans start to run from time to time without apparent reason and expected all, but not typing text in Textadept as the actual cause. Today I was able to reliably reproduce the issue identifying without any doubt fast (up to 350 chars/s) typing of text in Textadept as the cause.

The main question here is, does it make more sense with increasing size and complexity of the source code to go back to SciTE·from where I had come to Textadept or to does it make more sense to take a closer look at the lexers writing eventually own ones suitable to handle larger code?

What about re-design of the approach to lexing by skipping the dependence on a lexing library? Wouldn't it make it all much easier? With a well made template lexers designed to take advantage of techniques used to speeding up responses to typing and copying/pasting?

By the way: I am using Ubuntu proportional font set and tabs in my scripts, so the text looks strange if viewed using a monospaced font. The disadvantage of using tabs is that it needs that you stick to fonts with same proportion of characters in relation to the space character in order to get the positions right as intended. Scintilla seems to use the pixel width of the space character as reference for calculation of the tab positions in the text. If you switch to Ubuntu font then the colums will perfectly align.
The shell script below is a valid shell script you can run using bash. The only thing you need to do in order to make it work is to provide in the path the executable it will fail to find. The easiest way is to copy the with Linux/Unix like system coming executable called true and give the copy as name the Unicode character dot-above. But best you change the dot-above to middle-dot ... I am able to type on my English US intl. AltGr with dead keys keyboard using [ShiftLock]+[AltGr]+[.] as [AltGr]+[.] is giving the dot-above you see in the script. It's was not easy to find out how to type the middle dot which is on the GB version of the English keyboard at [AltGr]}[.], but not in US one. In between I have remapped shift-space to type ········· .

#!/usr/bin/bash
˙ '	A keyboard is the most essential peripheral of any computer system so it makes sense
to configure its function to suit custom needs on the Linux operating system, so that the keys on your keyboard will correspond to the letters or symbols that are being typed on screen. This is why it is so important to personalize the keyboard layout of your system to work with your keyboard model. In addition, we can configure custom keyboard settings which makes life a little easier.
  
	You can list all system-wide defined keyboard shortcuts defined in xconf database with
		~ $ xfconf-query -c xfce4-keyboard-shortcuts -lv
Notice that for some weird historical reasons <Primary> and <Control> refer to the same 
	Ctrl/Strg key on the keyboard. 
There are two guiApps, one for Window related functions and one general purpose which
allow to configure keyboard shortcuts: 
		~ $ xfce4-keyboard-settings
		~ $ xfwm4-settings
Both kinds of keyboard shortcuts are listed by xfconf-query. 
The keyboard shortcuts seem to have higher priority than keyboard mapping described
below: 
  ---  
You can list the currently used keyboard layout key mapping with
		;   xmodmap -pke   ;˙  
Below two lines out the output of the command above (with leading Tab, further Tabs added AND the Unicode characters in brackets):
	keycode  60 = (.)period   (>)greater 	()period  ()greater		(˙)dead_abovedot   (ˇ)dead_caron	(·)periodcentered   (÷)division
	keycode  61 = (/)slash   (?)question 	()slash   ()question		(¿)questiondown   (???)dead_hook	(???)dead_belowdot   (˙)dead_abovedot
	keycode  65 = ( )space ()NoSymbol ( )space
								^-- change to   periodcentered   
	keycode   9 = Escape NoSymbol Escape
							^-- find a meaningful usage for [Shift]+[Esc]
There are four pairs of entries:	first item in a pair describes the result of pressing the key without and the second value with pressed SHIFT:
							   Key	|/|	Shift						+ Key
		Ctrl 				+ Key	|/|	Shift	+ Ctrl				+ Key
		AltGr 				+ Key	|/|	Shift	+ AltGr				+ Key
		CapsLock + AltGr 	+ Key	|/|	Shift	+ CapsLock	+ AltGr	+ Key

Some useful mutliple key control sequences: 

		°	-> 	[Shift][AltGr][;]			(degree)
		˙	->	[AltGr][.][.]				(dead_abovedot	-> abovedot)
		·	-> 	[Shift][ ]				(periodcentered	-> middle dot)
					^-- default setting:	[CapsLock][AltGr][.]

See  <X11/keysymdef.h> for a  list  of  keysym  names. Keysyms matching Unicode characters not covered in the list of names may be also specified  as  "U0020"  to  "U007E"  and  "U00A0"  to "U10FFFF" for all possible Unicode characters.

Customizing keyboard key mapping in three simple steps:
	~ $ xmodmap -pke > ~/.Xmodmap	# save current settings to default configuration file
	~ $ e ~/.Xmodmap					# keep only changed lines in the configuration file
	~ $ xmodmap ~/.Xmodmap			# activate changes (add to Session and Startup list)
See:
	~ $ man  xmodmap
for more details on usage of   xmodmap   
###### Here is the place which lets the CPU  run hot if typed fast, fast and faster at
###### 300 and more strokes/second
###### I have disabled wrapping lines, but this did not help ...

'

# ======================================================================
# ~ $ xfconf-query -c xfce4-keyboard-shortcuts -lv
systemWideKeyboardShortcuts="
/commands/custom/<Alt>Escape               xfce4-taskmanager
/commands/custom/<Alt>Print                xfce4-screenshooter -w
/commands/custom/<Alt>f                    thunar /home/o/oOo/o
/commands/custom/<Alt>t                    xfce4-terminal --hide-menubar --default-working-directory /home/o/Desktop
/commands/custom/<Alt>w                    rofi -show window
/commands/custom/<Primary><Alt>Escape      xkill
/commands/custom/<Shift>Print              xfce4-screenshooter -r
/commands/custom/<Super>m                  xfce4-popup-whiskermenu
/commands/custom/Print                     xfce4-screenshooter -f
/commands/custom/override                  true
/commands/default/<Alt><Super>s            orca
/commands/default/<Alt>F1                  xfce4-popup-applicationsmenu
/commands/default/<Alt>F2                  xfce4-appfinder --collapsed
/commands/default/<Alt>F2/startup-notify   true
/commands/default/<Alt>F3                  xfce4-appfinder
/commands/default/<Alt>F3/startup-notify   true
/commands/default/<Alt>Print               xfce4-screenshooter -w
/commands/default/<Primary><Alt>Delete     xflock4
/commands/default/<Primary><Alt>Escape     xkill
/commands/default/<Primary><Alt>f          thunar
/commands/default/<Primary><Alt>l          xflock4
/commands/default/<Primary><Alt>t          x-terminal-emulator
/commands/default/<Primary><Shift>Escape   xfce4-taskmanager
/commands/default/<Primary>Escape          xfdesktop --menu
/commands/default/<Shift>Print             xfce4-screenshooter -r
/commands/default/<Super>e                 thunar
/commands/default/<Super>p                 xfce4-display-settings --minimal
/commands/default/<Super>r                 xfce4-appfinder -c
/commands/default/<Super>r/startup-notify  true
/commands/default/HomePage                 exo-open --launch WebBrowser
/commands/default/Print                    xfce4-screenshooter
/commands/default/Super_L                  xfce4-popup-whiskermenu
/commands/default/XF86Display              xfce4-display-settings --minimal
/commands/default/XF86Mail                 exo-open --launch MailReader
/commands/default/XF86WWW                  exo-open --launch WebBrowser
/providers                                 <<UNSUPPORTED>>
/xfwm4/custom/<Alt><Shift>Tab              cycle_reverse_windows_key
/xfwm4/custom/<Alt>F11                     fullscreen_key
/xfwm4/custom/<Alt>Tab                     cycle_windows_key
/xfwm4/custom/<Alt>space                   popup_menu_key
/xfwm4/custom/<Control><Alt>Left           left_workspace_key
/xfwm4/custom/<Control><Alt>Right          right_workspace_key
/xfwm4/custom/<Control><Alt>d              show_desktop_key
/xfwm4/custom/<Control><Shift><Alt>Left    move_window_left_key
/xfwm4/custom/<Control><Shift><Alt>Right   move_window_right_key
/xfwm4/custom/<Control><Shift><Alt>Up      move_window_up_key
/xfwm4/custom/<Primary><Alt>Left           left_workspace_key
/xfwm4/custom/<Primary><Alt>Right          right_workspace_key
/xfwm4/custom/<Primary><Alt>d              show_desktop_key
/xfwm4/custom/<Primary><Shift><Alt>Left    move_window_left_key
/xfwm4/custom/<Primary><Shift><Alt>Right   move_window_right_key
/xfwm4/custom/<Primary><Shift><Alt>Up      move_window_up_key
/xfwm4/custom/<Primary>q                   close_window_key
/xfwm4/custom/<Super>Tab                   switch_window_key
/xfwm4/custom/Down                         down_key
/xfwm4/custom/Escape                       cancel_key
/xfwm4/custom/Left                         left_key
/xfwm4/custom/Right                        right_key
/xfwm4/custom/Up                           up_key
/xfwm4/custom/override                     true
/xfwm4/default/<Alt><Control>End           move_window_next_workspace_key
/xfwm4/default/<Alt><Control>Home          move_window_prev_workspace_key
/xfwm4/default/<Alt><Control>KP_1          move_window_workspace_1_key
/xfwm4/default/<Alt><Control>KP_2          move_window_workspace_2_key
/xfwm4/default/<Alt><Control>KP_3          move_window_workspace_3_key
/xfwm4/default/<Alt><Control>KP_4          move_window_workspace_4_key
/xfwm4/default/<Alt><Control>KP_5          move_window_workspace_5_key
/xfwm4/default/<Alt><Control>KP_6          move_window_workspace_6_key
/xfwm4/default/<Alt><Control>KP_7          move_window_workspace_7_key
/xfwm4/default/<Alt><Control>KP_8          move_window_workspace_8_key
/xfwm4/default/<Alt><Control>KP_9          move_window_workspace_9_key
/xfwm4/default/<Alt><Shift>Tab             cycle_reverse_windows_key
/xfwm4/default/<Alt>Delete                 del_workspace_key
/xfwm4/default/<Alt>F10                    maximize_window_key
/xfwm4/default/<Alt>F11                    fullscreen_key
/xfwm4/default/<Alt>F12                    above_key
/xfwm4/default/<Alt>F4                     close_window_key
/xfwm4/default/<Alt>F6                     stick_window_key
/xfwm4/default/<Alt>F7                     move_window_key
/xfwm4/default/<Alt>F8                     resize_window_key
/xfwm4/default/<Alt>F9                     hide_window_key
/xfwm4/default/<Alt>Insert                 add_workspace_key
/xfwm4/default/<Alt>Tab                    cycle_windows_key
/xfwm4/default/<Alt>space                  popup_menu_key
/xfwm4/default/<Control><Alt>Down          down_workspace_key
/xfwm4/default/<Control><Alt>Left          left_workspace_key
/xfwm4/default/<Control><Alt>Right         right_workspace_key
/xfwm4/default/<Control><Alt>Up            up_workspace_key
/xfwm4/default/<Control><Alt>d             show_desktop_key
/xfwm4/default/<Control><Shift><Alt>Left   move_window_left_key
/xfwm4/default/<Control><Shift><Alt>Right  move_window_right_key
/xfwm4/default/<Control><Shift><Alt>Up     move_window_up_key
/xfwm4/default/<Control>F1                 workspace_1_key
/xfwm4/default/<Control>F10                workspace_10_key
/xfwm4/default/<Control>F11                workspace_11_key
/xfwm4/default/<Control>F12                workspace_12_key
/xfwm4/default/<Control>F2                 workspace_2_key
/xfwm4/default/<Control>F3                 workspace_3_key
/xfwm4/default/<Control>F4                 workspace_4_key
/xfwm4/default/<Control>F5                 workspace_5_key
/xfwm4/default/<Control>F6                 workspace_6_key
/xfwm4/default/<Control>F7                 workspace_7_key
/xfwm4/default/<Control>F8                 workspace_8_key
/xfwm4/default/<Control>F9                 workspace_9_key
/xfwm4/default/<Primary><Alt>Down          down_workspace_key
/xfwm4/default/<Primary><Alt>End           move_window_next_workspace_key
/xfwm4/default/<Primary><Alt>Home          move_window_prev_workspace_key
/xfwm4/default/<Primary><Alt>KP_1          move_window_workspace_1_key
/xfwm4/default/<Primary><Alt>KP_2          move_window_workspace_2_key
/xfwm4/default/<Primary><Alt>KP_3          move_window_workspace_3_key
/xfwm4/default/<Primary><Alt>KP_4          move_window_workspace_4_key
/xfwm4/default/<Primary><Alt>KP_5          move_window_workspace_5_key
/xfwm4/default/<Primary><Alt>KP_6          move_window_workspace_6_key
/xfwm4/default/<Primary><Alt>KP_7          move_window_workspace_7_key
/xfwm4/default/<Primary><Alt>KP_8          move_window_workspace_8_key
/xfwm4/default/<Primary><Alt>KP_9          move_window_workspace_9_key
/xfwm4/default/<Primary><Alt>Left          left_workspace_key
/xfwm4/default/<Primary><Alt>Right         right_workspace_key
/xfwm4/default/<Primary><Alt>Up            up_workspace_key
/xfwm4/default/<Primary><Alt>d             show_desktop_key
/xfwm4/default/<Primary><Shift><Alt>Left   move_window_left_key
/xfwm4/default/<Primary><Shift><Alt>Right  move_window_right_key
/xfwm4/default/<Primary><Shift><Alt>Up     move_window_up_key
/xfwm4/default/<Primary>F1                 workspace_1_key
/xfwm4/default/<Primary>F10                workspace_10_key
/xfwm4/default/<Primary>F11                workspace_11_key
/xfwm4/default/<Primary>F12                workspace_12_key
/xfwm4/default/<Primary>F2                 workspace_2_key
/xfwm4/default/<Primary>F3                 workspace_3_key
/xfwm4/default/<Primary>F4                 workspace_4_key
/xfwm4/default/<Primary>F5                 workspace_5_key
/xfwm4/default/<Primary>F6                 workspace_6_key
/xfwm4/default/<Primary>F7                 workspace_7_key
/xfwm4/default/<Primary>F8                 workspace_8_key
/xfwm4/default/<Primary>F9                 workspace_9_key
/xfwm4/default/<Shift><Alt>Page_Down       lower_window_key
/xfwm4/default/<Shift><Alt>Page_Up         raise_window_key
/xfwm4/default/<Super>KP_Down              tile_down_key
/xfwm4/default/<Super>KP_End               tile_down_left_key
/xfwm4/default/<Super>KP_Home              tile_up_left_key
/xfwm4/default/<Super>KP_Left              tile_left_key
/xfwm4/default/<Super>KP_Next              tile_down_right_key
/xfwm4/default/<Super>KP_Page_Up           tile_up_right_key
/xfwm4/default/<Super>KP_Right             tile_right_key
/xfwm4/default/<Super>KP_Up                tile_up_key
/xfwm4/default/<Super>Tab                  switch_window_key
/xfwm4/default/Down                        down_key
/xfwm4/default/Escape                      cancel_key
/xfwm4/default/Left                        left_key
/xfwm4/default/Right                       right_key
/xfwm4/default/Up                          up_key
"
#	~ $ xmodmap -pke
currentKeyboardLayoutKeyMapping="
keycode   8 =
keycode   9 = Escape NoSymbol Escape
keycode  10 = 1 exclam 1 exclam onesuperior exclamdown onesuperior exclamdown
keycode  11 = 2 at 2 dead_diaeresis twosuperior dead_doubleacute twosuperior onehalf
keycode  12 = 3 numbersign 3 sterling threesuperior dead_macron threesuperior onethird
keycode  13 = 4 dollar 4 dollar currency sterling EuroSign onequarter
keycode  14 = 5 percent 5 percent EuroSign dead_cedilla onehalf threeeighths
keycode  15 = 6 asciicircum 6 dead_circumflex dead_circumflex onequarter threequarters onesixth
keycode  16 = 7 ampersand 7 ampersand dead_horn onehalf braceleft seveneighths
keycode  17 = 8 asterisk 8 asterisk dead_ogonek threequarters bracketleft trademark
keycode  18 = 9 parenleft 9 parenleft leftsinglequotemark dead_breve bracketright plusminus
keycode  19 = 0 parenright 0 parenright rightsinglequotemark dead_abovering braceright degree
keycode  20 = minus underscore minus underscore yen dead_belowdot backslash questiondown
keycode  21 = equal plus equal plus multiply division dead_cedilla dead_ogonek
keycode  22 = BackSpace BackSpace BackSpace BackSpace NoSymbol NoSymbol Terminate_Server NoSymbol NoSymbol Terminate_Server
keycode  23 = Tab ISO_Left_Tab Tab ISO_Left_Tab
keycode  24 = q Q q Q adiaeresis Adiaeresis at Greek_OMEGA
keycode  25 = w W w W aring Aring lstroke Lstroke
keycode  26 = e E e E eacute Eacute e E
keycode  27 = r R r R ediaeresis Ediaeresis paragraph registered
keycode  28 = t T t T thorn THORN tslash Tslash
keycode  29 = y Y y Y udiaeresis Udiaeresis leftarrow yen
keycode  30 = u U u U uacute Uacute downarrow uparrow
keycode  31 = i I i I iacute Iacute rightarrow idotless
keycode  32 = o O o O oacute Oacute oslash Oslash 
keycode  33 = p P p P odiaeresis Odiaeresis thorn THORN
keycode  34 = bracketleft braceleft bracketleft braceleft guillemotleft leftdoublequotemark dead_diaeresis dead_abovering
keycode  35 = bracketright braceright bracketright braceright guillemotright rightdoublequotemark dead_tilde dead_macron
keycode  36 = Return NoSymbol Return
keycode  37 = Control_L NoSymbol Control_L
keycode  38 = a A a A aacute Aacute ae AE
keycode  39 = s S s S ssharp section ssharp section
keycode  40 = d D d D eth ETH eth ETH
keycode  41 = f F f F f F dstroke ordfeminine
keycode  42 = g G g G g G eng ENG
keycode  43 = h H h H h H hstroke Hstroke
keycode  44 = j J j J idiaeresis Idiaeresis dead_hook dead_horn
keycode  45 = k K k K oe OE kra ampersand
keycode  46 = l L l L oslash Oslash lstroke Lstroke
keycode  47 = semicolon colon semicolon colon paragraph degree dead_acute dead_doubleacute
keycode  48 = apostrophe quotedbl dead_acute at dead_acute dead_diaeresis apostrophe bar
keycode  49 = grave asciitilde dead_grave notsign dead_grave dead_tilde bar bar
keycode  50 = Shift_L NoSymbol Shift_L
keycode  51 = backslash bar numbersign dead_tilde notsign brokenbar bar bar
keycode  52 = z Z z Z ae AE guillemotleft less
keycode  53 = x X x X oe OE guillemotright greater
keycode  54 = c C c C copyright cent cent copyright
keycode  55 = v V v V registered registered leftdoublequotemark leftsinglequotemark
keycode  56 = b B b B b B rightdoublequotemark rightsinglequotemark
keycode  57 = n N n N ntilde Ntilde n N
keycode  58 = m M m M mu mu mu masculine
keycode  59 = comma less comma less ccedilla Ccedilla ccedilla Ccedilla
keycode  60 = period greater period greater dead_abovedot dead_caron periodcentered division
keycode  61 = slash question slash question questiondown dead_hook dead_belowdot dead_abovedot
keycode  62 = Shift_R NoSymbol Shift_R
keycode  63 = KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply XF86ClearGrab KP_Multiply KP_Multiply XF86ClearGrab
keycode  64 = Alt_L Meta_L Alt_L Meta_L
keycode  65 = space NoSymbol space
keycode  66 = Mode_switch Caps_Lock Mode_switch Caps_Lock
keycode  67 = F1 F1 F1 F1 F1 F1 XF86Switch_VT_1 F1 F1 XF86Switch_VT_1
keycode  68 = F2 F2 F2 F2 F2 F2 XF86Switch_VT_2 F2 F2 XF86Switch_VT_2
keycode  69 = F3 F3 F3 F3 F3 F3 XF86Switch_VT_3 F3 F3 XF86Switch_VT_3
keycode  70 = F4 F4 F4 F4 F4 F4 XF86Switch_VT_4 F4 F4 XF86Switch_VT_4
keycode  71 = F5 F5 F5 F5 F5 F5 XF86Switch_VT_5 F5 F5 XF86Switch_VT_5
keycode  72 = F6 F6 F6 F6 F6 F6 XF86Switch_VT_6 F6 F6 XF86Switch_VT_6
keycode  73 = F7 F7 F7 F7 F7 F7 XF86Switch_VT_7 F7 F7 XF86Switch_VT_7
keycode  74 = F8 F8 F8 F8 F8 F8 XF86Switch_VT_8 F8 F8 XF86Switch_VT_8
keycode  75 = F9 F9 F9 F9 F9 F9 XF86Switch_VT_9 F9 F9 XF86Switch_VT_9
keycode  76 = F10 F10 F10 F10 F10 F10 XF86Switch_VT_10 F10 F10 XF86Switch_VT_10
keycode  77 = Num_Lock NoSymbol Num_Lock
keycode  78 = Scroll_Lock NoSymbol Scroll_Lock
keycode  79 = KP_Home KP_7 KP_Home KP_7
keycode  80 = KP_Up KP_8 KP_Up KP_8
keycode  81 = KP_Prior KP_9 KP_Prior KP_9
keycode  82 = KP_Subtract KP_Subtract KP_Subtract KP_Subtract KP_Subtract KP_Subtract XF86Prev_VMode KP_Subtract KP_Subtract XF86Prev_VMode
keycode  83 = KP_Left KP_4 KP_Left KP_4
keycode  84 = KP_Begin KP_5 KP_Begin KP_5
keycode  85 = KP_Right KP_6 KP_Right KP_6
keycode  86 = KP_Add KP_Add KP_Add KP_Add KP_Add KP_Add XF86Next_VMode KP_Add KP_Add XF86Next_VMode
keycode  87 = KP_End KP_1 KP_End KP_1
keycode  88 = KP_Down KP_2 KP_Down KP_2
keycode  89 = KP_Next KP_3 KP_Next KP_3
keycode  90 = KP_Insert KP_0 KP_Insert KP_0
keycode  91 = KP_Delete KP_Decimal KP_Delete KP_Decimal
keycode  92 = ISO_Level3_Shift NoSymbol ISO_Level3_Shift
keycode  93 =
keycode  94 = backslash bar backslash bar backslash bar bar bar
keycode  95 = F11 F11 F11 F11 F11 F11 XF86Switch_VT_11 F11 F11 XF86Switch_VT_11
keycode  96 = F12 F12 F12 F12 F12 F12 XF86Switch_VT_12 F12 F12 XF86Switch_VT_12
keycode  97 =
keycode  98 = Katakana NoSymbol Katakana
keycode  99 = Hiragana NoSymbol Hiragana
keycode 100 = Henkan_Mode NoSymbol Henkan_Mode
keycode 101 = Hiragana_Katakana NoSymbol Hiragana_Katakana
keycode 102 = Muhenkan NoSymbol Muhenkan
keycode 103 =
keycode 104 = KP_Enter NoSymbol KP_Enter
keycode 105 = Control_R NoSymbol Control_R
keycode 106 = KP_Divide KP_Divide KP_Divide KP_Divide KP_Divide KP_Divide XF86Ungrab KP_Divide KP_Divide XF86Ungrab
keycode 107 = Print Sys_Req Print Sys_Req
keycode 108 = ISO_Level3_Shift NoSymbol ISO_Level3_Shift
keycode 109 = Linefeed NoSymbol Linefeed
keycode 110 = Home NoSymbol Home
keycode 111 = Up NoSymbol Up
keycode 112 = Prior NoSymbol Prior
keycode 113 = Left NoSymbol Left
keycode 114 = Right NoSymbol Right
keycode 115 = End NoSymbol End
keycode 116 = Down NoSymbol Down
keycode 117 = Next NoSymbol Next
keycode 118 = Insert NoSymbol Insert
keycode 119 = Delete NoSymbol Delete
keycode 120 =
keycode 121 = XF86AudioMute NoSymbol XF86AudioMute
keycode 122 = XF86AudioLowerVolume NoSymbol XF86AudioLowerVolume
keycode 123 = XF86AudioRaiseVolume NoSymbol XF86AudioRaiseVolume
keycode 124 = XF86PowerOff NoSymbol XF86PowerOff
keycode 125 = KP_Equal NoSymbol KP_Equal
keycode 126 = plusminus NoSymbol plusminus
keycode 127 = Pause Break Pause Break
keycode 128 = XF86LaunchA NoSymbol XF86LaunchA
keycode 129 = KP_Decimal KP_Decimal KP_Decimal KP_Decimal
keycode 130 = Hangul NoSymbol Hangul
keycode 131 = Hangul_Hanja NoSymbol Hangul_Hanja
keycode 132 =
keycode 133 = Super_L NoSymbol Super_L
keycode 134 = Super_R NoSymbol Super_R
keycode 135 = Menu NoSymbol Menu
keycode 136 = Cancel NoSymbol Cancel
keycode 137 = Redo NoSymbol Redo
keycode 138 = SunProps NoSymbol SunProps
keycode 139 = Undo NoSymbol Undo
keycode 140 = SunFront NoSymbol SunFront
keycode 141 = XF86Copy NoSymbol XF86Copy
keycode 142 = XF86Open NoSymbol XF86Open
keycode 143 = XF86Paste NoSymbol XF86Paste
keycode 144 = Find NoSymbol Find
keycode 145 = XF86Cut NoSymbol XF86Cut
keycode 146 = Help NoSymbol Help
keycode 147 = XF86MenuKB NoSymbol XF86MenuKB
keycode 148 = XF86Calculator NoSymbol XF86Calculator
keycode 149 =
keycode 150 = XF86Sleep NoSymbol XF86Sleep
keycode 151 = XF86WakeUp NoSymbol XF86WakeUp
keycode 152 = XF86Explorer NoSymbol XF86Explorer
keycode 153 = XF86Send NoSymbol XF86Send
keycode 154 =
keycode 155 = XF86Xfer NoSymbol XF86Xfer
keycode 156 = XF86Launch1 NoSymbol XF86Launch1
keycode 157 = XF86Launch2 NoSymbol XF86Launch2
keycode 158 = XF86WWW NoSymbol XF86WWW
keycode 159 = XF86DOS NoSymbol XF86DOS
keycode 160 = XF86ScreenSaver NoSymbol XF86ScreenSaver
keycode 161 = XF86RotateWindows NoSymbol XF86RotateWindows
keycode 162 = XF86TaskPane NoSymbol XF86TaskPane
keycode 163 = XF86Mail NoSymbol XF86Mail
keycode 164 = XF86Favorites NoSymbol XF86Favorites
keycode 165 = XF86MyComputer NoSymbol XF86MyComputer
keycode 166 = XF86Back NoSymbol XF86Back
keycode 167 = XF86Forward NoSymbol XF86Forward
keycode 168 =
keycode 169 = XF86Eject NoSymbol XF86Eject
keycode 170 = XF86Eject NoSymbol XF86Eject
keycode 171 = XF86AudioNext NoSymbol XF86AudioNext
keycode 172 = XF86AudioPlay XF86AudioPause XF86AudioPlay XF86AudioPause
keycode 173 = XF86AudioPrev NoSymbol XF86AudioPrev
keycode 174 = XF86AudioStop XF86Eject XF86AudioStop XF86Eject
keycode 175 = XF86AudioRecord NoSymbol XF86AudioRecord
keycode 176 = XF86AudioRewind NoSymbol XF86AudioRewind
keycode 177 = XF86Phone NoSymbol XF86Phone
keycode 178 =
keycode 179 = XF86Tools NoSymbol XF86Tools
keycode 180 = XF86HomePage NoSymbol XF86HomePage
keycode 181 = XF86Reload NoSymbol XF86Reload
keycode 182 = XF86Close NoSymbol XF86Close
keycode 183 =
keycode 184 =
keycode 185 = XF86ScrollUp NoSymbol XF86ScrollUp
keycode 186 = XF86ScrollDown NoSymbol XF86ScrollDown
keycode 187 = parenleft NoSymbol parenleft
keycode 188 = parenright NoSymbol parenright
keycode 189 = XF86New NoSymbol XF86New
keycode 190 = Redo NoSymbol Redo
keycode 191 = XF86Tools NoSymbol XF86Tools
keycode 192 = XF86Launch5 NoSymbol XF86Launch5
keycode 193 = XF86Launch6 NoSymbol XF86Launch6
keycode 194 = XF86Launch7 NoSymbol XF86Launch7
keycode 195 = XF86Launch8 NoSymbol XF86Launch8
keycode 196 = XF86Launch9 NoSymbol XF86Launch9
keycode 197 =
keycode 198 = XF86AudioMicMute NoSymbol XF86AudioMicMute
keycode 199 = XF86TouchpadToggle NoSymbol XF86TouchpadToggle
keycode 200 = XF86TouchpadOn NoSymbol XF86TouchpadOn
keycode 201 = XF86TouchpadOff NoSymbol XF86TouchpadOff
keycode 202 =
keycode 203 = Mode_switch NoSymbol Mode_switch
keycode 204 = NoSymbol Alt_L NoSymbol Alt_L
keycode 205 = NoSymbol Meta_L NoSymbol Meta_L
keycode 206 = NoSymbol Super_L NoSymbol Super_L
keycode 207 = NoSymbol Hyper_L NoSymbol Hyper_L
keycode 208 = XF86AudioPlay NoSymbol XF86AudioPlay
keycode 209 = XF86AudioPause NoSymbol XF86AudioPause
keycode 210 = XF86Launch3 NoSymbol XF86Launch3
keycode 211 = XF86Launch4 NoSymbol XF86Launch4
keycode 212 = XF86LaunchB NoSymbol XF86LaunchB
keycode 213 = XF86Suspend NoSymbol XF86Suspend
keycode 214 = XF86Close NoSymbol XF86Close
keycode 215 = XF86AudioPlay NoSymbol XF86AudioPlay
keycode 216 = XF86AudioForward NoSymbol XF86AudioForward
keycode 217 =
keycode 218 = Print NoSymbol Print
keycode 219 =
keycode 220 = XF86WebCam NoSymbol XF86WebCam
keycode 221 = XF86AudioPreset NoSymbol XF86AudioPreset
keycode 222 =
keycode 223 = XF86Mail NoSymbol XF86Mail
keycode 224 = XF86Messenger NoSymbol XF86Messenger
keycode 225 = XF86Search NoSymbol XF86Search
keycode 226 = XF86Go NoSymbol XF86Go
keycode 227 = XF86Finance NoSymbol XF86Finance
keycode 228 = XF86Game NoSymbol XF86Game
keycode 229 = XF86Shop NoSymbol XF86Shop
keycode 230 =
keycode 231 = Cancel NoSymbol Cancel
keycode 232 = XF86MonBrightnessDown NoSymbol XF86MonBrightnessDown
keycode 233 = XF86MonBrightnessUp NoSymbol XF86MonBrightnessUp
keycode 234 = XF86AudioMedia NoSymbol XF86AudioMedia
keycode 235 = XF86Display NoSymbol XF86Display
keycode 236 = XF86KbdLightOnOff NoSymbol XF86KbdLightOnOff
keycode 237 = XF86KbdBrightnessDown NoSymbol XF86KbdBrightnessDown
keycode 238 = XF86KbdBrightnessUp NoSymbol XF86KbdBrightnessUp
keycode 239 = XF86Send NoSymbol XF86Send
keycode 240 = XF86Reply NoSymbol XF86Reply
keycode 241 = XF86MailForward NoSymbol XF86MailForward
keycode 242 = XF86Save NoSymbol XF86Save
keycode 243 = XF86Documents NoSymbol XF86Documents
keycode 244 = XF86Battery NoSymbol XF86Battery
keycode 245 = XF86Bluetooth NoSymbol XF86Bluetooth
keycode 246 = XF86WLAN NoSymbol XF86WLAN
keycode 247 = XF86UWB NoSymbol XF86UWB
keycode 248 =
keycode 249 = XF86Next_VMode NoSymbol XF86Next_VMode
keycode 250 = XF86Prev_VMode NoSymbol XF86Prev_VMode
keycode 251 = XF86MonBrightnessCycle NoSymbol XF86MonBrightnessCycle
keycode 252 = XF86BrightnessAuto NoSymbol XF86BrightnessAuto
keycode 253 = XF86DisplayOff NoSymbol XF86DisplayOff
keycode 254 = XF86WWAN NoSymbol XF86WWAN
keycode 255 = XF86RFKill NoSymbol XF86RFKill
> exit status: 0
"
max_fields=0
# Iterate over each line of text stored in the variable $currentKeyboardLayoutKeyMapping
while IFS= read -r line; do 
#-> while ...; do invokes running a loop as long as   read   succeeds to get a line from the content of the variable which will be used as stdin for read utilizing the '<<<' construct of providing stdin content
#	IFS= 				-> sets IFS (Internal Field Separator) to an empty value to prevent trimming the leading and trailing spaces. Specifying IFS within the while construct prevents IFS from being globally changed and affect subsequent code following the loop
# 	IFS= read -r line		-> reads each line into the variable  line preserving leading and trailing whitespace. Trimming leading and trailing whitespace would be else the default behavior with IFS set to whitespace 
#			-r			-> option tells   read   to treat backslashes (\) literally, disabling the default behavior of interpretation of backslash escapes found in the text of the line and converting them to the characters specified by the escape sequence
	fields=($line)	
# fields				-> BASH array with items (fields) got splitting  $line  using space as the delimiter according to the syntax of specification of a bash array items
	num_fields=${#fields[@]} 
#			fields[@]		-> evaluates to all items of the fields array
#			${#fields}		-> evaluates to number of items in a bash array 
#			$(#fields[@]}	-> improves readability of the above expression with two hints towards indicating the total amount of items in the array 
    if (( num_fields > max_fields )); then # update the maximum number of fields ( if necessary )
        max_fields=$num_fields
    fi
done <<< "$currentKeyboardLayoutKeyMapping" # '<<<' provides the content of the shell variable on the right side to the   read   function which requests input in order to extract lines from it 
# Print the maximum number of fields
echo "Maximum number of keyboard input levels: $(( ($max_fields-3)/2 ))"

# Initialize an empty array to store skipped items
skipped_items=()
ascii_letters_digits=()
# Iterate over each line in the variable
while IFS= read -r line; do
    # Split the line into fields using space as the delimiter
    fields=($line)
    # Loop through each field beginning with the fourth one:
    for ((i = 3; i < ${#fields[@]}; i++)); do
	field="${fields[$i]}"
        # Check if the field is a single ASCII letter or digit
        if [[ "$field" =~ ^[[:alnum:]]$ ]]; then
            # Add the ASCII letter or digit to the array of ASCII letters and digits
            ascii_letters_digits+=("$field")
        else
            # Add the skipped item to the array of skipped items
            skipped_items+=("$field")
        fi
    done
done <<< "$currentKeyboardLayoutKeyMapping"

# Sort and remove duplicates from the array of ASCII letters and digits
sorted_unique_ascii_letters_digits=($(printf "%s\n" "${ascii_letters_digits[@]}" | sort -u))

# Print the sorted and unique ASCII letters and digits
echo "Sorted and unique ASCII letters and digits:"
printf "%s\n" "${sorted_unique_ascii_letters_digits[@]}"

# Print the skipped items
# Sort and remove duplicates from the array of ASCII letters and digits
sorted_skipped_items=($(printf "%s\n" "${skipped_items[@]}" | sort -u))
echo "Sorted and uniquie skipped items:"
printf "%s\n" "${sorted_skipped_items[@]}"

P.S. I am using a custom version of Textadept, so to upgrade to newest changes I need to understand them and patch my code version with them. I mean that I had branched away at version 10 ... but ... except enabling keypress and key release for all keys my version is still almost identical with this of Textadept.

Does it mean that the lexer cares about parts of the document which are past the viewed part at each keystroke instead of skipping them from consideration because irrelevant?

I am currently on the path to approaching programming the oOo-way and are making some progress. From point of view of oOo concept splitting strings into smaller parts is not an option. The oOo-way makes excessive use of multi-line comments and of mixing code and comments which are executable parameters in disguise. I will need earlier or later an own parser which will make things simple without the need of backtracking or other techniques due to weird design of a programming language syntax ... anyway I need to decide which path I would like to go - stick with Textadept or go back to SciTE? The C-code of Lexilla lexers looks good to me ... somehow even better than building upon a lexer library in Lua ...
Another way is to apply highlighting only to some part of the text around the viewed window not caring much about the correctness, which would be in most cases ok, and if not ... it does not really matter much as the oOo way will probably not really need any highlighting in the sense of a syntax of a programming language.

"""view.idle_styling -> The idle styling mode. This mode has no effect when view.wrap_mode is on.""" -> what is mostly the case if I am working on a text. Any other idea what to switch off?

After adding this to init.lua:

--							SPEEDING·UP·SLOW·LEXING	
view.idle_styling = view.IDLESTYLING_NONE
--[[
The idle styling mode. This mode has no effect when view.wrap_mode is on.
    view.IDLESTYLING_NONE Style all the currently visible text before displaying it.
    view.IDLESTYLING_TOVISIBLE Style some text before displaying it and then style the rest incrementally in the background as an idle-time task.
    view.IDLESTYLING_AFTERVISIBLE Style text after the currently visible portion in the background.
    view.IDLESTYLING_ALL Style text both before and after the visible text in the background.
    The default value is view.IDLESTYLING_ALL.
]]

the heating up of the CPU is no more and scrolling down is OK·and without noticable delay.

THANKS·:) ... this solved the problem, so that I can close this issue as solved. Why stick to the ALL option then as default???

The current plan for the path using the oOo-way of thinking and approaching programming is to make different parts of "code" different by using different ranges of Unicode characters. This would turn lexing to colorizing characters based on their range within the Unicode ... this can't be then probably called lexing anymore ... it will be colorizing differently different Unicode code points ... no more backtracking, no more caring about the state the lexer is at to change it on given conditions ... The most difficult part on the oOo-way seems to make its advantages clear to others and spark enthusiasm. The benefits will be really apparent only after the system is equipped with thousands of files all designed in the oOo-way in mind - this can take years or even decades ... LLMs are only useful because of the huge database they are build upon. The oOo-way of approaching computer systems can show the power of the concept only if build upon Gigabytes or well organized data ... a solution to the by me personally perceived as mess approaches to solve the problem of having too much programming languages with adding even more new languages to the mess.

By the way: if you want to scroll fast through large files ... Helix can be a solution ... Best if I could add modal way of editing as an switchable option in Textadept ... Helix approach goes well along with what I consider a better way of editing ( the reason why I am not using vi, but using Helix ). .