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 ). .