commit c0a1893008bd13650d470afff16f56720b65c87c
Author: Juergen Spitzmueller <[email protected]>
Date: Sat Feb 10 18:18:43 2018 +0100
Disable CheckTeX while buffer is processed
Since CheckTeX itself processes the tex file, a synchronous run with
a TeX process can lead to all sorts of conflicts, including crashes.
Fixes: #7434.
(cherry picked from commit 71fea6332667e1a9fe99c38624e4dcaf1129d6c5)
---
lib/ui/stdmenus.inc | 2 +-
src/Buffer.cpp | 8 --------
src/frontends/qt4/GuiView.cpp | 18 ++++++++++++++++++
3 files changed, 19 insertions(+), 9 deletions(-)
diff --git a/lib/ui/stdmenus.inc b/lib/ui/stdmenus.inc
index 37c1067..d1f145c 100644
--- a/lib/ui/stdmenus.inc
+++ b/lib/ui/stdmenus.inc
@@ -594,7 +594,7 @@ Menuset
Item "Spellchecker...|S" "dialog-show spellchecker"
OptItem "Thesaurus...|T" "thesaurus-entry"
Item "Statistics...|a" "statistics"
- OptItem "Check TeX|h" "buffer-chktex"
+ Item "Check TeX|h" "buffer-chktex"
Item "TeX Information|I" "dialog-show texinfo"
Item "Compare...|C" "dialog-show compare"
Separator
diff --git a/src/Buffer.cpp b/src/Buffer.cpp
index cd49a68..a8d1b2b 100644
--- a/src/Buffer.cpp
+++ b/src/Buffer.cpp
@@ -2567,10 +2567,6 @@ bool Buffer::getStatus(FuncRequest const & cmd,
FuncStatus & flag)
break;
}
- case LFUN_BUFFER_CHKTEX:
- enable = params().isLatex() && !lyxrc.chktex_command.empty();
- break;
-
case LFUN_BUILD_PROGRAM:
enable = params().isExportable("program", false);
break;
@@ -2682,10 +2678,6 @@ void Buffer::dispatch(FuncRequest const & func,
DispatchResult & dr)
break;
}
- case LFUN_BUFFER_CHKTEX:
- runChktex();
- break;
-
case LFUN_BUFFER_EXPORT_CUSTOM: {
string format_name;
string command = split(argument, format_name, ' ');
diff --git a/src/frontends/qt4/GuiView.cpp b/src/frontends/qt4/GuiView.cpp
index e511cd6..87260cb 100644
--- a/src/frontends/qt4/GuiView.cpp
+++ b/src/frontends/qt4/GuiView.cpp
@@ -1941,6 +1941,19 @@ bool GuiView::getStatus(FuncRequest const & cmd,
FuncStatus & flag)
enable = theBufferList().last() != theBufferList().first();
break;
+ case LFUN_BUFFER_CHKTEX: {
+ if (!doc_buffer || !doc_buffer->params().isLatex()
+ || d.processing_thread_watcher_.isRunning()) {
+ // grey out, don't hide
+ enable = false;
+ break;
+ }
+ // hide if we have no checktex command
+ enable = !lyxrc.chktex_command.empty();
+ flag.setUnknown(!enable);
+ break;
+ }
+
case LFUN_VIEW_SPLIT:
if (cmd.getArg(0) == "vertical")
enable = doc_buffer && (d.splitter_->count() == 1 ||
@@ -3800,6 +3813,11 @@ void GuiView::dispatch(FuncRequest const & cmd,
DispatchResult & dr)
gotoNextOrPreviousBuffer(PREVBUFFER, true);
break;
+ case LFUN_BUFFER_CHKTEX:
+ LASSERT(doc_buffer, break);
+ doc_buffer->runChktex();
+ break;
+
case LFUN_COMMAND_EXECUTE: {
command_execute_ = true;
minibuffer_focus_ = true;