rummage 4.19__tar.gz → 4.20__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (213) hide show
  1. {rummage-4.19 → rummage-4.20}/PKG-INFO +2 -2
  2. {rummage-4.19 → rummage-4.20}/docs/src/markdown/about/changelog.md +6 -0
  3. rummage-4.20/docs/src/markdown/images/settings_general.png +0 -0
  4. {rummage-4.19 → rummage-4.20}/docs/src/markdown/installation.md +18 -18
  5. {rummage-4.19 → rummage-4.20}/docs/src/markdown/preferences.md +15 -3
  6. {rummage-4.19 → rummage-4.20}/gui.fbp +123 -0
  7. {rummage-4.19 → rummage-4.20}/rummage/lib/__meta__.py +1 -1
  8. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/controls/autocomplete_combo.py +22 -9
  9. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/about/changelog.html +6 -0
  10. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/about/contributing.html +1 -1
  11. rummage-4.20/rummage/lib/gui/data/docs/images/settings_general.png +0 -0
  12. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/installation.html +15 -18
  13. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/preferences.html +14 -12
  14. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/search.html +7 -7
  15. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/usage.html +1 -1
  16. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/dialogs/import_settings_dialog.py +2 -1
  17. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/dialogs/rummage_dialog.py +35 -28
  18. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/dialogs/settings_dialog.py +9 -0
  19. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/gui.py +10 -0
  20. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/localization/locale/en_US/LC_MESSAGES/rummage.po +311 -281
  21. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/localization/locale/ru_RU/LC_MESSAGES/rummage.po +312 -281
  22. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/settings/__init__.py +26 -0
  23. rummage-4.19/docs/src/markdown/images/settings_general.png +0 -0
  24. rummage-4.19/rummage/lib/gui/data/docs/images/settings_general.png +0 -0
  25. {rummage-4.19 → rummage-4.20}/.coveragerc +0 -0
  26. {rummage-4.19 → rummage-4.20}/.gitignore +0 -0
  27. {rummage-4.19 → rummage-4.20}/LICENSE.md +0 -0
  28. {rummage-4.19 → rummage-4.20}/README.md +0 -0
  29. {rummage-4.19 → rummage-4.20}/docs/src/markdown/.snippets/abbr.md +0 -0
  30. {rummage-4.19 → rummage-4.20}/docs/src/markdown/.snippets/links.md +0 -0
  31. {rummage-4.19 → rummage-4.20}/docs/src/markdown/.snippets/refs.md +0 -0
  32. {rummage-4.19 → rummage-4.20}/docs/src/markdown/about/contributing.md +0 -0
  33. {rummage-4.19 → rummage-4.20}/docs/src/markdown/about/license.md +0 -0
  34. {rummage-4.19 → rummage-4.20}/docs/src/markdown/extras.md +0 -0
  35. {rummage-4.19 → rummage-4.20}/docs/src/markdown/images/chain_button.png +0 -0
  36. {rummage-4.19 → rummage-4.20}/docs/src/markdown/images/chain_mode.png +0 -0
  37. {rummage-4.19 → rummage-4.20}/docs/src/markdown/images/chains.png +0 -0
  38. {rummage-4.19 → rummage-4.20}/docs/src/markdown/images/content_tab.png +0 -0
  39. {rummage-4.19 → rummage-4.20}/docs/src/markdown/images/file_pattern.png +0 -0
  40. {rummage-4.19 → rummage-4.20}/docs/src/markdown/images/files_tab.png +0 -0
  41. {rummage-4.19 → rummage-4.20}/docs/src/markdown/images/html_export.png +0 -0
  42. {rummage-4.19 → rummage-4.20}/docs/src/markdown/images/limit_search_panel.png +0 -0
  43. {rummage-4.19 → rummage-4.20}/docs/src/markdown/images/load_search.png +0 -0
  44. {rummage-4.19 → rummage-4.20}/docs/src/markdown/images/logo.svg +0 -0
  45. {rummage-4.19 → rummage-4.20}/docs/src/markdown/images/plugin_input.png +0 -0
  46. {rummage-4.19 → rummage-4.20}/docs/src/markdown/images/plugin_toggle.png +0 -0
  47. {rummage-4.19 → rummage-4.20}/docs/src/markdown/images/preview.png +0 -0
  48. {rummage-4.19 → rummage-4.20}/docs/src/markdown/images/regex_buttons.png +0 -0
  49. {rummage-4.19 → rummage-4.20}/docs/src/markdown/images/regex_tester.png +0 -0
  50. {rummage-4.19 → rummage-4.20}/docs/src/markdown/images/rummage.png +0 -0
  51. {rummage-4.19 → rummage-4.20}/docs/src/markdown/images/rummage.svg +0 -0
  52. {rummage-4.19 → rummage-4.20}/docs/src/markdown/images/save_search.png +0 -0
  53. {rummage-4.19 → rummage-4.20}/docs/src/markdown/images/search_replace_inputs.png +0 -0
  54. {rummage-4.19 → rummage-4.20}/docs/src/markdown/images/search_replace_panel.png +0 -0
  55. {rummage-4.19 → rummage-4.20}/docs/src/markdown/images/search_tab.png +0 -0
  56. {rummage-4.19 → rummage-4.20}/docs/src/markdown/images/settings_backup.png +0 -0
  57. {rummage-4.19 → rummage-4.20}/docs/src/markdown/images/settings_editor.png +0 -0
  58. {rummage-4.19 → rummage-4.20}/docs/src/markdown/images/settings_encoding.png +0 -0
  59. {rummage-4.19 → rummage-4.20}/docs/src/markdown/images/settings_export.png +0 -0
  60. {rummage-4.19 → rummage-4.20}/docs/src/markdown/images/settings_history.png +0 -0
  61. {rummage-4.19 → rummage-4.20}/docs/src/markdown/images/settings_import.png +0 -0
  62. {rummage-4.19 → rummage-4.20}/docs/src/markdown/images/settings_notify.png +0 -0
  63. {rummage-4.19 → rummage-4.20}/docs/src/markdown/images/settings_search.png +0 -0
  64. {rummage-4.19 → rummage-4.20}/docs/src/markdown/images/thunar-basic.png +0 -0
  65. {rummage-4.19 → rummage-4.20}/docs/src/markdown/images/thunar-conditions.png +0 -0
  66. {rummage-4.19 → rummage-4.20}/docs/src/markdown/images/thunar-custom.png +0 -0
  67. {rummage-4.19 → rummage-4.20}/docs/src/markdown/index.md +0 -0
  68. {rummage-4.19 → rummage-4.20}/docs/src/markdown/search.md +0 -0
  69. {rummage-4.19 → rummage-4.20}/docs/src/markdown/usage.md +0 -0
  70. {rummage-4.19 → rummage-4.20}/docs/theme/announce.html +0 -0
  71. {rummage-4.19 → rummage-4.20}/hatch_build.py +0 -0
  72. {rummage-4.19 → rummage-4.20}/mkdocs-internal.yml +0 -0
  73. {rummage-4.19 → rummage-4.20}/mkdocs.yml +0 -0
  74. {rummage-4.19 → rummage-4.20}/pyproject.toml +0 -0
  75. {rummage-4.19 → rummage-4.20}/requirements/docs.txt +0 -0
  76. {rummage-4.19 → rummage-4.20}/requirements/extras.txt +0 -0
  77. {rummage-4.19 → rummage-4.20}/requirements/lint.txt +0 -0
  78. {rummage-4.19 → rummage-4.20}/requirements/project.txt +0 -0
  79. {rummage-4.19 → rummage-4.20}/requirements/setup.txt +0 -0
  80. {rummage-4.19 → rummage-4.20}/requirements/test-project.txt +0 -0
  81. {rummage-4.19 → rummage-4.20}/requirements/test.txt +0 -0
  82. {rummage-4.19 → rummage-4.20}/rummage/__init__.py +0 -0
  83. {rummage-4.19 → rummage-4.20}/rummage/__main__.py +0 -0
  84. {rummage-4.19 → rummage-4.20}/rummage/lib/__init__.py +0 -0
  85. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/__init__.py +0 -0
  86. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/actions/__init__.py +0 -0
  87. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/actions/checksum/__init__.py +0 -0
  88. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/actions/checksum/sum_hashes.py +0 -0
  89. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/actions/checksum/tiger.py +0 -0
  90. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/actions/checksum/whirlpool.py +0 -0
  91. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/actions/export_csv.py +0 -0
  92. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/actions/export_html.py +0 -0
  93. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/actions/fileops.py +0 -0
  94. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/actions/sanitize_json.py +0 -0
  95. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/actions/updates.py +0 -0
  96. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/app/__init__.py +0 -0
  97. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/app/custom_app.py +0 -0
  98. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/app/platform_window_focus.py +0 -0
  99. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/app/rummage_app.py +0 -0
  100. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/controls/__init__.py +0 -0
  101. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/controls/collapsible_pane.py +0 -0
  102. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/controls/custom_statusbar.py +0 -0
  103. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/controls/date_picker.py +0 -0
  104. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/controls/dock_icon.py +0 -0
  105. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/controls/dynamic_lists.py +0 -0
  106. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/controls/encoding_list.py +0 -0
  107. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/controls/file_picker.py +0 -0
  108. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/controls/load_search_list.py +0 -0
  109. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/controls/pick_button.py +0 -0
  110. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/controls/result_lists.py +0 -0
  111. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/controls/search_chain_list.py +0 -0
  112. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/controls/search_error_list.py +0 -0
  113. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/controls/time_picker.py +0 -0
  114. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/controls/webview.py +0 -0
  115. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/__init__.py +0 -0
  116. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/arrow_down.png +0 -0
  117. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/arrow_left.png +0 -0
  118. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/arrow_right.png +0 -0
  119. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/arrow_up.png +0 -0
  120. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/binary.png +0 -0
  121. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/doc.png +0 -0
  122. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/404.html +0 -0
  123. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/about/license.html +0 -0
  124. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/css/theme.css +0 -0
  125. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/extras.html +0 -0
  126. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/images/chain_button.png +0 -0
  127. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/images/chain_mode.png +0 -0
  128. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/images/chains.png +0 -0
  129. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/images/content_tab.png +0 -0
  130. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/images/file_pattern.png +0 -0
  131. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/images/files_tab.png +0 -0
  132. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/images/html_export.png +0 -0
  133. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/images/limit_search_panel.png +0 -0
  134. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/images/load_search.png +0 -0
  135. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/images/logo.svg +0 -0
  136. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/images/plugin_input.png +0 -0
  137. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/images/plugin_toggle.png +0 -0
  138. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/images/preview.png +0 -0
  139. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/images/regex_buttons.png +0 -0
  140. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/images/regex_tester.png +0 -0
  141. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/images/rummage.png +0 -0
  142. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/images/rummage.svg +0 -0
  143. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/images/save_search.png +0 -0
  144. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/images/search_replace_inputs.png +0 -0
  145. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/images/search_replace_panel.png +0 -0
  146. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/images/search_tab.png +0 -0
  147. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/images/settings_backup.png +0 -0
  148. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/images/settings_editor.png +0 -0
  149. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/images/settings_encoding.png +0 -0
  150. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/images/settings_export.png +0 -0
  151. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/images/settings_history.png +0 -0
  152. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/images/settings_import.png +0 -0
  153. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/images/settings_notify.png +0 -0
  154. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/images/settings_search.png +0 -0
  155. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/images/thunar-basic.png +0 -0
  156. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/images/thunar-conditions.png +0 -0
  157. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/images/thunar-custom.png +0 -0
  158. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/index.html +0 -0
  159. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/js/theme.js +0 -0
  160. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/docs/sitemap.html +0 -0
  161. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/error.png +0 -0
  162. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/glass.png +0 -0
  163. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/results.css +0 -0
  164. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/rummage.png +0 -0
  165. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/rummage_1024.png +0 -0
  166. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/rummage_128.png +0 -0
  167. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/rummage_16.png +0 -0
  168. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/rummage_256.png +0 -0
  169. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/rummage_32.png +0 -0
  170. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/rummage_40.png +0 -0
  171. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/rummage_48.png +0 -0
  172. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/rummage_512.png +0 -0
  173. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/rummage_mac.png +0 -0
  174. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/data/sorttable.js +0 -0
  175. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/dialogs/__init__.py +0 -0
  176. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/dialogs/checksum_dialog.py +0 -0
  177. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/dialogs/column_dialog.py +0 -0
  178. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/dialogs/delete_dialog.py +0 -0
  179. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/dialogs/edit_search_chain_dialog.py +0 -0
  180. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/dialogs/error_text_dialog.py +0 -0
  181. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/dialogs/export_settings_dialog.py +0 -0
  182. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/dialogs/file_ext_dialog.py +0 -0
  183. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/dialogs/generic_dialogs.py +0 -0
  184. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/dialogs/html_dialog.py +0 -0
  185. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/dialogs/load_search_dialog.py +0 -0
  186. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/dialogs/msg_dialogs.py +0 -0
  187. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/dialogs/overwrite_dialog.py +0 -0
  188. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/dialogs/regex_test_dialog.py +0 -0
  189. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/dialogs/save_search_dialog.py +0 -0
  190. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/dialogs/search_chain_dialog.py +0 -0
  191. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/dialogs/search_error_dialog.py +0 -0
  192. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/dialogs/support_info_dialog.py +0 -0
  193. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/localization/__init__.py +0 -0
  194. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/notify/__init__.py +0 -0
  195. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/notify/notify_linux.py +0 -0
  196. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/notify/notify_osx.py +0 -0
  197. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/notify/notify_windows.py +0 -0
  198. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/notify/util.py +0 -0
  199. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/util/__init__.py +0 -0
  200. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/util/colors.py +0 -0
  201. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/util/images.py +0 -0
  202. {rummage-4.19 → rummage-4.20}/rummage/lib/gui/util/png.py +0 -0
  203. {rummage-4.19 → rummage-4.20}/rummage/lib/rumcore/__init__.py +0 -0
  204. {rummage-4.19 → rummage-4.20}/rummage/lib/rumcore/text_decode.py +0 -0
  205. {rummage-4.19 → rummage-4.20}/rummage/lib/rumcore/util.py +0 -0
  206. {rummage-4.19 → rummage-4.20}/tests/__init__.py +0 -0
  207. {rummage-4.19 → rummage-4.20}/tests/test_rumcore.py +0 -0
  208. {rummage-4.19 → rummage-4.20}/tests/test_text_decode.py +0 -0
  209. {rummage-4.19 → rummage-4.20}/tests/test_versions.py +0 -0
  210. {rummage-4.19 → rummage-4.20}/tests/util.py +0 -0
  211. {rummage-4.19 → rummage-4.20}/tools/__init__.py +0 -0
  212. {rummage-4.19 → rummage-4.20}/tools/gen_docs.py +0 -0
  213. {rummage-4.19 → rummage-4.20}/tools/gui_patch.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.3
2
2
  Name: rummage
3
- Version: 4.19
3
+ Version: 4.20
4
4
  Summary: A GUI search and replace app.
5
5
  Project-URL: Homepage, https://github.com/facelessuser/Rummage
6
6
  Author-email: Isaac Muse <Isaac.Muse@gmail.com>
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 4.20
4
+
5
+ - **NEW**: Add new autocomplete setting to disable/enable autocomplete. Mainly for Linux systems where autocomplete
6
+ functionality can sometimes work well or not so well depending on the distro.
7
+ - **FIX**: Fix issue with autocomplete shortcuts not working on every platform.
8
+
3
9
  ## 4.19
4
10
 
5
11
  - **NEW**: Drop support for Python 3.7.
@@ -18,42 +18,42 @@ installation can be done quickly and easily through `pip`. Some platforms, like
18
18
  hoops that you must jump through. Additionally, wxPython, the GUI library that Rummage depends on, may sometimes have
19
19
  support lagging for the latest Python version.
20
20
 
21
- Install:
21
+ In general, it is always recommended to try and install `wxpython` first and make sure it is properly available
22
+ before installing Rummage. The wxPython installation may be more complicated depending on the platform. But in general,
23
+ for non-Linux systems, the following steps are usually sufficient.
24
+
25
+ Make sure wxPython is installed first. It is important to first ensure wxPython can be installed for your platform and
26
+ specific Python version first.
22
27
 
23
28
  ```console
24
- $ pip install rummage
29
+ $ pip install wxpython
25
30
  ```
26
31
 
27
- Install with optional modules.
32
+ Install Rummage:
28
33
 
29
34
  ```console
30
- $ pip install rummage[extras]
35
+ $ pip install rummage
31
36
  ```
32
37
 
33
- Upgrade:
38
+ Install Rummage with optional modules.
34
39
 
35
40
  ```console
36
- $ pip install --upgrade rummage
41
+ $ pip install rummage[extras]
37
42
  ```
38
43
 
39
- ### Windows
40
-
41
- On systems like Windows, installation is pretty straight forward as wheels are provided for all packages in `pip`.
42
- Support for the latest Python version may not always be available as the development cycle for wxPython can take a bit
43
- to catch up.
44
-
45
- Simply using `pip` to install is sufficient.
44
+ Upgrade Rummage:
46
45
 
47
46
  ```console
48
- $ pip install rummage
47
+ $ pip install --upgrade rummage
49
48
  ```
50
49
 
51
- ### MacOS
50
+ ### Windows and macOS
52
51
 
53
- In recent years, wheels are usually available for wxPython on macOS. Support for the latest Python version may not
54
- always be available as the development cycle for wxPython can take a bit to catch up.
52
+ On Windows, installation is pretty straight forward as wheels are provided for all packages in `pip`. In recent years,
53
+ macOS installation also usually has wheels available as well. Support for the latest Python version may not always be
54
+ available as the development cycle for wxPython can take a bit to catch up.
55
55
 
56
- Usually, you can just use `pip` to install:
56
+ Simply using `pip` to install is sufficient.
57
57
 
58
58
  ```console
59
59
  $ pip install rummage
@@ -23,7 +23,6 @@ Language
23
23
  - Rummage has internal support to display dialog labels in different languages. Currently Rummage has English. Russian
24
24
  is outdated but includes a fair bit of the needed translations. See [Localization](./extras.md#localization) to
25
25
  learn more about improving current translations or adding additional translations.
26
- ///
27
26
 
28
27
  Updates
29
28
 
@@ -34,7 +33,7 @@ Updates
34
33
  The check is only a check for new versions and doesn't perform an upgrade. Rummage must be upgraded via `pip` from
35
34
  command line.
36
35
 
37
- /// info | Update Issues: Python 3.6+ on macOS
36
+ //// info | Update Issues: Python 3.6+ on macOS
38
37
  There is a small issue on macOS with Python 3.6+: Python 3.6 changed how it gets the default certificates
39
38
  required to properly check URLs. The details are actually documented here: https://bugs.python.org/issue28150#msg276516.
40
39
 
@@ -44,13 +43,26 @@ Updates
44
43
  will use `pip` to install `certifi` and creates a symlink in the OpenSSL directory to `certifi`'s installed
45
44
  bundle location. If you are using something like macports, then you'll probably have to research to find out how
46
45
  to do the same thing.
47
- ///
46
+ ////
48
47
 
49
48
  International Time
50
49
 
51
50
  - Rummage displays file creation and modified time in the form `Jul 01, 2018, 03:00:00 AM`, but you can enable this
52
51
  option to display the times in international format: `2018-07-01 03:00:00`.
53
52
 
53
+ Alternate Row Colors
54
+
55
+ - In search results, Rummage can show alternating colors for each row. This can be enabled/disabled.
56
+
57
+ Autocomplete
58
+
59
+ - For certain text boxes that retain a history of previous inputs, Rummage will employ an autocomplete feature.
60
+ Unfortunately, in some Linux distros, this autocomplete doesn't work quite right. Autocomplete can be
61
+ enabled/disabled for those who are having trouble with the feature.
62
+
63
+ ///
64
+
65
+
54
66
  ## Search
55
67
 
56
68
  ![Preferences: Search](images/settings_search.png)
@@ -7615,6 +7615,129 @@
7615
7615
  <event name="OnCheckBox">on_alt_row_toggle</event>
7616
7616
  </object>
7617
7617
  </object>
7618
+ <object class="sizeritem" expanded="0">
7619
+ <property name="border">5</property>
7620
+ <property name="flag">wxEXPAND | wxALL</property>
7621
+ <property name="proportion">0</property>
7622
+ <object class="wxStaticLine" expanded="0">
7623
+ <property name="BottomDockable">1</property>
7624
+ <property name="LeftDockable">1</property>
7625
+ <property name="RightDockable">1</property>
7626
+ <property name="TopDockable">1</property>
7627
+ <property name="aui_layer"></property>
7628
+ <property name="aui_name"></property>
7629
+ <property name="aui_position"></property>
7630
+ <property name="aui_row"></property>
7631
+ <property name="best_size"></property>
7632
+ <property name="bg"></property>
7633
+ <property name="caption"></property>
7634
+ <property name="caption_visible">1</property>
7635
+ <property name="center_pane">0</property>
7636
+ <property name="close_button">1</property>
7637
+ <property name="context_help"></property>
7638
+ <property name="context_menu">1</property>
7639
+ <property name="default_pane">0</property>
7640
+ <property name="dock">Dock</property>
7641
+ <property name="dock_fixed">0</property>
7642
+ <property name="docking">Left</property>
7643
+ <property name="enabled">1</property>
7644
+ <property name="fg"></property>
7645
+ <property name="floatable">1</property>
7646
+ <property name="font"></property>
7647
+ <property name="gripper">0</property>
7648
+ <property name="hidden">0</property>
7649
+ <property name="id">wxID_ANY</property>
7650
+ <property name="max_size"></property>
7651
+ <property name="maximize_button">0</property>
7652
+ <property name="maximum_size"></property>
7653
+ <property name="min_size"></property>
7654
+ <property name="minimize_button">0</property>
7655
+ <property name="minimum_size"></property>
7656
+ <property name="moveable">1</property>
7657
+ <property name="name">m_staticline15</property>
7658
+ <property name="pane_border">1</property>
7659
+ <property name="pane_position"></property>
7660
+ <property name="pane_size"></property>
7661
+ <property name="permission">protected</property>
7662
+ <property name="pin_button">1</property>
7663
+ <property name="pos"></property>
7664
+ <property name="resize">Resizable</property>
7665
+ <property name="show">1</property>
7666
+ <property name="size"></property>
7667
+ <property name="style">wxLI_HORIZONTAL</property>
7668
+ <property name="subclass">; ; forward_declare</property>
7669
+ <property name="toolbar_pane">0</property>
7670
+ <property name="tooltip"></property>
7671
+ <property name="window_extra_style"></property>
7672
+ <property name="window_name"></property>
7673
+ <property name="window_style"></property>
7674
+ </object>
7675
+ </object>
7676
+ <object class="sizeritem" expanded="0">
7677
+ <property name="border">5</property>
7678
+ <property name="flag">wxALL</property>
7679
+ <property name="proportion">0</property>
7680
+ <object class="wxCheckBox" expanded="0">
7681
+ <property name="BottomDockable">1</property>
7682
+ <property name="LeftDockable">1</property>
7683
+ <property name="RightDockable">1</property>
7684
+ <property name="TopDockable">1</property>
7685
+ <property name="aui_layer"></property>
7686
+ <property name="aui_name"></property>
7687
+ <property name="aui_position"></property>
7688
+ <property name="aui_row"></property>
7689
+ <property name="best_size"></property>
7690
+ <property name="bg"></property>
7691
+ <property name="caption"></property>
7692
+ <property name="caption_visible">1</property>
7693
+ <property name="center_pane">0</property>
7694
+ <property name="checked">0</property>
7695
+ <property name="close_button">1</property>
7696
+ <property name="context_help"></property>
7697
+ <property name="context_menu">1</property>
7698
+ <property name="default_pane">0</property>
7699
+ <property name="dock">Dock</property>
7700
+ <property name="dock_fixed">0</property>
7701
+ <property name="docking">Left</property>
7702
+ <property name="enabled">1</property>
7703
+ <property name="fg"></property>
7704
+ <property name="floatable">1</property>
7705
+ <property name="font"></property>
7706
+ <property name="gripper">0</property>
7707
+ <property name="hidden">0</property>
7708
+ <property name="id">wxID_ANY</property>
7709
+ <property name="label">Enable autocomplete</property>
7710
+ <property name="max_size"></property>
7711
+ <property name="maximize_button">0</property>
7712
+ <property name="maximum_size"></property>
7713
+ <property name="min_size"></property>
7714
+ <property name="minimize_button">0</property>
7715
+ <property name="minimum_size"></property>
7716
+ <property name="moveable">1</property>
7717
+ <property name="name">m_autocomplete_checkbox</property>
7718
+ <property name="pane_border">1</property>
7719
+ <property name="pane_position"></property>
7720
+ <property name="pane_size"></property>
7721
+ <property name="permission">protected</property>
7722
+ <property name="pin_button">1</property>
7723
+ <property name="pos"></property>
7724
+ <property name="resize">Resizable</property>
7725
+ <property name="show">1</property>
7726
+ <property name="size"></property>
7727
+ <property name="style"></property>
7728
+ <property name="subclass">; ; forward_declare</property>
7729
+ <property name="toolbar_pane">0</property>
7730
+ <property name="tooltip"></property>
7731
+ <property name="validator_data_type"></property>
7732
+ <property name="validator_style">wxFILTER_NONE</property>
7733
+ <property name="validator_type">wxDefaultValidator</property>
7734
+ <property name="validator_variable"></property>
7735
+ <property name="window_extra_style"></property>
7736
+ <property name="window_name"></property>
7737
+ <property name="window_style"></property>
7738
+ <event name="OnCheckBox">on_autocomplete_toggle</event>
7739
+ </object>
7740
+ </object>
7618
7741
  </object>
7619
7742
  </object>
7620
7743
  </object>
@@ -189,7 +189,7 @@ def parse_version(ver):
189
189
 
190
190
 
191
191
  # (major, minor, micro, release type, pre-release build, post-release build, development-release)
192
- __version_info__ = Version(4, 19, 0, 'final')
192
+ __version_info__ = Version(4, 20, 0, 'final')
193
193
  __version__ = __version_info__._get_canonical()
194
194
  __app__ = "Rummage"
195
195
  __status__ = __version_info__[3]
@@ -32,6 +32,7 @@ class AutoCompleteCombo(wx.ComboCtrl):
32
32
  choices = []
33
33
 
34
34
  self.focusing = False
35
+ self.enable_autocomplete = True
35
36
 
36
37
  wx.ComboCtrl.__init__(
37
38
  self, parent, wx_id,
@@ -59,6 +60,11 @@ class AutoCompleteCombo(wx.ComboCtrl):
59
60
  # Add choices
60
61
  self.update_choices(choices, load_last)
61
62
 
63
+ def set_autocomplete(self, option):
64
+ """Set autocomplete."""
65
+
66
+ self.enable_autocomplete = option
67
+
62
68
  def set_changed_callback(self, callback):
63
69
  """Set changed callback."""
64
70
 
@@ -175,9 +181,6 @@ class AutoCompleteCombo(wx.ComboCtrl):
175
181
  key = event.GetKeyCode()
176
182
  if key in (wx.WXK_DOWN, wx.WXK_UP) and not self.list.popup_shown:
177
183
  self.Popup()
178
- elif key in (wx.WXK_ESCAPE, wx.WXK_RETURN) and self.list.popup_shown:
179
- # Quirk with Windows: make sure we capture escape key
180
- self.list.on_key_down(event)
181
184
  event.Skip()
182
185
 
183
186
  def on_key_down(self, event):
@@ -200,6 +203,10 @@ class AutoCompleteCombo(wx.ComboCtrl):
200
203
  def on_text_change(self, event):
201
204
  """Autocomplete on text change event."""
202
205
 
206
+ if not self.enable_autocomplete:
207
+ event.Skip()
208
+ return
209
+
203
210
  found = False
204
211
  if not self.update_semaphore:
205
212
  tc = self.GetTextCtrl()
@@ -336,19 +343,22 @@ class ListCtrlComboPopup(wx.ComboPopup):
336
343
  wx.CallAfter(self.Dismiss)
337
344
  event.Skip()
338
345
 
339
- def on_key_down(self, event):
346
+ def on_char_hook(self, event):
340
347
  """Select item and dismiss popup on return key."""
341
348
 
342
349
  key = event.GetKeyCode()
343
350
  if key == wx.WXK_RETURN:
344
- curitem = self.list.GetFirstSelected()
345
- if curitem != -1:
346
- self.waiting_value = curitem
347
- wx.CallAfter(self.Dismiss)
351
+ if self.popup_shown:
352
+ curitem = self.list.GetFirstSelected()
353
+ if curitem != -1:
354
+ self.waiting_value = curitem
355
+ wx.CallAfter(self.Dismiss)
356
+ return
348
357
  elif key == wx.WXK_ESCAPE:
349
358
  if self.popup_shown:
350
359
  self.set_canceled()
351
360
  wx.CallAfter(self.Dismiss)
361
+ return
352
362
  elif key == wx.WXK_DOWN:
353
363
  if self.popup_shown:
354
364
  self.next_item()
@@ -401,7 +411,7 @@ class ListCtrlComboPopup(wx.ComboPopup):
401
411
  parent,
402
412
  style=wx.LC_REPORT | wx.LC_NO_HEADER | wx.LC_SINGLE_SEL | wx.SIMPLE_BORDER
403
413
  )
404
- self.list.Bind(wx.EVT_KEY_DOWN, self.on_key_down)
414
+ self.list.Bind(wx.EVT_CHAR_HOOK, self.on_char_hook)
405
415
  self.list.Bind(wx.EVT_MOTION, self.on_motion)
406
416
  self.list.Bind(wx.EVT_LEFT_DOWN, self.on_left_down)
407
417
  self.list.Bind(wx.EVT_SIZE, self.on_resize_dropdown)
@@ -437,15 +447,18 @@ class ListCtrlComboPopup(wx.ComboPopup):
437
447
 
438
448
  def OnPopup(self):
439
449
  """Called immediately after the popup is shown."""
450
+
440
451
  self.popup_shown = True
441
452
  wx.ComboPopup.OnPopup(self)
442
453
  self.pick_item()
443
454
 
444
455
  def OnDismiss(self):
445
456
  """Called when popup is dismissed."""
457
+
446
458
  self.popup_shown = False
447
459
  wx.ComboPopup.OnDismiss(self)
448
460
 
449
461
  def LazyCreate(self):
450
462
  """Lazy create."""
463
+
451
464
  return wx.ComboPopup.LazyCreate(self)
@@ -25,6 +25,12 @@
25
25
 
26
26
  <!-- Table of Content (Don't show for static sites) -->
27
27
  <h1 id="changelog">Changelog</h1>
28
+ <h2 id="420">4.20</h2>
29
+ <ul>
30
+ <li><strong>NEW</strong>: Add new autocomplete setting to disable/enable autocomplete. Mainly for Linux systems where autocomplete
31
+ functionality can sometimes work well or not so well depending on the distro.</li>
32
+ <li><strong>FIX</strong>: Fix issue with autocomplete shortcuts not working on every platform.</li>
33
+ </ul>
28
34
  <h2 id="419">4.19</h2>
29
35
  <ul>
30
36
  <li><strong>NEW</strong>: Drop support for Python 3.7.</li>
@@ -38,7 +38,7 @@
38
38
  <ul class="__toc_list_3">
39
39
 
40
40
  </ul>
41
- <li class="__toc_level_3"><a href="#become-a-sponsor">Become a Sponsor </a></li>
41
+ <li class="__toc_level_3"><a href="#become-a-sponsor">Become a Sponsor</a></li>
42
42
  <ul class="__toc_list_3">
43
43
 
44
44
  </ul>
@@ -41,11 +41,7 @@
41
41
  <li class="__toc_level_3"><a href="#installation_1">Installation</a></li>
42
42
  <ul class="__toc_list_3">
43
43
 
44
- <li class="__toc_level_4"><a href="#windows">Windows</a></li>
45
- <ul class="__toc_list_4">
46
-
47
- </ul>
48
- <li class="__toc_level_4"><a href="#macos">MacOS</a></li>
44
+ <li class="__toc_level_4"><a href="#windows-and-macos">Windows and macOS</a></li>
49
45
  <ul class="__toc_list_4">
50
46
 
51
47
  </ul>
@@ -110,28 +106,29 @@ dependencies. If desired, you can install these dependencies manually, or instal
110
106
  installation can be done quickly and easily through <code>pip</code>. Some platforms, like Linux, may require some additional
111
107
  hoops that you must jump through. Additionally, wxPython, the GUI library that Rummage depends on, may sometimes have
112
108
  support lagging for the latest Python version.</p>
113
- <p>Install:</p>
109
+ <p>In general, it is always recommended to try and install <code>wxpython</code> first and make sure it is properly available
110
+ before installing Rummage. The wxPython installation may be more complicated depending on the platform. But in general,
111
+ for non-Linux systems, the following steps are usually sufficient.</p>
112
+ <p>Make sure wxPython is installed first. It is important to first ensure wxPython can be installed for your platform and
113
+ specific Python version first.</p>
114
+ <div class="highlight"><pre><span></span><code><span class="gp">$ </span>pip<span class="w"> </span>install<span class="w"> </span>wxpython
115
+ </code></pre></div>
116
+ <p>Install Rummage:</p>
114
117
  <div class="highlight"><pre><span></span><code><span class="gp">$ </span>pip<span class="w"> </span>install<span class="w"> </span>rummage
115
118
  </code></pre></div>
116
- <p>Install with optional modules.</p>
119
+ <p>Install Rummage with optional modules.</p>
117
120
  <div class="highlight"><pre><span></span><code><span class="gp">$ </span>pip<span class="w"> </span>install<span class="w"> </span>rummage<span class="o">[</span>extras<span class="o">]</span>
118
121
  </code></pre></div>
119
- <p>Upgrade:</p>
122
+ <p>Upgrade Rummage:</p>
120
123
  <div class="highlight"><pre><span></span><code><span class="gp">$ </span>pip<span class="w"> </span>install<span class="w"> </span>--upgrade<span class="w"> </span>rummage
121
124
  </code></pre></div>
122
- <h3 id="windows">Windows</h3>
123
- <p>On systems like Windows, installation is pretty straight forward as wheels are provided for all packages in <code>pip</code>.
124
- Support for the latest Python version may not always be available as the development cycle for wxPython can take a bit
125
- to catch up.</p>
125
+ <h3 id="windows-and-macos">Windows and macOS</h3>
126
+ <p>On Windows, installation is pretty straight forward as wheels are provided for all packages in <code>pip</code>. In recent years,
127
+ macOS installation also usually has wheels available as well. Support for the latest Python version may not always be
128
+ available as the development cycle for wxPython can take a bit to catch up.</p>
126
129
  <p>Simply using <code>pip</code> to install is sufficient.</p>
127
130
  <div class="highlight"><pre><span></span><code><span class="gp">$ </span>pip<span class="w"> </span>install<span class="w"> </span>rummage
128
131
  </code></pre></div>
129
- <h3 id="macos">MacOS</h3>
130
- <p>In recent years, wheels are usually available for wxPython on macOS. Support for the latest Python version may not
131
- always be available as the development cycle for wxPython can take a bit to catch up.</p>
132
- <p>Usually, you can just use <code>pip</code> to install:</p>
133
- <div class="highlight"><pre><span></span><code><span class="gp">$ </span>pip<span class="w"> </span>install<span class="w"> </span>rummage
134
- </code></pre></div>
135
132
  <h3 id="linux">Linux</h3>
136
133
  <p>Linux doesn't often have pre-built wheels for wxPython, so often, you must first ensure some prerequisites are in place
137
134
  before using <code>pip install</code> (or other methods). Additionally, Linux, in recent years, has made managing libraries and
@@ -76,7 +76,7 @@
76
76
  </div>
77
77
  <h1 id="settings">Settings</h1>
78
78
  <h2 id="overview">Overview</h2>
79
- <p>The <strong>Preference</strong> dialog is found in the menu at <strong>File&rarr;Preferences</strong> and contains all of the global options that can
79
+ <p>The <strong>Preference</strong> dialog is found in the menu at <strong>File&ndash;&gt;Preferences</strong> and contains all of the global options that can
80
80
  be configured.</p>
81
81
  <h2 id="general">General</h2>
82
82
  <p><img alt="Preferences: General" src="images/settings_general.png" /></p>
@@ -90,10 +90,8 @@ be configured.</p>
90
90
  <dd>Rummage has internal support to display dialog labels in different languages. Currently Rummage has English. Russian
91
91
  is outdated but includes a fair bit of the needed translations. See <a href="extras.html#localization">Localization</a> to
92
92
  learn more about improving current translations or adding additional translations.</dd>
93
- </dl>
94
- <p>Updates</p>
95
- <ul>
96
- <li>
93
+ <dt>Updates</dt>
94
+ <dd>
97
95
  <p>Controls whether Rummage will check for new updates daily and allows controlling whether you want to be notified of
98
96
  prereleases as well. A button has also been provided to check for updates right away after configuring your update
99
97
  settings.</p>
@@ -110,13 +108,17 @@ will use <code>pip</code> to install <code>certifi</code> and creates a symlink
110
108
  bundle location. If you are using something like macports, then you'll probably have to research to find out how
111
109
  to do the same thing.</p>
112
110
  </div>
113
- </li>
114
- </ul>
115
- <p>International Time</p>
116
- <ul>
117
- <li>Rummage displays file creation and modified time in the form <code>Jul 01, 2018, 03:00:00 AM</code>, but you can enable this
118
- option to display the times in international format: <code>2018-07-01 03:00:00</code>.</li>
119
- </ul>
111
+ </dd>
112
+ <dt>International Time</dt>
113
+ <dd>Rummage displays file creation and modified time in the form <code>Jul 01, 2018, 03:00:00 AM</code>, but you can enable this
114
+ option to display the times in international format: <code>2018-07-01 03:00:00</code>.</dd>
115
+ <dt>Alternate Row Colors</dt>
116
+ <dd>In search results, Rummage can show alternating colors for each row. This can be enabled/disabled.</dd>
117
+ <dt>Autocomplete</dt>
118
+ <dd>For certain text boxes that retain a history of previous inputs, Rummage will employ an autocomplete feature.
119
+ Unfortunately, in some Linux distros, this autocomplete doesn't work quite right. Autocomplete can be
120
+ enabled/disabled for those who are having trouble with the feature.</dd>
121
+ </dl>
120
122
  <h2 id="search">Search</h2>
121
123
  <p><img alt="Preferences: Search" src="images/settings_search.png" /></p>
122
124
  <p>The <strong>Regular Expression</strong> panel is where the desired regular expression engine that Rummage uses can be selected and
@@ -401,7 +401,7 @@ pattern instead of treating it as the start of an extended match pattern (<code>
401
401
  <p>In <a href="preferences.html#search">Preferences</a>, you can enables Bash style brace expansion.</p>
402
402
  <p>Brace expansion is applied before anything else. When applied, a pattern will be expanded into multiple patterns. Each
403
403
  pattern will then be parsed separately.</p>
404
- <p>This is great for specifying complex combinations of patterns: <code>a{b,{c,d}}</code> &rarr; <code>ab ac ad</code>. For simple patterns, it may
404
+ <p>This is great for specifying complex combinations of patterns: <code>a{b,{c,d}}</code> &ndash;&gt; <code>ab ac ad</code>. For simple patterns, it may
405
405
  make more sense to use extended match patterns which will only generate a single pattern and be quicker to evaluate:
406
406
  <code>@(ab|ac|ad)</code>.</p>
407
407
  <p>Be careful with patterns such as <code>{1..100}</code> which would generate one hundred patterns that will all get individually
@@ -428,11 +428,11 @@ patterns.</p>
428
428
  <div class="admonition example">
429
429
  <p class="admonition-title">Example Brace Expansion</p>
430
430
  <ul>
431
- <li><code>a{b,{c,d}}</code> &rarr; <code>ab ac ad</code></li>
432
- <li><code>{1..3}</code> &rarr; <code>1 2 3</code></li>
433
- <li><code>{a..d}</code> &rarr; <code>a b c d</code></li>
434
- <li><code>{2..4..2}</code> &rarr; <code>2 4</code></li>
435
- <li><code>{a..e..2}</code> &rarr; <code>a c e</code></li>
431
+ <li><code>a{b,{c,d}}</code> &ndash;&gt; <code>ab ac ad</code></li>
432
+ <li><code>{1..3}</code> &ndash;&gt; <code>1 2 3</code></li>
433
+ <li><code>{a..d}</code> &ndash;&gt; <code>a b c d</code></li>
434
+ <li><code>{2..4..2}</code> &ndash;&gt; <code>2 4</code></li>
435
+ <li><code>{a..e..2}</code> &ndash;&gt; <code>a c e</code></li>
436
436
  </ul>
437
437
  </div>
438
438
  <h4 id="full-path-matching">Full Path Matching</h4>
@@ -457,7 +457,7 @@ separately in <a href="preferences.html#search">Preferences</a>.</p>
457
457
  <p>To learn more about full path matching with regular expression, checkout the regular expression <a href="#full-path-matching_1">section</a>.</p>
458
458
  <h4 id="pattern-limit">Pattern Limit</h4>
459
459
  <p>Glob style patterns, by default, allow expanding a pattern by splitting on <code>|</code> or expanding the pattern with brace
460
- expansion: <code>a{b,c}</code> &rarr; <code>ab ac</code>. This can turn one pattern into many patterns. The underlying expansion code limits
460
+ expansion: <code>a{b,c}</code> &ndash;&gt; <code>ab ac</code>. This can turn one pattern into many patterns. The underlying expansion code limits
461
461
  expansion to <code>1000</code> patterns. This limit can be configured in <a href="preferences.html#search">Preferences</a>. To raise or lower
462
462
  the limit, simply set the value higher or lower. To disable the limit entirely, set it to <code>0</code>.</p>
463
463
  <h3 id="regular-expression">Regular Expression</h3>
@@ -318,7 +318,7 @@ assumed this is not a binary replace, so a Unicode string is returned.</p>
318
318
  </div>
319
319
  <h2 id="export-to-csv-or-html">Export to CSV or HTML</h2>
320
320
  <p><img alt="HTML Export" src="images/html_export.png" /></p>
321
- <p>Rummage allows the exporting of the results to either CSV or HTML. Simply select <strong>File&rarr;Export</strong> and pick either
321
+ <p>Rummage allows the exporting of the results to either CSV or HTML. Simply select <strong>File&ndash;&gt;Export</strong> and pick either
322
322
  <strong>CSV</strong> or <strong>HTML</strong>. The HTML output will be styled similar to the GUI interface with the results in tables with
323
323
  sortable columns.</p>
324
324
  <div class="admonition info">
@@ -38,7 +38,8 @@ class ImportSettingsDialog(gui.ImportSettingsDialog):
38
38
  "alert_enabled", "check_updates", "check_prerelease", "debug",
39
39
  "notify_enabled", "single_instance", "extmatch",
40
40
  "brace_expansion", "file_case_sensitive", "full_exclude_path", "full_file_path",
41
- "globstar", "international_time", "matchbase", "minusnegate", "alt_list_color"
41
+ "globstar", "international_time", "matchbase", "minusnegate", "alt_list_color",
42
+ "autocomplete"
42
43
  )
43
44
  STRING = ("backup_ext", "backup_folder", "term_notifier", "editor", "notify_method", "notify_sound")
44
45
  INTEGER = ("backup_type", "regex_mode", "regex_version", "patten_limit")