commit f426470a5403a956606a3f0f4df38e0c7407ab40
Author: Stephan Witt <[email protected]>
Date: Sat Aug 13 14:20:03 2022 +0200
Improved synctex support
- Add check for converter with active synctex support to check for
synchronized output for activate forward search.
---
src/Buffer.cpp | 16 ++++++++++++++++
src/Buffer.h | 5 +++++
src/frontends/qt/GuiView.cpp | 2 +-
3 files changed, 22 insertions(+), 1 deletions(-)
diff --git a/src/Buffer.cpp b/src/Buffer.cpp
index 96005b9..da630da 100644
--- a/src/Buffer.cpp
+++ b/src/Buffer.cpp
@@ -1110,6 +1110,22 @@ bool Buffer::readDocument(Lexer & lex)
}
+bool Buffer::isSyncTeXenabled() const
+{
+ bool enabled = params().output_sync;
+
+ if (!enabled)
+ for (auto const & c : theConverters()) {
+ const string dest = c.to().substr(0,3);
+ if (dest == "dvi" || dest == "pdf") {
+ const string cmd = c.command();
+ enabled |= cmd.find("--synctex=1") !=
string::npos;
+ if (enabled) break;
+ }
+ }
+ return enabled;
+}
+
bool Buffer::importString(string const & format, docstring const & contents,
ErrorList & errorList)
{
Format const * fmt = theFormats().getFormat(format);
diff --git a/src/Buffer.h b/src/Buffer.h
index 7f40351..ba066f7 100644
--- a/src/Buffer.h
+++ b/src/Buffer.h
@@ -221,6 +221,11 @@ public:
int readHeader(Lexer & lex);
double fontScalingFactor() const;
+ /// check for active synctex support:
+ /// - either the document has synchronize output enabled or
+ /// - there is a converter to dvi or pdf defined with synctex command
line argument
+ /// this is the "expert mode", false positives are possible
+ bool isSyncTeXenabled() const;
private:
///
diff --git a/src/frontends/qt/GuiView.cpp b/src/frontends/qt/GuiView.cpp
index 4492e75..d03fe3b 100644
--- a/src/frontends/qt/GuiView.cpp
+++ b/src/frontends/qt/GuiView.cpp
@@ -2681,7 +2681,7 @@ bool GuiView::getStatus(FuncRequest const & cmd,
FuncStatus & flag)
break;
case LFUN_FORWARD_SEARCH:
enable = !(lyxrc.forward_search_dvi.empty() &&
lyxrc.forward_search_pdf.empty()) &&
- doc_buffer && doc_buffer->params().output_sync;
+ doc_buffer && doc_buffer->isSyncTeXenabled();
break;
case LFUN_FILE_INSERT_PLAINTEXT:
--
lyx-cvs mailing list
[email protected]
http://lists.lyx.org/mailman/listinfo/lyx-cvs