[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