diff --git a/app/cudatext.app/Contents/Resources/readme/history.txt b/app/cudatext.app/Contents/Resources/readme/history.txt
index d52b5e8ed97..69e96521afe 100644
--- a/app/cudatext.app/Contents/Resources/readme/history.txt
+++ b/app/cudatext.app/Contents/Resources/readme/history.txt
@@ -5,18 +5,23 @@
1.11.0
-+ new main icon, by FTurtle
-+ Project Manager: file type icons
-+ Project Manager: expand short "." to full name
-+ find/replace/goto/console: focused input has its border highlighted
-+ find/replace: Enter press on focused replace-field: makes "Replace next" and keeps focus
-+ find/replace: set hotkey for "Find first" to Alt+Enter
-* find/replace: changed hotkey for "Replace next" to Ctrl+R (Replace without find next: Ctrl+Alt+R)
-* find/replace: changed hotkeys Alt+5/Alt+6/Alt+7 to Alt+O/Alt+E/Alt+K
+
++ new main icon (by FTurtle)
++ Project Manager: file type icons (from VSCode program)
++ Project Manager: expand "." to full dir name
++ focused input (in find/replace/goto/console) has its border highlighted
+ option "ui_active_border"
+ options "find_hotkey_*" for hotkeys in find/replace dialog
++ find/replace: hotkey Enter on focused replace-box: runs "Replace next" and keeps focus
++ find/replace: set hotkey for "Find first" to Alt+Enter
+* find/replace: changed hotkey for "Replace next" to Alt+Z, "Replace without find next" to Ctrl+Alt+Z
+* find/replace: changed hotkeys Alt+5/Alt+6/Alt+7 to Alt+O/Alt+E/Alt+K
+* changed icons of toolbar
+* removed option "log_dialogs"
+- Windows: one more fix to show prev instance with ui_one_instance (by @vhanla)
1.10.0
+
+ preinstalled plugin Tabs List
+ Project Manager: read only toplevel dirs from disk, and read other dirs only on unfolding them in treeview (patch by @pohmelie)
+ Project Manager: added toolbar
@@ -26,6 +31,7 @@
- fix: loosing editor focus on Linux
1.9.3
+
+ preinstalled Project Manager plugin
+ can open folder names from command line, e.g. "cudatext ." like Atom/Sublime can do
+ menuitem "File - Open folder", it calls Project Manager
@@ -33,11 +39,13 @@
+ api
1.9.1
+
+ finder: replace-all made much faster (note: when confirmation is on, you will see unchanged text, it will replace later)
- finder: count-all must find w/o overlaps (non-regex mode)
+ api
1.9.0
+
+ distraction-free mode, see http://wiki.freepascal.org/CudaText#Full-screen
+ added option "ui_fullscreen" with new values
* removed option "ui_fullscreen_hide"
diff --git a/app/cudatext.app/Contents/Resources/readme/wiki/cudatext.wiki b/app/cudatext.app/Contents/Resources/readme/wiki/cudatext.wiki
index 60e65908bdc..d257b769085 100644
--- a/app/cudatext.app/Contents/Resources/readme/wiki/cudatext.wiki
+++ b/app/cudatext.app/Contents/Resources/readme/wiki/cudatext.wiki
@@ -459,18 +459,25 @@ These panels have hotkeys:
Dialog has hotkeys:
-* Enter: find next
-* Shift+Enter: find previous
-* Alt+Enter: replace next, and find next
-* Ctrl+Alt+Enter: replace next, but don't find next
-
-Option-buttons have hotkeys too: hover mouse over them to see hints:
+* Alt+Enter: Find first
+* Enter: Find next/ Replace next (depends of focused input)
+* Shift+Enter: Find previous
+* Alt+Z: Replace, and find next
+* Ctrl+Alt+Z: Replace, and don't find next
+* Alt+A: Replace all
+* Ctrl+Enter: Add newline in multi-line input
+* Alt+O: Count all
+* Alt+E: Select all
+* Alt+K: Mark all
+
+Option-buttons have hotkeys too, hover mouse over them to see hints:
* ".*" - Regular expressions - Alt+R
-* "aA" - Case sensitive - Alt+C
+* "aA" - Case sensitive search - Alt+C
* "w" - Search for whole words only - Alt+W
* "O" - Wrap search, ie search from beginning after reaching the end, and vice versa - Alt+N
* "[..]" - Search in selection only - Alt+X
+* "+" - Toggle multi-line mode: input boxes have double height and show several lines - Alt+M
* "?!" - Show confirmation on each replace - Alt+Y
==Comments==
@@ -666,7 +673,7 @@ Don't configure custom lexer styles in Lexer Properties dialog, if option "ui_le
==How to use on Windows XP==
-Q: I have Windows XP, what version of CudaText and Python should I have to have plugins working?
+Q: I have Windows XP, what version of CudaText (SynWrite) and Python should I have to have plugins working?
A: You need any version of CudaText (after 1.7), but older Python 3.4 DLLs. You must replace these Python files:
@@ -674,7 +681,11 @@ A: You need any version of CudaText (after 1.7), but older Python 3.4 DLLs. You
* *.zip
* folder DLLs
-with Python files from this WinXP build: https://sourceforge.net/projects/cudatextbuildlinuxi386/files/release/
+With Python files from this WinXP build: https://sourceforge.net/projects/cudatextbuildlinuxi386/files/release/
+
+Then open config "user.json" and write option:
+
+ "pylib": "python34.dll",
==How to copy to clipboard word under caret==
diff --git a/app/cudatext.app/Contents/Resources/readme/wiki/cudatext_api.wiki b/app/cudatext.app/Contents/Resources/readme/wiki/cudatext_api.wiki
index 5f906f534a3..fe74e88a89c 100644
--- a/app/cudatext.app/Contents/Resources/readme/wiki/cudatext_api.wiki
+++ b/app/cudatext.app/Contents/Resources/readme/wiki/cudatext_api.wiki
@@ -926,7 +926,7 @@ Show commands dialog, which is like customizable version of F1 dialog in CudaTex
Param options is sum of int flags:
* COMMANDS_USUAL - Show usual commands, which have int codes. Function gets "c:"+str(int_command) for them.
-* COMMANDS_PLUGINS - Show plugins commands. Function gets "p:module,method" or "p:module,method,param" for them.
+* COMMANDS_PLUGINS - Show plugins commands. Function gets "p:"+callback_string for them.
* COMMANDS_LEXERS - Show lexers pseudo-commands. Function gets "l:"+lexer_name for them.
* COMMANDS_CONFIG - Allow to call Configure Hotkeys dialog by F9 key.
@@ -936,16 +936,19 @@ Gets string if command selected, or None if cancelled.
file_open(filename, group=-1, args="")
-Opens editor tab with given filename. If filename already opened, activates its tab. Pass empty str to open untitled tab.
+Opens editor tab with given filename. If filename already opened, activates its tab. Pass empty str to open untitled tab. Gets bool: filename is empty or file successfully opened.
-Param group is index of tab-group (0-based), default means "current group". If you pass index of currently hidden group, group won't show, you need to call editor command to show it, see [[#cmd]].
-
-Param args is optional string. If it has "/silent" then zipped add-on will install w/o prompt and report.
-
-Gets bool: filename is empty or successfully opened.
+* Param "group: index of tab-group (0-based), default means "current group". If you pass index of currently hidden group, group won't show, you need to call editor command to show it, see [[#cmd]].
+* Param "args": optional string. If it has "/silent" then zipped add-on will install w/o prompt and report.
Note: "ed" is always the current editor, after file_open() current editor changes, and "ed" is the new cur editor.
+Example opens untitled tab, and writes multi-line text to it:
+
+ file_open('')
+ ed.set_text_all(text)
+
+
===file_save===
file_save(filename="")
@@ -953,7 +956,7 @@ Note: "ed" is always the current editor, after file_open() current editor change
Saves current tab to disk.
Shows save-as dialog for untitled tab.
-If param filename not empty, uses it (untitled tab becomes titled).
+If param "filename" not empty, it overrides current file name, and untitled tab becomes titled.
Gets bool: file was saved.
===ed_handles===
@@ -962,10 +965,13 @@ Gets bool: file was saved.
Gets range object: it contains int handles of all editor tabs. Pass each handle to Editor() to make editor object from handle.
-Example command in console, prints filenames of all tabs:
+Example code, which shows filenames of all tabs:
-
-for h in ed_handles(): print(Editor(h).get_filename())
+
+ #show all file names in console
+ for h in ed_handles():
+ e = Editor(h)
+ print(e.get_filename())
===ed_group===
@@ -1162,7 +1168,7 @@ class Command:
===menu_proc===
- menu_proc(id_menu, id_action, command="", caption="", index=-1, hotkey="")
+ menu_proc(id_menu, id_action, command="", caption="", index=-1, hotkey="", tag="")
Perform action on menu items.
@@ -1186,16 +1192,16 @@ Value of "command" parameter for MENU_ADD can be:
* callback in one of these forms: [[#Callback_param]].
* (deprecated callback form) callback in the form "module,method" or "module,method,param" (param can be of any primitive type).
-* to create usual sub-menus, special values:
-** "recents", "_recents" - recent-files submenu
-** "enc", "_enc" - encodings submenu (has subitems "reload as", "convert to")
-** "langs", "_langs" - translations submenu
-** "lexers", "_lexers" - lexers submenu
-** "plugins", "_plugins" - plugins submenu
-** "themes-ui", "_themes-ui" - ui-themes submenu
-** "themes-syntax", "_themes-syntax" - syntax-themes submenu
+* to create standatd special sub-menus, special values:
+** "recents", "_recents": Recent-files submenu
+** "enc", "_enc": Encodings submenu (has subitems "reload as", "convert to")
+** "langs", "_langs": Translations submenu
+** "lexers", "_lexers": Lexers submenu
+** "plugins", "_plugins": Plugins submenu
+** "themes-ui", "_themes-ui": UI-themes submenu
+** "themes-syntax", "_themes-syntax": Syntax-themes submenu
-* any string (e.g. empty), if item will be used as sub-menu (item is a sub-menu, if any sub-items are added to it)
+* empty string, if item will be used as submenu (item is a submenu, if any subitems are added to it)
====Actions====
@@ -1203,37 +1209,42 @@ Possible values of id_action:
* MENU_CLEAR: Removes all sub-items from menu item. Params used: id_menu.
-* MENU_ENUM: Enumerates sub-items in menu item. Params used: id_menu. If id_menu valid, gets list of dict, else gets None. Dict items are: {"id": int_id_menu; "cap": str_caption; "cmd": int_command; "hint": str_command; "hotkey": str_hotkey}.
+* MENU_ENUM: Enumerates sub-items in menu item. Params used: id_menu. If id_menu valid, gets list of dict, else gets None. Dict items are: {"id": int_id_menu; "cap": str_caption; "cmd": int_command; "hint": str_command; "hotkey": str_hotkey; "command": int_or_str}.
** for separator items: "cap" is "-"
** for usual command items: "cmd" value is >0
** for plugin command items: "cmd" value is <=0; "hint" is callback string
** for sub-menu items: "cmd" value is <=0; "hint" value is some string
+** "command": has int value of "cmd" (if >0), or str value of "hint" (otherwise)
* MENU_ADD: Adds sub-item to menu item. Gets string, menu_id for newly added sub-item. Params used:
-** id_menu - item in which you add sub-item.
-** caption - caption of menu item, or "-" for menu separator.
-** index - 0-based index at which to insert sub-item. Default: append item to the end.
-** command - possible values are described above.
-** hotkey - string of hotkey (e.g. "Ctrl+Shift+A"). Hotkey combos not allowed. Overrides hotkey, which is auto assigned from command code.
+** id_menu: Item in which you add sub-item.
+** caption: Caption of item, or "-" for menu separator.
+** index: Index (0-based) at which to insert sub-item. Default: append item to end.
+** command: Values are described above.
+** hotkey: String of hotkey (e.g. "Ctrl+Shift+A"). Hotkey combos are not allowed. It overrides hotkey, which is auto assigned from command code.
+** tag: Any string stored in menu item.
* MENU_CREATE: Creates new popup-menu, independant from CudaText menus. It can be filled like other menus, then shown via MENU_SHOW.
-* MENU_SHOW: Shows given popup-menu (note: only popup-menu id can be used here, not id of top menus). Param "command" must be "x,y" with screen-related coordinates, if empty - menu shows at mouse cursor.
+* MENU_SHOW: Shows given popup-menu. Only menu created with MENU_CREATE should be specified here. Param "command" must be tuple (x,y) or string "x,y" with screen-related coordinates, if empty - menu shows at mouse cursor.
====Example====
-Example adds item "Misc" to the main menu, and sub-items: "About-1", "About-2", separator, "Rename file" (from CudaExt plugin):
+Example adds item "Misc" to the main menu, and sub-items: "About", separator, "Rename file" (from CudaExt plugin):
+
menuid = menu_proc('top', MENU_ADD, caption='Misc')
- n = menu_proc(menuid, MENU_ADD, command=2700, caption='About-1')
- n = menu_proc(menuid, MENU_ADD, command=2700, caption='About-2')
+ n = menu_proc(menuid, MENU_ADD, command=2700, caption='About')
n = menu_proc(menuid, MENU_ADD, caption='-')
- n = menu_proc(menuid, MENU_ADD, command='cuda_ext,rename_file', caption='Rename file')
+ n = menu_proc(menuid, MENU_ADD, command='cuda_ext.rename_file', caption='Rename file')
+
Example creates popup-menu with one item and shows it at (x=100, y=100):
+
h = menu_proc(0, MENU_CREATE)
menu_proc(h, MENU_ADD, command=2700, caption='About...')
- menu_proc(h, MENU_SHOW, command='100,100')
+ menu_proc(h, MENU_SHOW, command=(100,100) )
+
===toolbar_proc===
@@ -1859,6 +1870,12 @@ Text is chr(1) separated items:
=History=
+1.0.185
+* add: menu_proc: for MENU_ADD added param "tag"
+* add: menu_proc: MENU_SHOW can use 2-tuple (x,y)
+* add: menu_proc: MENU_ENUM gives additional dict key "command"
+* deprecated: menu_proc command values: recents, enc, langs, lexers, plugins, themes-ui, themes-syntax
+
1.0.184
* deprecated: app_proc: PROC_SIDEPANEL_ADD, PROC_BOTTOMPANEL_ADD
* deprecated: on_panel event
diff --git a/app/cudatext.app/Contents/Resources/settings_default/default.json b/app/cudatext.app/Contents/Resources/settings_default/default.json
index 820b254543d..62da1985d97 100644
--- a/app/cudatext.app/Contents/Resources/settings_default/default.json
+++ b/app/cudatext.app/Contents/Resources/settings_default/default.json
@@ -700,11 +700,6 @@
//Folders from: sideicons
"ui_sidebar_theme": "octicons_20x20",
- //[Python]
- //Enable to save log files, for plugin dialogs
- //Files are %temp%\dlg_nnnnnnnnnnnnn.txt
- "log_dialogs": false,
-
//[FindHotkeys]
//Hotkeys in Find/Replace dialog
"find_hotkey_find_dlg": "Ctrl+F",