Notepad2e
Notepad2e copied to clipboard
Case commands to work on empty selection (next word)
Allow 4 Case commands (Upper/Lower/Invert/Title, except Sentence) work on empty selection: in this case take closest word like many other commands do:
Foo.| Bar.
After the command, caret may be moved or not and selection may be changed or not - implement the simplest approach. For example, Ctrl+U on empty selection can be made Ctrl+Space + Ctrl+U:
Foo. [bar].
Or it can keep caret/selection where it was:
Foo.| bar.
Done.
I see you have "emulated" Ctrl+Space prior to every command. Am I right that it only works thanks to our disabling of Ctrl+Space selecting entire line? Because in standard Scintilla this implementation will apply the char case command to the entire line if there was any selection prior to the command.
This is not a problem, just want to clear it up.
Also, I can't find the issue where we implemented Ctrl+Space disabling - can you find it?
I see you have "emulated" Ctrl+Space prior to every command.
No, these are "inline" calls to run "Select word" command which is processed by Notepad2e handler (using "get word start/end" commands sent to Scintilla).
SendMessage(hwndMain, WM_COMMAND, MAKELONG(IDM_EDIT_SELECTWORD, 1), 0);
Am I right that it only works thanks to our disabling of Ctrl+Space selecting entire line? Because in standard Scintilla this implementation will apply the char case command to the entire line if there was any selection prior to the command.
Do you mean "Complete Symbol" command in SciTE? There is a command handler within SciTE code itself which is not a part of Scintilla.
Also, I can't find the issue where we implemented Ctrl+Space disabling - can you find it?
There is no default Scintilla's hotkey assigned to Ctrl+Space (original file, not modified):
const KeyToCommand KeyMap::MapDefault[] = {
#if OS_X_KEYS
{SCK_DOWN, SCI_CTRL, SCI_DOCUMENTEND},
{SCK_DOWN, SCI_CSHIFT, SCI_DOCUMENTENDEXTEND},
{SCK_UP, SCI_CTRL, SCI_DOCUMENTSTART},
{SCK_UP, SCI_CSHIFT, SCI_DOCUMENTSTARTEXTEND},
{SCK_LEFT, SCI_CTRL, SCI_VCHOME},
{SCK_LEFT, SCI_CSHIFT, SCI_VCHOMEEXTEND},
{SCK_RIGHT, SCI_CTRL, SCI_LINEEND},
{SCK_RIGHT, SCI_CSHIFT, SCI_LINEENDEXTEND},
#endif
{SCK_DOWN, SCI_NORM, SCI_LINEDOWN},
{SCK_DOWN, SCI_SHIFT, SCI_LINEDOWNEXTEND},
{SCK_DOWN, SCI_CTRL_META, SCI_LINESCROLLDOWN},
{SCK_DOWN, SCI_ASHIFT, SCI_LINEDOWNRECTEXTEND},
{SCK_UP, SCI_NORM, SCI_LINEUP},
{SCK_UP, SCI_SHIFT, SCI_LINEUPEXTEND},
{SCK_UP, SCI_CTRL_META, SCI_LINESCROLLUP},
{SCK_UP, SCI_ASHIFT, SCI_LINEUPRECTEXTEND},
{'[', SCI_CTRL, SCI_PARAUP},
{'[', SCI_CSHIFT, SCI_PARAUPEXTEND},
{']', SCI_CTRL, SCI_PARADOWN},
{']', SCI_CSHIFT, SCI_PARADOWNEXTEND},
{SCK_LEFT, SCI_NORM, SCI_CHARLEFT},
{SCK_LEFT, SCI_SHIFT, SCI_CHARLEFTEXTEND},
{SCK_LEFT, SCI_CTRL_META, SCI_WORDLEFT},
{SCK_LEFT, SCI_SCTRL_META, SCI_WORDLEFTEXTEND},
{SCK_LEFT, SCI_ASHIFT, SCI_CHARLEFTRECTEXTEND},
{SCK_RIGHT, SCI_NORM, SCI_CHARRIGHT},
{SCK_RIGHT, SCI_SHIFT, SCI_CHARRIGHTEXTEND},
{SCK_RIGHT, SCI_CTRL_META, SCI_WORDRIGHT},
{SCK_RIGHT, SCI_SCTRL_META, SCI_WORDRIGHTEXTEND},
{SCK_RIGHT, SCI_ASHIFT, SCI_CHARRIGHTRECTEXTEND},
{'/', SCI_CTRL, SCI_WORDPARTLEFT},
{'/', SCI_CSHIFT, SCI_WORDPARTLEFTEXTEND},
{'\\', SCI_CTRL, SCI_WORDPARTRIGHT},
{'\\', SCI_CSHIFT, SCI_WORDPARTRIGHTEXTEND},
{SCK_HOME, SCI_NORM, SCI_VCHOME},
{SCK_HOME, SCI_SHIFT, SCI_VCHOMEEXTEND},
{SCK_HOME, SCI_CTRL, SCI_DOCUMENTSTART},
{SCK_HOME, SCI_CSHIFT, SCI_DOCUMENTSTARTEXTEND},
{SCK_HOME, SCI_ALT, SCI_HOMEDISPLAY},
{SCK_HOME, SCI_ASHIFT, SCI_VCHOMERECTEXTEND},
{SCK_END, SCI_NORM, SCI_LINEEND},
{SCK_END, SCI_SHIFT, SCI_LINEENDEXTEND},
{SCK_END, SCI_CTRL, SCI_DOCUMENTEND},
{SCK_END, SCI_CSHIFT, SCI_DOCUMENTENDEXTEND},
{SCK_END, SCI_ALT, SCI_LINEENDDISPLAY},
{SCK_END, SCI_ASHIFT, SCI_LINEENDRECTEXTEND},
{SCK_PRIOR, SCI_NORM, SCI_PAGEUP},
{SCK_PRIOR, SCI_SHIFT, SCI_PAGEUPEXTEND},
{SCK_PRIOR, SCI_ASHIFT, SCI_PAGEUPRECTEXTEND},
{SCK_NEXT, SCI_NORM, SCI_PAGEDOWN},
{SCK_NEXT, SCI_SHIFT, SCI_PAGEDOWNEXTEND},
{SCK_NEXT, SCI_ASHIFT, SCI_PAGEDOWNRECTEXTEND},
{SCK_DELETE, SCI_NORM, SCI_CLEAR},
{SCK_DELETE, SCI_SHIFT, SCI_CUT},
{SCK_DELETE, SCI_CTRL, SCI_DELWORDRIGHT},
{SCK_DELETE, SCI_CSHIFT, SCI_DELLINERIGHT},
{SCK_INSERT, SCI_NORM, SCI_EDITTOGGLEOVERTYPE},
{SCK_INSERT, SCI_SHIFT, SCI_PASTE},
{SCK_INSERT, SCI_CTRL, SCI_COPY},
{SCK_ESCAPE, SCI_NORM, SCI_CANCEL},
{SCK_BACK, SCI_NORM, SCI_DELETEBACK},
{SCK_BACK, SCI_SHIFT, SCI_DELETEBACK},
{SCK_BACK, SCI_CTRL, SCI_DELWORDLEFT},
{SCK_BACK, SCI_ALT, SCI_UNDO},
{SCK_BACK, SCI_CSHIFT, SCI_DELLINELEFT},
{'Z', SCI_CTRL, SCI_UNDO},
#if OS_X_KEYS
{'Z', SCI_CSHIFT, SCI_REDO},
#else
{'Y', SCI_CTRL, SCI_REDO},
#endif
{'X', SCI_CTRL, SCI_CUT},
{'C', SCI_CTRL, SCI_COPY},
{'V', SCI_CTRL, SCI_PASTE},
{'A', SCI_CTRL, SCI_SELECTALL},
{SCK_TAB, SCI_NORM, SCI_TAB},
{SCK_TAB, SCI_SHIFT, SCI_BACKTAB},
{SCK_RETURN, SCI_NORM, SCI_NEWLINE},
{SCK_RETURN, SCI_SHIFT, SCI_NEWLINE},
{SCK_ADD, SCI_CTRL, SCI_ZOOMIN},
{SCK_SUBTRACT, SCI_CTRL, SCI_ZOOMOUT},
{SCK_DIVIDE, SCI_CTRL, SCI_SETZOOM},
{'L', SCI_CTRL, SCI_LINECUT},
{'L', SCI_CSHIFT, SCI_LINEDELETE},
{'T', SCI_CSHIFT, SCI_LINECOPY},
{'T', SCI_CTRL, SCI_LINETRANSPOSE},
{'D', SCI_CTRL, SCI_SELECTIONDUPLICATE},
{'U', SCI_CTRL, SCI_LOWERCASE},
{'U', SCI_CSHIFT, SCI_UPPERCASE},
{0,0,0},
};
There is no default Scintilla's hotkey assigned to Ctrl+Space (original file, not modified):
We have disabled triple mouse click as well as double Ctrl+Space (i.e. first selects something and second, when called on a selection, selects entire line). Didn't this involve patching Scintilla sources? I can't find related issues.
We have disabled triple mouse click as well as double Ctrl+Space (i.e. first selects something and second, when called on a selection, selects entire line). Didn't this involve patching Scintilla sources? I can't find related issues.
Details on the related changes are stated in Scintilla_ChangeLog.md:
13. "No line selection on active selection"-feature
Remove triple-click handler in Editor::ButtonDown():
[scintilla/src/Editor.cxx]
if ( selectionType == selChar ) {
selectionType = selWord;
doubleClick = true;
} else if ( selectionType == selWord ) {
// do nothing on *triple* click
} else {
selectionType = selChar;
originalAnchorPos = sel.MainCaret();
}
/13.
Memo:
I see you have "emulated" Ctrl+Space prior to every command. Am I right that it only works thanks to our disabling of Ctrl+Space selecting entire line?
Answer is "yes".
Because in standard Scintilla this implementation will apply the char case command to the entire line if there was any selection prior to the command.
Ctrl+Space is a Notepad2-specific command, processed by IDM_EDIT_SELECTWORD in Notepad2.c.
Also, I can't find the issue where we implemented Ctrl+Space disabling - can you find it?
48300c9ef8818a04869c1deb5807514eb188f4b5, as a result of https://github.com/ProgerXP/Notepad2e/issues/205#issuecomment-699536336.
We have disabled triple mouse click as well as double Ctrl+Space (i.e. first selects something and second, when called on a selection, selects entire line). Didn't this involve patching Scintilla sources? I can't find related issues.
Triple click was disabled in 9b2724a7dfbc9540de3e8683e9899ecb0041f415, before we have started working using GitHub issues (task 13).