Le 13/10/2014 22:49, Jean-Marc Lasgouttes a écrit :
Je vois plein de changements d'espaces.
Mon éditeur de code est configuré pour supprimer les espaces surnuméraires... faudra peut-être que je change ça.
J'ai fait la même chose dans master, est-ce que tu pourrais rebaser ton patch sur le nouveau master? Cela fera un patch plus clair.
Le voilà donc.

Bonne nuit.

--
Blog: Impossible Exil <http://impossible-exil.info>
>From 2de97193a8eba9b9f5d7798e5e9115f36141da08 Mon Sep 17 00:00:00 2001
From: brokenclock <stephane.mou...@impossible-exil.info>
Date: Mon, 13 Oct 2014 21:46:47 +0200
Subject: [PATCH] Add LFUN_SERVER_GET_STATISTICS command, which make possible
 to get the LyX statistics on .lyxpipe.out

---
 src/FuncCode.h    |  1 +
 src/LyXAction.cpp | 12 ++++++++++++
 src/Text3.cpp     | 26 ++++++++++++++++++++++++++
 3 files changed, 39 insertions(+)

diff --git a/src/FuncCode.h b/src/FuncCode.h
index 2ae820a..3bd0cd0 100644
--- a/src/FuncCode.h
+++ b/src/FuncCode.h
@@ -458,6 +458,7 @@ enum FuncCode
 	// 355
 	LFUN_SPELLING_CONTINUOUSLY,     // vfr, 20130324
 	LFUN_SEPARATOR_INSERT,          // ef 20140502
+	LFUN_SERVER_GET_STATISTICS,     // brokenclock 20141010
 	LFUN_LASTACTION                 // end of the table
 };
 
diff --git a/src/LyXAction.cpp b/src/LyXAction.cpp
index 175f68e..bdc4198 100644
--- a/src/LyXAction.cpp
+++ b/src/LyXAction.cpp
@@ -3526,6 +3526,18 @@ void LyXAction::init()
  */
 		{ LFUN_STATISTICS, "statistics", ReadOnly, System },
 /*!
+ * \var lyx::FuncCode lyx::LFUN_SERVER_GET_STATISTICS
+ * \li Action: Count the statistics (number of words and characters)
+               in the document.
+ * \li Notion: Note that this function gives the number of words/chars written,
+               not the number of characters which will be typeset.
+ * \li Syntax: server-get-statistics <words|chars|chars-space>
+ * \li Params: <words|chars|chars-space> indicate the statistic to get, none for all space separated
+ * \li Origin: brokenclock, Oct 10 2014
+ * \endvar
+ */
+		{ LFUN_SERVER_GET_STATISTICS, "server-get-statistics", ReadOnly | Argument, System },
+/*!
  * \var lyx::FuncCode lyx::LFUN_COMPLETION_INLINE
  * \li Action: Show the inline completion at the cursor position.
  * \li Syntax: completion-inline
diff --git a/src/Text3.cpp b/src/Text3.cpp
index 79711f4..11260b4 100644
--- a/src/Text3.cpp
+++ b/src/Text3.cpp
@@ -2391,6 +2391,31 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
 		needsUpdate = true;
 		break;
 
+	case LFUN_SERVER_GET_STATISTICS:
+		{
+			DocIterator from, to;
+			if (cur.selection()) {
+				from = cur.selectionBegin();
+				to = cur.selectionEnd();
+			} else {
+				from = doc_iterator_begin(cur.buffer());
+				to = doc_iterator_end(cur.buffer());
+			}
+
+			cur.buffer()->updateStatistics(from, to);
+			const string arg0 = cmd.getArg(0);
+			if (arg0 == "words") {
+				cur.message(convert<docstring>(cur.buffer()->wordCount()));
+			} else if (arg0 == "chars") {
+				cur.message(convert<docstring>(cur.buffer()->charCount(false)));
+			} else if (arg0 == "chars-space") {
+				cur.message(convert<docstring>(cur.buffer()->charCount(true)));
+			} else {
+				cur.message(convert<docstring>(cur.buffer()->wordCount()) + " " + convert<docstring>(cur.buffer()->charCount(false)) + " " + convert<docstring>(cur.buffer()->charCount(true)));
+			}
+		}
+		break;
+
 	default:
 		LYXERR(Debug::ACTION, "Command " << cmd << " not DISPATCHED by Text");
 		cur.undispatched();
@@ -3109,6 +3134,7 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & cmd,
 	case LFUN_UNICODE_INSERT:
 	case LFUN_THESAURUS_ENTRY:
 	case LFUN_ESCAPE:
+	case LFUN_SERVER_GET_STATISTICS:
 		// these are handled in our dispatch()
 		enable = true;
 		break;
-- 
1.9.1

Répondre à