mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-26 03:11:59 +00:00
Make case-changing lfuns operate on full words by default
This is for people who cannot grasp the superior conventions of emacs ;) A new argument "partial" has been added to word-upcase, word-lowcase and word-capitalize that restores the old emacs-like behavior. The (x)emacs bindings are updated to use the "partial" argument, and also to bind correctly M-u and M-l (M-c is unfortunately not available). Fixes bug #2826.
This commit is contained in:
parent
be09b33319
commit
0db513c4d6
@ -22,10 +22,10 @@
|
|||||||
printing support was very limited, and most users will want to print after
|
printing support was very limited, and most users will want to print after
|
||||||
reviewing an output document (e.g., a PDF), anyway, which can be done from the
|
reviewing an output document (e.g., a PDF), anyway, which can be done from the
|
||||||
PDF viewer.
|
PDF viewer.
|
||||||
Users who would like to restore this functionality can create a "printer"
|
Users who would like to restore this functionality can create a
|
||||||
format from within LyX and then define, say, a pdf->printer converter that does
|
"printer" format from within LyX and then define, say, a
|
||||||
nothing but call lpd, or a2ps, or whatever. The "printer" will then be available
|
pdf->printer converter that does nothing but call lpd, or a2ps, or
|
||||||
as an export option.
|
whatever. The "printer" will then be available as an export option.
|
||||||
|
|
||||||
|
|
||||||
!!!The following pref variables were added in 2.2:
|
!!!The following pref variables were added in 2.2:
|
||||||
@ -79,7 +79,10 @@
|
|||||||
|
|
||||||
!!!The following LyX functions have been changed in 2.2:
|
!!!The following LyX functions have been changed in 2.2:
|
||||||
|
|
||||||
|
* word-upcase, word-lowcase and word-capitalize do not select the word
|
||||||
|
to operate on in the emacs way (that is, starting at cursor
|
||||||
|
position); this behaviour can be restored by using the argument
|
||||||
|
"partial".
|
||||||
|
|
||||||
!!!The following LyX key bindings have been changed in 2.2:
|
!!!The following LyX key bindings have been changed in 2.2:
|
||||||
|
|
||||||
|
@ -238,6 +238,10 @@ Format 2
|
|||||||
\bind "M-period" "specialchar-insert dots"
|
\bind "M-period" "specialchar-insert dots"
|
||||||
\bind "M-w" "copy"
|
\bind "M-w" "copy"
|
||||||
\bind "Escape" "meta-prefix"
|
\bind "Escape" "meta-prefix"
|
||||||
|
\bind "M-u" "word-upcase partial"
|
||||||
|
\bind "M-l" "word-lowcase partial"
|
||||||
|
# This conflicts with the character menu.
|
||||||
|
#bind "M-c" "word-capitalize partial"
|
||||||
|
|
||||||
# Numeric keypad (if Shift+KP_XXX does not switch the NumLock state)
|
# Numeric keypad (if Shift+KP_XXX does not switch the NumLock state)
|
||||||
\bind "S-KP_Right" "char-right-select"
|
\bind "S-KP_Right" "char-right-select"
|
||||||
@ -269,3 +273,9 @@ Format 2
|
|||||||
\bind_file latinkeys.bind
|
\bind_file latinkeys.bind
|
||||||
\bind_file cyrkeys.bind
|
\bind_file cyrkeys.bind
|
||||||
\bind_file greekkeys.bind
|
\bind_file greekkeys.bind
|
||||||
|
|
||||||
|
# the following bindings have to be adapted w.r.t. menus.bind
|
||||||
|
\bind "M-c Down" "word-lowcase partial"
|
||||||
|
\bind "M-c Up" "word-upcase partial"
|
||||||
|
\bind "M-c Right" "word-capitalize partial"
|
||||||
|
|
||||||
|
@ -237,6 +237,10 @@ Format 2
|
|||||||
\bind "M-period" "specialchar-insert dots"
|
\bind "M-period" "specialchar-insert dots"
|
||||||
\bind "M-w" "copy"
|
\bind "M-w" "copy"
|
||||||
\bind "Escape" "meta-prefix"
|
\bind "Escape" "meta-prefix"
|
||||||
|
\bind "M-u" "word-upcase partial"
|
||||||
|
\bind "M-l" "word-lowcase partial"
|
||||||
|
# This conflicts with the character menu.
|
||||||
|
#bind "M-c" "word-capitalize partial"
|
||||||
|
|
||||||
# Numeric keypad (if Shift+KP_XXX does not switch the NumLock state)
|
# Numeric keypad (if Shift+KP_XXX does not switch the NumLock state)
|
||||||
\bind "S-KP_Right" "char-right-select"
|
\bind "S-KP_Right" "char-right-select"
|
||||||
@ -355,3 +359,8 @@ Format 2
|
|||||||
\bind_file latinkeys.bind
|
\bind_file latinkeys.bind
|
||||||
\bind_file cyrkeys.bind
|
\bind_file cyrkeys.bind
|
||||||
\bind_file greekkeys.bind
|
\bind_file greekkeys.bind
|
||||||
|
|
||||||
|
# the following bindings have to be adapted w.r.t. menus.bind
|
||||||
|
\bind "M-c Down" "word-lowcase partial"
|
||||||
|
\bind "M-c Up" "word-upcase partial"
|
||||||
|
\bind "M-c Right" "word-capitalize partial"
|
||||||
|
@ -98,7 +98,7 @@ The LyX Team
|
|||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Date
|
\begin_layout Date
|
||||||
2014-11-14
|
2015-05-28
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Section*
|
\begin_layout Section*
|
||||||
@ -1834,7 +1834,7 @@ alpha)
|
|||||||
\begin_inset Newline newline
|
\begin_inset Newline newline
|
||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
icon: icon of lfun used in toolbar
|
icon: icon of lfun used in toolbar or direct icon name
|
||||||
\begin_inset Newline newline
|
\begin_inset Newline newline
|
||||||
\end_inset
|
\end_inset
|
||||||
|
|
||||||
@ -3144,7 +3144,7 @@ Action Inserts various characters into the document.
|
|||||||
Syntax specialchar-insert <CHAR>
|
Syntax specialchar-insert <CHAR>
|
||||||
\end_layout
|
\end_layout
|
||||||
\begin_layout Description
|
\begin_layout Description
|
||||||
Params <CHAR>: hyphenation, ligature-break, slash, nobreakdash, dots, end-of-sentence, menu-separator.
|
Params <CHAR>: hyphenation, ligature-break, slash, nobreakdash, dots, end-of-sentence, menu-separator, lyx, tex, latex, latex2e.
|
||||||
\end_layout
|
\end_layout
|
||||||
\begin_layout Description
|
\begin_layout Description
|
||||||
Origin JSpitzm, 6 Dec 2007
|
Origin JSpitzm, 6 Dec 2007
|
||||||
@ -3154,7 +3154,7 @@ Origin JSpitzm, 6 Dec 2007
|
|||||||
spelling-add
|
spelling-add
|
||||||
\end_layout
|
\end_layout
|
||||||
\begin_layout Description
|
\begin_layout Description
|
||||||
Action Add the word under the cursor to the respective spell checker dictionary.
|
Action Add the word under the cursor to the respective spell checker dictionary. The default for the language is retrieved from the cursor position.
|
||||||
\end_layout
|
\end_layout
|
||||||
\begin_layout Description
|
\begin_layout Description
|
||||||
Syntax spelling-add [<STRING>] [<LANG>]
|
Syntax spelling-add [<STRING>] [<LANG>]
|
||||||
@ -3183,7 +3183,7 @@ Origin vfr, 24 March 2013
|
|||||||
spelling-ignore
|
spelling-ignore
|
||||||
\end_layout
|
\end_layout
|
||||||
\begin_layout Description
|
\begin_layout Description
|
||||||
Action Let the spell checker ignore the word under the cursor in the current session for the given language.
|
Action Let the spell checker ignore the word under the cursor in the current session for the given language. The default for the language is retrieved from the cursor position.
|
||||||
\end_layout
|
\end_layout
|
||||||
\begin_layout Description
|
\begin_layout Description
|
||||||
Syntax spelling-ignore [<WORD>] [<LANG>]
|
Syntax spelling-ignore [<WORD>] [<LANG>]
|
||||||
@ -3199,7 +3199,7 @@ Origin JSpitzm, 18 Jan 2010
|
|||||||
spelling-remove
|
spelling-remove
|
||||||
\end_layout
|
\end_layout
|
||||||
\begin_layout Description
|
\begin_layout Description
|
||||||
Action Remove the word under the cursor from the respective spell checker dictionary.
|
Action Remove the word under the cursor from the respective spell checker dictionary. The default for the language is retrieved from the cursor position.
|
||||||
\end_layout
|
\end_layout
|
||||||
\begin_layout Description
|
\begin_layout Description
|
||||||
Syntax spelling-remove [<STRING>] [<LANG>]
|
Syntax spelling-remove [<STRING>] [<LANG>]
|
||||||
@ -3357,10 +3357,13 @@ Syntax word-backward-select
|
|||||||
word-capitalize
|
word-capitalize
|
||||||
\end_layout
|
\end_layout
|
||||||
\begin_layout Description
|
\begin_layout Description
|
||||||
Action Capitalizes the words in the selection (i.e. the first letters) or the letter on the cursor position.
|
Action Capitalizes the words in the selection (i.e. the first letters) or the first letter of word at cursor position.
|
||||||
\end_layout
|
\end_layout
|
||||||
\begin_layout Description
|
\begin_layout Description
|
||||||
Syntax word-capitalize
|
Syntax word-capitalize [<SEL_TYPE>]
|
||||||
|
\end_layout
|
||||||
|
\begin_layout Description
|
||||||
|
Params <SEL_TYPE>: if this is equal to "partial", then the default word starts at cursor position (emacs-style). Otherwise, the whole word is considered.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Subsection*
|
\begin_layout Subsection*
|
||||||
@ -3509,10 +3512,13 @@ Origin dov, 28 Oct 2007
|
|||||||
word-lowcase
|
word-lowcase
|
||||||
\end_layout
|
\end_layout
|
||||||
\begin_layout Description
|
\begin_layout Description
|
||||||
Action Change the words in the selection or from the cursor position to the end of word to the lower case.
|
Action Change the words in the selection or word at cursor position to lower case.
|
||||||
\end_layout
|
\end_layout
|
||||||
\begin_layout Description
|
\begin_layout Description
|
||||||
Syntax word-lowcase
|
Syntax word-lowcase [<SEL_TYPE>]
|
||||||
|
\end_layout
|
||||||
|
\begin_layout Description
|
||||||
|
Params <SEL_TYPE>: if this is equal to "partial", then the default word starts at cursor position (emacs-style). Otherwise, the whole word is considered.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Subsection*
|
\begin_layout Subsection*
|
||||||
@ -3588,10 +3594,13 @@ Origin Andre, 11 Sep 2002
|
|||||||
word-upcase
|
word-upcase
|
||||||
\end_layout
|
\end_layout
|
||||||
\begin_layout Description
|
\begin_layout Description
|
||||||
Action Change the words in the selection or from the cursor position to the end of word to the upper case.
|
Action Change the words in the selection or word at cursor position to upper case.
|
||||||
\end_layout
|
\end_layout
|
||||||
\begin_layout Description
|
\begin_layout Description
|
||||||
Syntax word-upcase
|
Syntax word-upcase [<SEL_TYPE>]
|
||||||
|
\end_layout
|
||||||
|
\begin_layout Description
|
||||||
|
Params <SEL_TYPE>: if this is equal to "partial", then the default word starts at cursor position (emacs-style). Otherwise, the whole word is considered.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Subsection*
|
\begin_layout Subsection*
|
||||||
@ -4524,7 +4533,7 @@ Export buffers to PDF (pdflatex):
|
|||||||
|
|
||||||
\end_layout
|
\end_layout
|
||||||
\begin_layout Description
|
\begin_layout Description
|
||||||
Origin scottkostyshak, 20 Jul 2012
|
Origin skostysh, 20 Jul 2012
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Subsection*
|
\begin_layout Subsection*
|
||||||
@ -4559,6 +4568,32 @@ Params <LANG>: language name. See lib/languages for list.
|
|||||||
Origin leeming, 30 Mar 2004
|
Origin leeming, 30 Mar 2004
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
|
\begin_layout Subsection*
|
||||||
|
buffer-move-next
|
||||||
|
\end_layout
|
||||||
|
\begin_layout Description
|
||||||
|
Action Moves the current tab one spot to the right.
|
||||||
|
\end_layout
|
||||||
|
\begin_layout Description
|
||||||
|
Syntax buffer-move-next
|
||||||
|
\end_layout
|
||||||
|
\begin_layout Description
|
||||||
|
Origin skostysh, 7 Apr 2015
|
||||||
|
\end_layout
|
||||||
|
|
||||||
|
\begin_layout Subsection*
|
||||||
|
buffer-move-previous
|
||||||
|
\end_layout
|
||||||
|
\begin_layout Description
|
||||||
|
Action Moves the current tab one spot to the left.
|
||||||
|
\end_layout
|
||||||
|
\begin_layout Description
|
||||||
|
Syntax buffer-move-previous
|
||||||
|
\end_layout
|
||||||
|
\begin_layout Description
|
||||||
|
Origin skostysh, 7 Apr 2015
|
||||||
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Subsection*
|
\begin_layout Subsection*
|
||||||
buffer-new
|
buffer-new
|
||||||
\end_layout
|
\end_layout
|
||||||
@ -4630,36 +4665,6 @@ Action Switch to the previous opened document.
|
|||||||
Syntax buffer-previous
|
Syntax buffer-previous
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Subsection*
|
|
||||||
buffer-print
|
|
||||||
\end_layout
|
|
||||||
\begin_layout Description
|
|
||||||
Action Prints the current document.
|
|
||||||
\end_layout
|
|
||||||
\begin_layout Description
|
|
||||||
Notion Many settings can be given via the preferences dialog.
|
|
||||||
\end_layout
|
|
||||||
\begin_layout Description
|
|
||||||
Syntax buffer-print <TARGET> <TARGET-NAME> <COMMAND>
|
|
||||||
\end_layout
|
|
||||||
\begin_layout Description
|
|
||||||
Params <TARGET> is either "printer" or "file".
|
|
||||||
\begin_inset Newline newline
|
|
||||||
\end_inset
|
|
||||||
|
|
||||||
<TARGER-NAME> is either "default" or file name or printer name.
|
|
||||||
\begin_inset Newline newline
|
|
||||||
\end_inset
|
|
||||||
|
|
||||||
<COMMAND> command ensuring the printing job.
|
|
||||||
\end_layout
|
|
||||||
\begin_layout Description
|
|
||||||
Sample buffer-print file "/trash/newfile1.ps" "dvips"
|
|
||||||
\end_layout
|
|
||||||
\begin_layout Description
|
|
||||||
Origin leeming, 28 Mar 2004
|
|
||||||
\end_layout
|
|
||||||
|
|
||||||
\begin_layout Subsection*
|
\begin_layout Subsection*
|
||||||
buffer-reload
|
buffer-reload
|
||||||
\end_layout
|
\end_layout
|
||||||
@ -4769,6 +4774,19 @@ Syntax buffer-view [<FORMAT>]
|
|||||||
Params <FORMAT>: The format to display, where this is one of the formats defined (in the current GUI) in the Tools>Preferences>File Formats dialog. If no format is given, the default format as specified in the same dialog is used.
|
Params <FORMAT>: The format to display, where this is one of the formats defined (in the current GUI) in the Tools>Preferences>File Formats dialog. If no format is given, the default format as specified in the same dialog is used.
|
||||||
\end_layout
|
\end_layout
|
||||||
|
|
||||||
|
\begin_layout Subsection*
|
||||||
|
buffer-view-cache
|
||||||
|
\end_layout
|
||||||
|
\begin_layout Description
|
||||||
|
Action Opens the file that was created from last preview of this buffer.
|
||||||
|
\end_layout
|
||||||
|
\begin_layout Description
|
||||||
|
Notion This LFUN is called by the "Show Output Anyway" button in the LaTeX Errors dialog. It can also be called by the user, which is useful if the document takes a long time to compile, and you just want to see the last previewed version.
|
||||||
|
\end_layout
|
||||||
|
\begin_layout Description
|
||||||
|
Syntax buffer-view-cache
|
||||||
|
\end_layout
|
||||||
|
|
||||||
\begin_layout Subsection*
|
\begin_layout Subsection*
|
||||||
buffer-write
|
buffer-write
|
||||||
\end_layout
|
\end_layout
|
||||||
|
@ -1000,24 +1000,33 @@ void LyXAction::init()
|
|||||||
/*!
|
/*!
|
||||||
* \var lyx::FuncCode lyx::LFUN_WORD_CAPITALIZE
|
* \var lyx::FuncCode lyx::LFUN_WORD_CAPITALIZE
|
||||||
* \li Action: Capitalizes the words in the selection (i.e. the first letters)
|
* \li Action: Capitalizes the words in the selection (i.e. the first letters)
|
||||||
or the letter on the cursor position.
|
or the first letter of word at cursor position.
|
||||||
* \li Syntax: word-capitalize
|
* \li Syntax: word-capitalize [<SEL_TYPE>]
|
||||||
|
* \li Params: <SEL_TYPE>: if this is equal to "partial", then the
|
||||||
|
* default word starts at cursor position (emacs-style).
|
||||||
|
* Otherwise, the whole word is considered.
|
||||||
* \endvar
|
* \endvar
|
||||||
*/
|
*/
|
||||||
{ LFUN_WORD_CAPITALIZE, "word-capitalize", Noop, Edit },
|
{ LFUN_WORD_CAPITALIZE, "word-capitalize", Noop, Edit },
|
||||||
/*!
|
/*!
|
||||||
* \var lyx::FuncCode lyx::LFUN_WORD_UPCASE
|
* \var lyx::FuncCode lyx::LFUN_WORD_UPCASE
|
||||||
* \li Action: Change the words in the selection or from the cursor position
|
* \li Action: Change the words in the selection or word at cursor position
|
||||||
to the end of word to the upper case.
|
to upper case.
|
||||||
* \li Syntax: word-upcase
|
* \li Syntax: word-upcase [<SEL_TYPE>]
|
||||||
|
* \li Params: <SEL_TYPE>: if this is equal to "partial", then the
|
||||||
|
* default word starts at cursor position (emacs-style).
|
||||||
|
* Otherwise, the whole word is considered.
|
||||||
* \endvar
|
* \endvar
|
||||||
*/
|
*/
|
||||||
{ LFUN_WORD_UPCASE, "word-upcase", Noop, Edit },
|
{ LFUN_WORD_UPCASE, "word-upcase", Noop, Edit },
|
||||||
/*!
|
/*!
|
||||||
* \var lyx::FuncCode lyx::LFUN_WORD_LOWCASE
|
* \var lyx::FuncCode lyx::LFUN_WORD_LOWCASE
|
||||||
* \li Action: Change the words in the selection or from the cursor position
|
* \li Action: Change the words in the selection or word at cursor position
|
||||||
to the end of word to the lower case.
|
to lower case.
|
||||||
* \li Syntax: word-lowcase
|
* \li Syntax: word-lowcase [<SEL_TYPE>]
|
||||||
|
* \li Params: <SEL_TYPE>: if this is equal to "partial", then the
|
||||||
|
* default word starts at cursor position (emacs-style).
|
||||||
|
* Otherwise, the whole word is considered.
|
||||||
* \endvar
|
* \endvar
|
||||||
*/
|
*/
|
||||||
{ LFUN_WORD_LOWCASE, "word-lowcase", Noop, Edit },
|
{ LFUN_WORD_LOWCASE, "word-lowcase", Noop, Edit },
|
||||||
|
@ -1489,20 +1489,19 @@ void Text::deleteWordBackward(Cursor & cur)
|
|||||||
|
|
||||||
|
|
||||||
// Kill to end of line.
|
// Kill to end of line.
|
||||||
void Text::changeCase(Cursor & cur, TextCase action)
|
void Text::changeCase(Cursor & cur, TextCase action, bool partial)
|
||||||
{
|
{
|
||||||
LBUFERR(this == cur.text());
|
LBUFERR(this == cur.text());
|
||||||
CursorSlice from;
|
CursorSlice from;
|
||||||
CursorSlice to;
|
CursorSlice to;
|
||||||
|
|
||||||
bool gotsel = false;
|
bool const gotsel = cur.selection();
|
||||||
if (cur.selection()) {
|
if (gotsel) {
|
||||||
from = cur.selBegin();
|
from = cur.selBegin();
|
||||||
to = cur.selEnd();
|
to = cur.selEnd();
|
||||||
gotsel = true;
|
|
||||||
} else {
|
} else {
|
||||||
from = cur.top();
|
from = cur.top();
|
||||||
getWord(from, to, PARTIAL_WORD);
|
getWord(from, to, partial ? PARTIAL_WORD : WHOLE_WORD);
|
||||||
cursorForwardOneWord(cur);
|
cursorForwardOneWord(cur);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -242,7 +242,7 @@ public:
|
|||||||
///
|
///
|
||||||
bool selectWordWhenUnderCursor(Cursor & cur, word_location);
|
bool selectWordWhenUnderCursor(Cursor & cur, word_location);
|
||||||
/// Change the case of the word at cursor position.
|
/// Change the case of the word at cursor position.
|
||||||
void changeCase(Cursor & cur, TextCase action);
|
void changeCase(Cursor & cur, TextCase action, bool partial);
|
||||||
/// Transposes the character at the cursor with the one before it
|
/// Transposes the character at the cursor with the one before it
|
||||||
void charsTranspose(Cursor & cur);
|
void charsTranspose(Cursor & cur);
|
||||||
|
|
||||||
|
@ -1291,15 +1291,15 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
case LFUN_WORD_UPCASE:
|
case LFUN_WORD_UPCASE:
|
||||||
changeCase(cur, text_uppercase);
|
changeCase(cur, text_uppercase, cmd.getArg(0) == "partial");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case LFUN_WORD_LOWCASE:
|
case LFUN_WORD_LOWCASE:
|
||||||
changeCase(cur, text_lowercase);
|
changeCase(cur, text_lowercase, cmd.getArg(0) == "partial");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case LFUN_WORD_CAPITALIZE:
|
case LFUN_WORD_CAPITALIZE:
|
||||||
changeCase(cur, text_capitalization);
|
changeCase(cur, text_capitalization, cmd.getArg(0) == "partial");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case LFUN_CHARS_TRANSPOSE:
|
case LFUN_CHARS_TRANSPOSE:
|
||||||
|
Loading…
Reference in New Issue
Block a user