]> git.lyx.org Git - features.git/commitdiff
Disable CheckTeX while buffer is processed
authorJuergen Spitzmueller <spitz@lyx.org>
Sat, 10 Feb 2018 17:18:43 +0000 (18:18 +0100)
committerJuergen Spitzmueller <spitz@lyx.org>
Sat, 10 Feb 2018 17:18:43 +0000 (18:18 +0100)
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.
lib/ui/stdmenus.inc
src/Buffer.cpp
src/frontends/qt4/GuiView.cpp

index 57077ed4b86bf599290d7e0cbb1302cc1cb67b3e..1bed2393ae2c343dc169145bc7238323e8cb52a7 100644 (file)
@@ -595,7 +595,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
index 462094f960f79548db02e265109440ed93d84c54..f42233f60c339991ff444574168becee42e7fee9 100644 (file)
@@ -2528,10 +2528,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;
@@ -2644,10 +2640,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, ' ');
index 9086464ec8d659c6bbafbcacd598d054df5cd15e..7090c3c8ad5993397c377e7cbe74cd3bfdd2009a 100644 (file)
@@ -1931,6 +1931,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 ||
@@ -3794,6 +3807,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;