[LyX/master] re-implement LFUN_REFERENCE_INSERT

Juergen Spitzmueller spitz at lyx.org
Sun Jul 28 08:38:23 UTC 2024


commit 181c8ce7c1c4b5e443775bec72f899040f6a43a5
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Sun Jul 28 10:37:30 2024 +0200

    re-implement LFUN_REFERENCE_INSERT
    
    this is in preparation of another feature
---
 src/FuncCode.h    |  2 ++
 src/LyXAction.cpp | 10 ++++++++++
 src/Text.cpp      | 20 ++++++++++++++++++++
 3 files changed, 32 insertions(+)

diff --git a/src/FuncCode.h b/src/FuncCode.h
index a5f638d6d7..7f35ca391d 100644
--- a/src/FuncCode.h
+++ b/src/FuncCode.h
@@ -509,6 +509,8 @@ enum FuncCode
 	LFUN_TAB_GROUP_PREVIOUS,        // daniel 20220130
 	LFUN_BIBTEX_DATABASE_LIST,      // bpiwowar, 20221218
 	LFUN_STATISTICS_REFERENCE_CLAMP,// sanda, 20240324
+	LFUN_REFERENCE_INSERT,          // spitz, 20240728
+	// 400
 	LFUN_LASTACTION                 // end of the table
 };
 
diff --git a/src/LyXAction.cpp b/src/LyXAction.cpp
index 95f705cc1f..41df737332 100644
--- a/src/LyXAction.cpp
+++ b/src/LyXAction.cpp
@@ -3512,6 +3512,16 @@ void LyXAction::init()
  */
 		{ LFUN_REDO, "redo", ReadOnly, Edit },
 
+/*!
+ * \var lyx::FuncCode lyx::LFUN_REFERENCE_INSERT
+ * \li Action: Inserts a cross-reference into the document.
+ * \li Notion: Optional <TYPE> can be used to set the type of reference 
+ * \li Syntax: reference-insert <LABEL> [<TYPE>]
+ * \li Origin: spitz, 28 Jul 2024
+ * \endvar
+ */
+		{ LFUN_REFERENCE_INSERT, "reference-insert", Noop, Edit },
+
 /*!
  * \var lyx::FuncCode lyx::LFUN_REFERENCE_NEXT
  * \li Action: Go to the next label or cross-reference.
diff --git a/src/Text.cpp b/src/Text.cpp
index 2ec8f4905a..826b4db111 100644
--- a/src/Text.cpp
+++ b/src/Text.cpp
@@ -82,6 +82,7 @@
 #include "insets/InsetIPAMacro.h"
 #include "insets/InsetNewline.h"
 #include "insets/InsetQuotes.h"
+#include "insets/InsetRef.h"
 #include "insets/InsetSpecialChar.h"
 #include "insets/InsetTabular.h"
 #include "insets/InsetText.h"
@@ -5483,6 +5484,18 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
 		break;
 	}
 
+	case LFUN_REFERENCE_INSERT: {
+		string const label = cmd.getArg(0);
+		string const type = cmd.getArg(1);
+		InsetCommandParams p(REF_CODE, "ref");
+		if (!type.empty())
+			p.setCmdName(type);
+		p["reference"] = from_utf8(label);
+		string const data = InsetCommand::params2string(p);
+		lyx::dispatch(FuncRequest(LFUN_INSET_INSERT, data));
+		break;
+	}
+
 	case LFUN_INFO_INSERT: {
 		if (cmd.argument().empty()) {
 			bv->showDialog("info", cur.current_font.language()->lang());
@@ -6726,6 +6739,13 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
 	case LFUN_PREVIEW_INSERT:
 		code = PREVIEW_CODE;
 		break;
+	case LFUN_REFERENCE_INSERT: {
+		string const type = cmd.getArg(1);
+		if (!type.empty())
+			enable = InsetRef::isCompatibleCommand(type);
+		code = REF_CODE;
+		break;
+	}
 	case LFUN_SCRIPT_INSERT:
 		code = SCRIPT_CODE;
 		break;


More information about the lyx-cvs mailing list