Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2019-11-22 12:50:17 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-11-22 12:53:40 +0300
commite98d27fd8d432650489f973abcdfad4163e87f42 (patch)
tree16c4515cc74341d2c409d2c997a58fbba4cf2f9d /source/blender/editors/space_console
parente93aa9c0fc669d0b09a1159e8ef1e2b9dfcc7320 (diff)
Keymap: use tab key for indent or auto-complete
Only indent when there aren't characters before the cursor. This resolves the conflict with Ctrl-Space for view maximize. D6239 by @wbrbr for text editor, based console support on this.
Diffstat (limited to 'source/blender/editors/space_console')
-rw-r--r--source/blender/editors/space_console/console_intern.h1
-rw-r--r--source/blender/editors/space_console/console_ops.c40
-rw-r--r--source/blender/editors/space_console/space_console.c1
3 files changed, 42 insertions, 0 deletions
diff --git a/source/blender/editors/space_console/console_intern.h b/source/blender/editors/space_console/console_intern.h
index 30f7894ea33..2a5675b9c3b 100644
--- a/source/blender/editors/space_console/console_intern.h
+++ b/source/blender/editors/space_console/console_intern.h
@@ -51,6 +51,7 @@ void CONSOLE_OT_delete(struct wmOperatorType *ot);
void CONSOLE_OT_insert(struct wmOperatorType *ot);
void CONSOLE_OT_indent(struct wmOperatorType *ot);
+void CONSOLE_OT_indent_or_autocomplete(struct wmOperatorType *ot);
void CONSOLE_OT_unindent(struct wmOperatorType *ot);
void CONSOLE_OT_history_append(struct wmOperatorType *ot);
diff --git a/source/blender/editors/space_console/console_ops.c b/source/blender/editors/space_console/console_ops.c
index bc18a6cfb56..591c3cc62f2 100644
--- a/source/blender/editors/space_console/console_ops.c
+++ b/source/blender/editors/space_console/console_ops.c
@@ -473,6 +473,44 @@ void CONSOLE_OT_insert(wmOperatorType *ot)
RNA_def_property_flag(prop, PROP_SKIP_SAVE);
}
+/* -------------------------------------------------------------------- */
+/** \name Indent or Autocomplete Operator
+ * \{ */
+
+static int console_indent_or_autocomplete_exec(bContext *C, wmOperator *UNUSED(op))
+{
+ ConsoleLine *ci = console_history_verify(C);
+ bool text_before_cursor = ci->cursor != 0 && !ELEM(ci->line[ci->cursor - 1], ' ', '\t');
+ if (text_before_cursor) {
+ WM_operator_name_call(C, "CONSOLE_OT_autocomplete", WM_OP_INVOKE_DEFAULT, NULL);
+ }
+ else {
+ WM_operator_name_call(C, "CONSOLE_OT_indent", WM_OP_EXEC_DEFAULT, NULL);
+ }
+ return OPERATOR_FINISHED;
+}
+
+void CONSOLE_OT_indent_or_autocomplete(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name = "Indent or Autocomplete";
+ ot->idname = "CONSOLE_OT_indent_or_autocomplete";
+ ot->description = "Indent selected text or autocomplete";
+
+ /* api callbacks */
+ ot->exec = console_indent_or_autocomplete_exec;
+ ot->poll = ED_operator_console_active;
+
+ /* flags */
+ ot->flag = 0;
+}
+
+/** \} */
+
+/* -------------------------------------------------------------------- */
+/** \name Indent Operator
+ * \{ */
+
static int console_indent_exec(bContext *C, wmOperator *UNUSED(op))
{
SpaceConsole *sc = CTX_wm_space_console(C);
@@ -518,6 +556,8 @@ void CONSOLE_OT_indent(wmOperatorType *ot)
ot->poll = ED_operator_console_active;
}
+/** \} */
+
static int console_unindent_exec(bContext *C, wmOperator *UNUSED(op))
{
SpaceConsole *sc = CTX_wm_space_console(C);
diff --git a/source/blender/editors/space_console/space_console.c b/source/blender/editors/space_console/space_console.c
index 5cc2f00413a..65a23531963 100644
--- a/source/blender/editors/space_console/space_console.c
+++ b/source/blender/editors/space_console/space_console.c
@@ -245,6 +245,7 @@ static void console_operatortypes(void)
WM_operatortype_append(CONSOLE_OT_insert);
WM_operatortype_append(CONSOLE_OT_indent);
+ WM_operatortype_append(CONSOLE_OT_indent_or_autocomplete);
WM_operatortype_append(CONSOLE_OT_unindent);
/* for use by python only */