From: Dmitry Shachnev <mitya57@debian.org>
Date: Sat, 1 Dec 2018 12:51:11 +0300
Subject: Disable non-English search support

The lunr-languages library is unmaintained and incompatible with the
latest version of lunr, which we are going to use.

Forwarded: Not-Needed
---
 docs/user-guide/configuration.md        | 44 ---------------------------------
 mkdocs/contrib/search/prebuild-index.js | 17 -------------
 mkdocs/tests/search_tests.py            |  7 ++++++
 3 files changed, 7 insertions(+), 61 deletions(-)

diff --git a/docs/user-guide/configuration.md b/docs/user-guide/configuration.md
index fc6800d..6259158 100644
--- a/docs/user-guide/configuration.md
+++ b/docs/user-guide/configuration.md
@@ -719,47 +719,6 @@ plugins:
 
   **default**: 3
 
-##### **lang**
-
-A list of languages to use when building the search index as identified by their
-[ISO 639-1] language codes. With [Lunr Languages], the following languages are
-supported:
-
-* `ar`: Arabic
-* `da`: Danish
-* `nl`: Dutch
-* `en`: English
-* `fi`: Finnish
-* `fr`: French
-* `de`: German
-* `hu`: Hungarian
-* `it`: Italian
-* `ja`: Japanese
-* `no`: Norwegian
-* `pt`: Portuguese
-* `ro`: Romanian
-* `ru`: Russian
-* `es`: Spanish
-* `sv`: Swedish
-* `th`: Thai
-* `tr`: Turkish
-* `vi`: Vietnamese
-
-You may [contribute additional languages].
-
-WARNING:
-While search does support using multiple languages together, it is best not
-to add additional languages unless you really need them. Each additional
-language adds significant bandwidth requirements and uses more browser
-resources. Generally, it is best to keep each instance of MkDocs to a single
-language.
-
-NOTE:
-Lunr Languages does not currently include support for Chinese or other Asian
-languages. However, some users have reported decent results using Japanese.
-
-**default**: The value of `theme.locale` if set, otherwise `[en]`.
-
 ##### **prebuild_index**
 
 Optionally generates a pre-built index of all pages, which provides some
@@ -971,9 +930,6 @@ path based options in the primary configuration file only.
 [extra_css]: #extra_css
 [Plugins]: ../dev-guide/plugins.md
 [lunr.js]: https://lunrjs.com/
-[ISO 639-1]: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
-[Lunr Languages]: https://github.com/MihaiValentin/lunr-languages#lunr-languages-----
-[contribute additional languages]: https://github.com/MihaiValentin/lunr-languages/blob/master/CONTRIBUTING.md
 [Node.js]: https://nodejs.org/
 [markdown_extensions]: #markdown_extensions
 [nav]: #nav
diff --git a/mkdocs/contrib/search/prebuild-index.js b/mkdocs/contrib/search/prebuild-index.js
index 835d17b..a23a033 100644
--- a/mkdocs/contrib/search/prebuild-index.js
+++ b/mkdocs/contrib/search/prebuild-index.js
@@ -15,23 +15,6 @@ stdin.on('end', function () {
       lang = ['en'];
 
   if (data.config) {
-    if (data.config.lang && data.config.lang.length) {
-      lang = data.config.lang;
-      if (lang.length > 1 || lang[0] !== "en") {
-        require('./lunr-language/lunr.stemmer.support')(lunr);
-        if (lang.length > 1) {
-          require('./lunr-language/lunr.multi')(lunr);
-        }
-        if (lang.includes("ja") || lang.includes("jp")) {
-          require('./lunr-language/tinyseg')(lunr);
-        }
-        for (var i=0; i < lang.length; i++) {
-          if (lang[i] != 'en') {
-            require('./lunr-language/lunr.' + lang[i])(lunr);
-          }
-        }
-      }
-    }
     if (data.config.separator && data.config.separator.length) {
       lunr.tokenizer.separator = new RegExp(data.config.separator);
     }
diff --git a/mkdocs/tests/search_tests.py b/mkdocs/tests/search_tests.py
index ada861c..80f7291 100644
--- a/mkdocs/tests/search_tests.py
+++ b/mkdocs/tests/search_tests.py
@@ -33,6 +33,7 @@ class SearchConfigTests(unittest.TestCase):
         value = option.validate(['en'])
         self.assertEqual(['en'], value)
 
+    @unittest.expectedFailure
     def test_lang_multi_list(self):
         option = search.LangOption()
         value = option.validate(['en', 'es', 'fr'])
@@ -68,6 +69,7 @@ class SearchConfigTests(unittest.TestCase):
         value = option.validate(['en', 'foo'])
         self.assertEqual(['en'], value)
 
+    @unittest.expectedFailure
     def test_lang_missing_and_with_territory(self):
         option = search.LangOption()
         value = option.validate(['zh_CN', 'pt_BR', 'fr'])
@@ -89,6 +91,7 @@ class SearchPluginTests(unittest.TestCase):
         self.assertEqual(errors, [])
         self.assertEqual(warnings, [])
 
+    @unittest.expectedFailure
     def test_plugin_config_lang(self):
         expected = {
             'lang': ['es'],
@@ -170,6 +173,7 @@ class SearchPluginTests(unittest.TestCase):
         self.assertEqual(result['extra_javascript'], ['search/main.js'])
         self.assertEqual(plugin.config.lang, [result['theme']['locale'].language])
 
+    @unittest.expectedFailure
     def test_event_on_config_lang(self):
         plugin = search.SearchPlugin()
         plugin.load_config({'lang': 'es'})
@@ -181,6 +185,7 @@ class SearchPluginTests(unittest.TestCase):
         self.assertEqual(result['extra_javascript'], ['search/main.js'])
         self.assertEqual(plugin.config.lang, ['es'])
 
+    @unittest.expectedFailure
     def test_event_on_config_theme_locale(self):
         plugin = search.SearchPlugin()
         plugin.load_config({})
@@ -234,6 +239,7 @@ class SearchPluginTests(unittest.TestCase):
         self.assertEqual(mock_copy_file.call_count, 0)
         self.assertEqual(mock_write_file.call_count, 1)
 
+    @unittest.expectedFailure
     @mock.patch('mkdocs.utils.write_file', autospec=True)
     @mock.patch('mkdocs.utils.copy_file', autospec=True)
     def test_event_on_post_build_single_lang(self, mock_copy_file, mock_write_file):
@@ -245,6 +251,7 @@ class SearchPluginTests(unittest.TestCase):
         self.assertEqual(mock_copy_file.call_count, 2)
         self.assertEqual(mock_write_file.call_count, 1)
 
+    @unittest.expectedFailure
     @mock.patch('mkdocs.utils.write_file', autospec=True)
     @mock.patch('mkdocs.utils.copy_file', autospec=True)
     def test_event_on_post_build_multi_lang(self, mock_copy_file, mock_write_file):
