cursor movement in right-to-left mode
- 
 Hi everyone, Arrow key navigation seems to be defined so that right arrow always moves the cursor FORWARD. This is counter-intuitive in RTL mode, as “forward” is now in the LEFT direction, and all other programs I know work that way. Would the developers consider changing this? In the meantime, can anyone help with a workaround? I.e. can the arrow keys be mapped differently for RTL and LTR modes? Thank you very much, 
 Nir
- 
 you could do it with a python script _g = globals() # global variable used to check status if not _g.get('SWITCHED_TO_RTL'): # if variable not defined yet, SWITCHED_TO_RTL = False # ----------------------------------------------------------------------------- def main(): # main function to handle start/stop behavior global SWITCHED_TO_RTL # assining to global variable if SWITCHED_TO_RTL: # if currently in RTL mode SWITCHED_TO_RTL = False # set flag to False editor.assignCmdKey(KEYS.RIGHT,2306) # and remap arrow and editor.assignCmdKey(KEYS.LEFT,2304) # left arrow key to default notepad.menuCommand(MENUCOMMAND.EDIT_LTR) # change view mode back to LTR else: # else SWITCHED_TO_RTL = True # set the flag to true editor.assignCmdKey(KEYS.RIGHT,2304) # and remap arrow and editor.assignCmdKey(KEYS.LEFT,2306) # left arrow key notepad.menuCommand(MENUCOMMAND.EDIT_RTL) # change view mode to LTR # ----------------------------------------------------------------------------- main()When running the script for the first time it remaps the left and right arrow key and changes the view to RTL, 
 next run would reverse the changes.Cheers 
 Claudia
- 
 Thank you very much Claudia, but I since realized the problem goes deeper (or is the following a separate problem?). The “push” mechanism for RTL languages in LTR mode is a bit screwy. Here’s an example: make sure you’re in LTR mode; on a blank line, enter “א”, space, “1”; on anther, enter “1”, space, “א”. Both lines look the same: “1 א” :(. Also, if you select the first letter in the first line, it LOOKS like the 1 is selected, but cut’n’paste it, and you’ll find the “real” first char, “א”, is the one that was selected. Developers? Workaround? Any other insights? Thank you, 
 Nir
- 
 I’ve been working with this problem for years now… Never found a workaround - I’d love it if there was, however, it seems like most programs have this problem. Microsoft Word is one of the only programs that deal with this excellently! 
- 
 I think this is a problem of some of the lexers because if I try to do it and having python as language set it doesn’t happen. 
 But if I have normal text as language, then it happens. You can workaround it by defining an empty udl and use it as “YOUR_NORMAL_TEXT”.Btw I guess there is a need to have more shortcuts reassigned. The once, I think, are useful are _g = globals() # global variable used to check status if not _g.get('SWITCHED_TO_RTL'): # if variable not defined yet, SWITCHED_TO_RTL = False # ----------------------------------------------------------------------------- def main(): # main function to handle start/stop behavior global SWITCHED_TO_RTL # assining to global variable if SWITCHED_TO_RTL: # if currently in RTL mode SWITCHED_TO_RTL = False # set flag to False (default) editor.assignCmdKey(KEYS.LEFT, 2304) # char left editor.assignCmdKey(KEYS.LEFT + (KEYMOD.SHIFT << 16), 2305) # char left extend editor.assignCmdKey(KEYS.LEFT + (KEYMOD.SHIFT + KEYMOD.ALT << 16), 2428) # char left rect extend editor.assignCmdKey(KEYS.LEFT + (KEYMOD.CTRL << 16), 2308) # word left editor.assignCmdKey(KEYS.LEFT + (KEYMOD.SHIFT + KEYMOD.CTRL << 16), 2309) # word left extend editor.assignCmdKey(KEYS.RIGHT, 2306) # char right editor.assignCmdKey(KEYS.RIGHT + (KEYMOD.SHIFT << 16), 2307) # char right extend editor.assignCmdKey(KEYS.RIGHT + (KEYMOD.SHIFT + KEYMOD.ALT << 16), 2429) # char right rect extend editor.assignCmdKey(KEYS.RIGHT + (KEYMOD.CTRL << 16), 2310) # word right editor.assignCmdKey(KEYS.RIGHT + (KEYMOD.SHIFT + KEYMOD.CTRL << 16), 2311) # word right extend notepad.menuCommand(MENUCOMMAND.EDIT_LTR) # change view mode back to LTR else: # else SWITCHED_TO_RTL = True # set the flag to true (RTL mode) editor.assignCmdKey(KEYS.RIGHT, 2304) # editor.assignCmdKey(KEYS.RIGHT + (KEYMOD.SHIFT << 16), 2305) # editor.assignCmdKey(KEYS.RIGHT + (KEYMOD.SHIFT + KEYMOD.ALT << 16), 2428) # editor.assignCmdKey(KEYS.RIGHT + (KEYMOD.CTRL << 16), 2308) # editor.assignCmdKey(KEYS.RIGHT + (KEYMOD.SHIFT + KEYMOD.CTRL << 16), 2309) # editor.assignCmdKey(KEYS.LEFT, 2306) # editor.assignCmdKey(KEYS.LEFT + (KEYMOD.SHIFT << 16), 2307) # editor.assignCmdKey(KEYS.LEFT + (KEYMOD.SHIFT + KEYMOD.ALT << 16), 2429) # editor.assignCmdKey(KEYS.LEFT + (KEYMOD.CTRL << 16), 2310) # editor.assignCmdKey(KEYS.LEFT + (KEYMOD.SHIFT + KEYMOD.CTRL << 16), 2311) # notepad.menuCommand(MENUCOMMAND.EDIT_RTL) # change view mode to RTL # ----------------------------------------------------------------------------- main()Cheers 
 Claudia
- 
 Hello all, @Claudia, 
 Welcome back. :)And thanks for the script. 
 Two comments:- editor1and- editor2if you want to apply the keys to both views.
- Ctrl + (reassigned) Arrow does not work properly when using a RTL language in LTR mode (and vice versa).
 @Nir, 
 Scintilla does not fully support RTL. We should raise the issue there more frequently.@Davey, 
 EditPad is quite a good editor which fully supports RTL and bidi.
 You can set the behavior of the left/right arrows in Options -> Configure File Types -> Editor Options -> Default text layout -> Edit.
 (I use the PRO version). Best regards. 
- 
 @Yaron, 
 Hi and thanks for the suggestion.
 My problem is that I am referring to coding - i.e., in my code I have Hebrew text (e.g. messages, dialogs etc.) and it’s extremely difficult to work with!
 So, since I use n++ for coding (as I developed a custom syntax using UDL2 as well as functions hints and function list), using editPad is not really relevant in my case… unless there’s more there than I expect… :)Thanks, 
 David
- 
 Hello David, You’re welcome. NPP is undoubtedly a great editor. Combining Latin and Hebrew, however, is much easier with EditPad. 
 It is a developer editor and you can set a custom syntax highlight.I use a toolbar button in both editors to open the current file (and line) in the other editor. In NPP: 
 <Command name="פתח ב- EditPad..." Ctrl="no" Alt="no" Shift="no" Key="0">"C:\Program Files\EditPad Pro\EditPadPro7.exe" "$(FULL_CURRENT_PATH)" /l$(CURRENT_LINE)</Command>and in EditPad: 
 "C:\Program Files\Notepad++\NP\notepad++.exe" "%FILE%" -n%LINE%.Best regards. 

