From 64db9f16e8ac47c97ab7c4932a90849e707aaf0d Mon Sep 17 00:00:00 2001 From: Le Tan Date: Fri, 24 Dec 2021 21:38:02 +0800 Subject: [PATCH] add docs about task --- en_us/docs/Users/Task.md | 294 ++++++++++++++++++ en_us/docs/Users/Themes and Styles.md | 31 +- en_us/docs/Users/vx.json | 22 +- .../docs/Users/vx_images/268813715229690.png | Bin 0 -> 7351 bytes .../docs/Users/vx_images/508234115217557.png | Bin 0 -> 10038 bytes .../docs/Users/vx_images/513614215237723.png | Bin 0 -> 4147 bytes en_us/index.md | 4 +- en_us/vx.json | 2 +- vx_notebook/notebook.db | Bin 16384 -> 16384 bytes zh_cn/docs/用户/vx.json | 22 +- zh_cn/docs/用户/vx_images/12811816237724.png | Bin 0 -> 4147 bytes zh_cn/docs/用户/vx_images/310341616229691.png | Bin 0 -> 7351 bytes zh_cn/docs/用户/vx_images/566291716217558.png | Bin 0 -> 10038 bytes zh_cn/docs/用户/主题和样式.md | 31 +- zh_cn/docs/用户/任务.md | 294 ++++++++++++++++++ zh_cn/index.md | 4 +- zh_cn/vx.json | 2 +- 17 files changed, 686 insertions(+), 20 deletions(-) create mode 100644 en_us/docs/Users/Task.md create mode 100644 en_us/docs/Users/vx_images/268813715229690.png create mode 100644 en_us/docs/Users/vx_images/508234115217557.png create mode 100644 en_us/docs/Users/vx_images/513614215237723.png create mode 100644 zh_cn/docs/用户/vx_images/12811816237724.png create mode 100644 zh_cn/docs/用户/vx_images/310341616229691.png create mode 100644 zh_cn/docs/用户/vx_images/566291716217558.png create mode 100644 zh_cn/docs/用户/任务.md diff --git a/en_us/docs/Users/Task.md b/en_us/docs/Users/Task.md new file mode 100644 index 00000000..ccf867ff --- /dev/null +++ b/en_us/docs/Users/Task.md @@ -0,0 +1,294 @@ +# Task +VNote supports a simple task system like [VSCode Tasks](https://code.visualstudio.com/docs/editor/tasks), which enables executing third-party programs easily. + +## Loading Tasks +VNote will try to load tasks from three locations: + +* `default_config_folder/tasks` for built-in tasks +* `user_config_folder/tasks` for user-defined tasks +* `notebook_config_folder/tasks` for tasks defined by this notebook + +A task is defined by a `*.json` entry file. + +## A Simple Task +Click the `Add Task` item on the task menu, which will open the user-defined tasks folder. + +![](vx_images/268813715229690.png) + +New a folder named `hello` and under it create a file named `hello.json`. Edit the JSON file as: + +```json +{ + "command": "echo 'Hello Tasks'" +} +``` + +Reload tasks in the menu and we could see that a new task named `hello` is listed on the menu. Click it to run the task. + +![](vx_images/508234115217557.png) + +![](vx_images/513614215237723.png) + +### Customize Menu Item +```json +{ + "label": "Hello", + "icon": "tasks-solid.svg", + "shortcut": "Alt+H, T", + "command": "echo", + "args": [ + "Hello tasks!" + ] +} +``` + +The icon file `tasks-solid.svg` should be saved alongside the JSON entry file. + +### Sub-Tasks +Tasks could be embedded infinitely. Sub-tasks will inherit most properties from parent. + +```json +{ + "label": "Hello Tasks", + "icon": "tasks-solid.svg", + "shortcut": "Alt+H, T", + "command": "echo", + "args": ["Hello tasks!"], + "tasks": [ + { + "label": "Hello Cat", + "icon": "cat-solid.svg", + "shortcut": "Alt+H, C", + "args": ["Hello cat!"] + }, + { + "label": "Hello Dove", + "icon": "dove-solid.svg", + "shortcut": "Alt+H, D", + "args": ["Hello dove!"] + }, + { + "label": "Hello Fish", + "icon": "fish-solid.svg", + "shortcut": "Alt+H, F", + "args": ["Hello fish!"] + } + ] +} +``` + +### Command Types +The `type` property of one task defines how the command will be executed. + +* `shell`: Default, will run the command as a shell command +* `process`: Will run the command as a standalone program + +```json +{ + "type": "process", + "label": "Open File with", + "args": ["${file}"], + "tasks": [ + { + "label": "Typora", + "icon": "Typora.svg", + "command": "C:\\Programs\\Typora0.9.98\\x64\\Typora.exe" + }, + { + "label": "VS Code", + "icon": "vscode.svg", + "command": "C:\\Users\\tootal\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe" + } + ] +} +``` + +::: alert-info + +Yep, `tootal` is the contributor who initiated the Task system of VNote! + +::: + +VNote does not provide a terminal. We may need to use `start` or `gnome-terminal` or `konsole` to run some programs in terminal. + +```json +{ + "label": "Vim", + "icon": "vim.svg", + "type": "process", + "command": "gnome-terminal", + "args": [ + "--execute", + "vim", + "${file}" + ] +} +``` + +### Localization and Platform-Specific Options +Provide a **locale string** JSON object to provide localization. + +```json +{ + "label": { + "en_US": "Hello", + "zh_CN": "你好" + } +} +``` + +We could use `windows`/`linux`/`osx` keyword to specify options for different platforms. + +```json +{ + "type": "process", + "label": "Open File with", + "args": ["${file}"], + "tasks": [ + { + "label": "Typora", + "icon": "Typora.svg", + "windows": { + "command": "C:\\Programs\\Typora0.9.98\\x64\\Typora.exe" + }, + "linux": { + "command": "/usr/bin/typora" + } + }, + { + "label": "VS Code", + "icon": "vscode.svg", + "windows": { + "command": "C:\\Users\\tootal\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe" + }, + "linux": { + "command": "/usr/bin/code" + } + } + ] +} +``` + +## Task Options +A task could have several options, some of them are mandatory. + +We will use `[m]` to mark the mandatory options, `[l]` to mark the options supporting localization. + +* `version`: the version of the task file +* `label[l]`: the name of the task +* `type`: the type of task; `shell`(default)/`process` +* `command[l]`: the command to execute +* `args[l]`: the arguments passed to the command +* `options`: options for runnig task + * `cwd`: current working directory to run task; will try current notebook root folder, then current buffer folder, and then current task file folder in order if missing + * `env`: environment variables for running task + * `shell`: options for tasks of `shell` type + * `executable`: the shell executable file; `Powershell.exe` by default on Windows and `/bin/bash` by default on Linux/macOS + * `args`: the arguments to start shell +* `tasks`: define sub-tasks +* `inputs`: define input variables + * `id[m]`: ID of the input variable + * `type`: `promptString` (default, prompt for user input) or `pickString` (prompt for user selection) + * `description[l]`: description of the input variable + * `default[l]`: default value + * `password`: whether use password mode for `promptString` type + * `options[l]`: options defined for `pickString` type +* `windows`: options for Windows system +* `linux`: options for Linux system +* `osx`: options for macOS system + +## Variables +A task could use variables provided by VNote in the form `${variableName}`. Variables could provide useful information to the task when running. + +Variables could be used in options `command`/`args`/`options.cwd`/`options.env`. + +### Built-In Variables +Notebook-related variables: + +* `notebookFolder`: path of the notebook root folder +* `notebookFolderName` +* `notebookName` +* `notebookDescription` + +Buffer-related variables: + +* `buffer`: path of current buffer +* `bufferNotebookFolder`: path of the notebook root folder of the notebook of current buffer +* `bufferRelativePath` +* `bufferName` +* `bufferBaseName` +* `bufferDir`: folder of current buffer +* `bufferExt`: extension suffix of current buffer +* `selectedText`: selected text of current buffer view window + +Task-related variables: + +* `cwd`: current working directory +* `taskFile`: the path of the task entry file +* `taskDir`: the path of the directory containing the task entry file +* `exeFile`: the path of VNote executable file +* `pathSeparator`: the platform-dependent path separator +* `notebookTaskFolder`: the path of current notebook task folder +* `userTaskFolder`: the path of user task folder +* `appTaskFolder`: the path of default task folder +* `userThemeFolder`: the path of user theme folder +* `appThemeFolder`: the path of default theme folder +* `userDocsFolder`: the path of user docs folder +* `appDocsFolder`: the path of default docs folder + +Other specifal variables: + +* Call **snippets** of VNote via `${magic:snippet_name}` +* Access environment variable via `${env:env_name}` +* Access VNote's configurations via `${config:[main|session].json_object_path}` + * `main` for the main configurations from `vnotex.json` and `session` for the session configurations from `session.json` + * Use `arr[index]` to access a JSON array + * `${config:main.core.shortcuts.FullScreen}` will get the shortcut of `FullScreen` + +#### Input Variables +A task could use **input variables** to prompt for user inputs via `${input:input_id}`. + +There are now two types of input variables: + +* `promptString` +* `pickString` + +```json +{ + "command": "echo", + "args": ["${input:what}"], + "inputs": [ + { + "id": "what", + "type": "promptString", + "description": "Type something, it will show in output panel." + } + ] +} +``` + +#### Shell Variables +A task could execute a shell command and get its output via **shell variables** like `${shell:shell_command}`. + +* `${shell:git rev-parse --abbrev-ref HEAD}` → `master` +* `${shell:whoami}` → `tootal` +* `${shell:dig github.com -4 +short}` → `52.69.186.44` + +## Examples +There is a built-in task named `Git` which locates in the default configuration task folder. + +Compile and run: + +```json +{ + "command": "g++ \"${file}\" -o \"${fileBasenameNoExtension}\"; if ($?) { start cmd \"/c `\"${fileBasenameNoExtension}`\" & pause\" }" +} +``` + +Run a HTTP server: + +```json +{ + "command": "start cmd.exe \"/c python -m http.server\" ; start http://localhost:8000" +} +``` diff --git a/en_us/docs/Users/Themes and Styles.md b/en_us/docs/Users/Themes and Styles.md index 67a9322d..f8f3212c 100644 --- a/en_us/docs/Users/Themes and Styles.md +++ b/en_us/docs/Users/Themes and Styles.md @@ -19,7 +19,7 @@ Some key files of a theme: - `highlight.css`: style sheet file of the read mode of Markdown for code block syntax highlight; VNote uses [Prism](https://prismjs.com/) for syntax highlight in read mode; ## Samples -### Custom Fonts +### Customize Editor Fonts #### Read Mode For the font in **read mode**, it is specified in `web.css` by the `font-family` and `font-size`. @@ -125,4 +125,33 @@ Markdown editor: } } } +``` + +### Customize Interface Fonts +We need to edit `interface.qss` to customize the fonts of interface, such as the menu and the navigation tree. + +[Qt docs](https://doc.qt.io/qt-5/stylesheet-examples.html) provides many detailed examples about the Qt stylesheet. + +Change the font size of all the widgets: + +```css +QWidget { + font-size: 12pt; +} +``` + +Change the font size of all the tree view and list view: + +```css +QTreeView, QListView { + font-size: 12pt; +} +``` + +Change the font size of the notebook node explorer: + +```css +vnotex--NotebookNodeExplorer QTreeView { + font-size: 14pt; +} ``` \ No newline at end of file diff --git a/en_us/docs/Users/vx.json b/en_us/docs/Users/vx.json index 20e3029d..7bdd5b25 100644 --- a/en_us/docs/Users/vx.json +++ b/en_us/docs/Users/vx.json @@ -31,6 +31,16 @@ "tags": [ ] }, + { + "attachment_folder": "", + "created_time": "2018-11-24T12:22:16Z", + "id": "15", + "modified_time": "2021-07-13T12:08:47Z", + "name": "Frequently Asked Questions.md", + "signature": "20733444373619", + "tags": [ + ] + }, { "attachment_folder": "", "created_time": "2018-11-24T12:13:02Z", @@ -75,7 +85,7 @@ "attachment_folder": "", "created_time": "2018-11-24T12:18:17Z", "id": "12", - "modified_time": "2021-07-29T13:14:53Z", + "modified_time": "2021-12-23T05:58:40Z", "name": "Themes and Styles.md", "signature": "2110466178163", "tags": [ @@ -103,11 +113,11 @@ }, { "attachment_folder": "", - "created_time": "2018-11-24T12:22:16Z", - "id": "15", - "modified_time": "2021-07-13T12:08:47Z", - "name": "Frequently Asked Questions.md", - "signature": "20733444373619", + "created_time": "2021-12-23T07:29:06Z", + "id": "49", + "modified_time": "2021-12-24T13:29:09Z", + "name": "Task.md", + "signature": "177733903682", "tags": [ ] } diff --git a/en_us/docs/Users/vx_images/268813715229690.png b/en_us/docs/Users/vx_images/268813715229690.png new file mode 100644 index 0000000000000000000000000000000000000000..2972b050f8145406bf984b3e3904a6975194e7a9 GIT binary patch literal 7351 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 W=CXM`6$;)&B1nnJi_Wmm} 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
J?je}x+&S{_aN%VgZ5vlgQr|*ujKk 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 literal 0 HcmV?d00001 diff --git a/en_us/docs/Users/vx_images/513614215237723.png b/en_us/docs/Users/vx_images/513614215237723.png new file mode 100644 index 0000000000000000000000000000000000000000..2d98a90793f917cbb7c94cf60d4c732ceeeea0a7 GIT binary patch literal 4147 zcmc(jSya@B3BNo zd!-Ib0RXVq`mzNC0K~#X{efNIiRx<&1)-v5ci3gOZ~)lX_FEC7!k^y)0GTOk3o~eR z;XJDkcASapSfm~!-O8(pEfmI9t?p)mYpmBd)tw8-ZIl7=JH!5m3pHs z0eKd72?yNVc`m+D`8?19*{KJ(CIOOw?e`PFb#?KhfEGA@M?8L481Q1ya9L3Zf3tak zs}8jEZY%(%CMLLFjQ}9ZLR#Wa<7CD50lCU8Vt-6FtFZSQbJ&|TG>3H90T2R%#o}bq zcm{(Jy{_@@ef6oG0JoxIr*LlG$vAe|6(uQYpr`k)mB6>V_+Uqiirp58Z81`B}-tefY}7kLx*q{Q|GzPxsjxhX~k3 z&FE6y`;ubui6_S{xvjR950HE!%B-?r*D9l9?o70ke_}A|oDg|SMMlil&M_(A1B@pp zEX6Q&ng;3fxIAH+c!;FcyiE+3*mp-Zkc*W>*u2TW;C$lZ{I8&`ODJ{Y*p#BB{;Sd_)S-&p!o2hkUIf$(P{|G5R^={FK^b zrYvu+csL@Vq#6W|8q*OA^N}97wA*Qx+}-F@%pnb9liOF2$BCU`wUxI_RLkK36^70} z_|ad+m(hnF}*IQ=dMr5)YL>8P>qTol$sdG58Kr9>$;-**UEErQe1yTd{WzV;FSQpPS zDu>o0U7Vg*wfi!XAV^(GPb#P?^C~$ub$G4$0tI&eppUn|&s@!OL+4-K(OvAT)IG>D z%nftcoowk~4MN%NsJ*@m=BO?AWLfYwncTY6L2ecDr0nDj!@aVIx|`0xi;g|+YPAtg z88(oi%ZU9pPSS`1Fyr1>a6?5>Ud9kiYQXoQ?TIxK+^>edJBI2ASwCxe_EYoW)Q4w7 z>u0Wp_nnhrbWY3N{Vod89neEOqTc+h)FSv-q%ZUA-GuK2$8eZ!rOUw9kOecdCk+>#n(^AWuIz<-(C0+pV?5-FF`KYR`;zTwHVI;<{^_nuXTx^ao} zQs4HuJp!T-NIz1d&}^imIP+<@jy7XNX5#Er885afvKrOd_x6!wdJx%J#ewrjj;5^zNU%a{)z~W*=%Ey){-eZQwy4OPF6saY={>I{UThgcEm;LeM$Wa|MkmIvrs39 z2I+RWxPxs3)5$C|n_)kBnMJKgLzvm|&LWyhf)jK;y8=(hcs85uOkzN|kw~O|we>)I zdtyJ077-aqpwq8CEi4Q~BHc3iEAt*FvbvBI31Cb!99|3n3)uht-t;e4-+$k%{u$n7 zCyFT&Cv#={`GxC+rlD6{C?1eNG*U#R(Xj4RYNCemMpL-7Q$wF8pp{)A8SN?xd5Y0? z6|YG+vlX(xRWE#rYNDl8&!bqIv0VnWhWO#t_-awiiJ+vrCuW3A=oI1sk?4R#+NKj_hw-`3GPefG@!y6a}R!Pdw{v*E|e;P+{nm{o^W|7e!| zsjE;;jq}u?9o+j8LB)67r57$v`L7XIKHa0ljy zK|NK2Qp!^ic_zaPww+KgG(3Z0#s#hov4T?-q*@+mUyd)Ykps^sp{+g!pP)>?{mp~( zn;C1#LB~x`Ny_bY`uLCJ+XrU%kW`>BpVC*&RjG6NtsQxJqNvrLO=D>B`RR06xAUBN zNHO2J>}h4ThG@4>f0ImB;WQSnZt6XG_=&QWDIEV^;M-eo4qJZ{9nz8K5=i{u)|L-d zsQ*A(uNxf8vhnO2wJsafI~O~*<*1@}T2rYXCGPS&(i?kzI-gni0K&L8>hD<7{0>I^ z>{qs&e~RYOk;<`A7x#gZFCf{m)^tH@AM8ACY�W;=!Rs~;|~C#X*y zxQ(HJpyr@lv}@*E=;e`&lIMh*s=Epc@2NquO`-l4(s+-}P4AB+4bvn`C%*Js(E%1w z$I~+`EBl_Dxe+VfBpB_+nfwkm-QUxqK>p-loazs6PltlbYN48h!E=O7vp>?}^p+jA z<5OSLZEO1&uL}Df%gjsLYfMg|#r9%{3qBw6mQ#Hwg^&yL@4 zDY2JkS*gHNI6t;iiE-*;(C!CfgY` z=I+Jfe<10z-$?35`!h+;zY&pCU^e~$k6&xU`Yuqv)UQ;{7kx(V`${`{GDji2wLkWD z1QkY{Xh5*;@lD6~k=K11SqOms>Mj~R8eHQ(%Q^)DVJ}!W)YZLPU9Io$@4p)pL(IxL zpbY}qW{x$-l5U;Vznk!4vJ0(`6+B4=!I_Sy*^!;2Lx$S(>%#dWx_iUP0_>1+`MS(& z2az*%q5YoQ5_uJ2h+%uE{{|R`C91p{fBG%AL9m#kS0& w1ku~h_gKsX5Z`$GZ%@B}CZPTkp}B@3Y!VMtsZE-SegOb$u)PK4()D})1?@P)k^lez literal 0 HcmV?d00001 diff --git a/en_us/index.md b/en_us/index.md index 00f06e07..7aa5f00d 100644 --- a/en_us/index.md +++ b/en_us/index.md @@ -3,7 +3,7 @@ ::: alert-success -VNote 3.10.1 is released! Check out [what's new](https://github.com/vnotex/vnote/releases)! +VNote 3.11.0 is released! Check out [what's new](https://github.com/vnotex/vnote/releases)! ::: @@ -34,7 +34,7 @@ VNote 3.10.1 is released! Check out [what's new](https://github.com/vnotex/vnote ![](_v_images/20181124155408890_125984506.svg =512x) ## Concentration -- **No** live preview side by side +- In-place preview or side-by-side live preview - Focus on your note in both **read** and **edit** mode ![](_v_images/20181124155541581_1337512834.svg =512x) diff --git a/en_us/vx.json b/en_us/vx.json index fe11e359..4d10e18f 100644 --- a/en_us/vx.json +++ b/en_us/vx.json @@ -5,7 +5,7 @@ "attachment_folder": "", "created_time": "2018-11-24T05:04:27Z", "id": "19", - "modified_time": "2021-08-29T03:16:36Z", + "modified_time": "2021-12-24T13:37:07Z", "name": "index.md", "signature": "79316798291059", "tags": [ diff --git a/vx_notebook/notebook.db b/vx_notebook/notebook.db index 7e86e2429e69ea5012fd941599eccb9fccac97f8..d6e0c6e498d1647cc63c1cd3a43432c3ca1bf2f2 100644 GIT binary patch delta 86 zcmZo@U~Fh$oFL6;I#I@%(R5?N5`JbQu7i`=1rk}fZg3sk*ci&CBWlFTAkWJ9WcTi; nT?_ScQy4T8kJfyb7dB*NkY;5JNi5EW2p&;&V%hvwN>~*DfiD`V delta 36 scmZo@U~Fh$oFL6;JW@B3BNo zd!-Ib0RXVq`mzNC0K~#X{efNIiRx<&1)-v5ci3gOZ~)lX_FEC7!k^y)0GTOk3o~eR z;XJDkcASapSfm~!-O8(pEfmI9t?p)mYpmBd)tw8-ZIl7=JH!5m3pHs z0eKd72?yNVc`m+D`8?19*{KJ(CIOOw?e`PFb#?KhfEGA@M?8L481Q1ya9L3Zf3tak zs}8jEZY%(%CMLLFjQ}9ZLR#Wa<7CD50lCU8Vt-6FtFZSQbJ&|TG>3H90T2R%#o}bq zcm{(Jy{_@@ef6oG0JoxIr*LlG$vAe|6(uQYpr`k)mB6>V_+Uqiirp58Z81`B}-tefY}7kLx*q{Q|GzPxsjxhX~k3 z&FE6y`;ubui6_S{xvjR950HE!%B-?r*D9l9?o70ke_}A|oDg|SMMlil&M_(A1B@pp zEX6Q&ng;3fxIAH+c!;FcyiE+3*mp-Zkc*W>*u2TW;C$lZ{I8&`ODJ{Y*p#BB{;Sd_)S-&p!o2hkUIf$(P{|G5R^={FK^b zrYvu+csL@Vq#6W|8q*OA^N}97wA*Qx+}-F@%pnb9liOF2$BCU`wUxI_RLkK36^70} z_|ad+m(hnF}*IQ=dMr5)YL>8P>qTol$sdG58Kr9>$;-**UEErQe1yTd{WzV;FSQpPS zDu>o0U7Vg*wfi!XAV^(GPb#P?^C~$ub$G4$0tI&eppUn|&s@!OL+4-K(OvAT)IG>D z%nftcoowk~4MN%NsJ*@m=BO?AWLfYwncTY6L2ecDr0nDj!@aVIx|`0xi;g|+YPAtg z88(oi%ZU9pPSS`1Fyr1>a6?5>Ud9kiYQXoQ?TIxK+^>edJBI2ASwCxe_EYoW)Q4w7 z>u0Wp_nnhrbWY3N{Vod89neEOqTc+h)FSv-q%ZUA-GuK2$8eZ!rOUw9kOecdCk+>#n(^AWuIz<-(C0+pV?5-FF`KYR`;zTwHVI;<{^_nuXTx^ao} zQs4HuJp!T-NIz1d&}^imIP+<@jy7XNX5#Er885afvKrOd_x6!wdJx%J#ewrjj;5^zNU%a{)z~W*=%Ey){-eZQwy4OPF6saY={>I{UThgcEm;LeM$Wa|MkmIvrs39 z2I+RWxPxs3)5$C|n_)kBnMJKgLzvm|&LWyhf)jK;y8=(hcs85uOkzN|kw~O|we>)I zdtyJ077-aqpwq8CEi4Q~BHc3iEAt*FvbvBI31Cb!99|3n3)uht-t;e4-+$k%{u$n7 zCyFT&Cv#={`GxC+rlD6{C?1eNG*U#R(Xj4RYNCemMpL-7Q$wF8pp{)A8SN?xd5Y0? z6|YG+vlX(xRWE#rYNDl8&!bqIv0VnWhWO#t_-awiiJ+vrCuW3A=oI1sk?4R#+NKj_hw-`3GPefG@!y6a}R!Pdw{v*E|e;P+{nm{o^W|7e!| zsjE;;jq}u?9o+j8LB)67r57$v`L7XIKHa0ljy zK|NK2Qp!^ic_zaPww+KgG(3Z0#s#hov4T?-q*@+mUyd)Ykps^sp{+g!pP)>?{mp~( zn;C1#LB~x`Ny_bY`uLCJ+XrU%kW`>BpVC*&RjG6NtsQxJqNvrLO=D>B`RR06xAUBN zNHO2J>}h4ThG@4>f0ImB;WQSnZt6XG_=&QWDIEV^;M-eo4qJZ{9nz8K5=i{u)|L-d zsQ*A(uNxf8vhnO2wJsafI~O~*<*1@}T2rYXCGPS&(i?kzI-gni0K&L8>hD<7{0>I^ z>{qs&e~RYOk;<`A7x#gZFCf{m)^tH@AM8ACY�W;=!Rs~;|~C#X*y zxQ(HJpyr@lv}@*E=;e`&lIMh*s=Epc@2NquO`-l4(s+-}P4AB+4bvn`C%*Js(E%1w z$I~+`EBl_Dxe+VfBpB_+nfwkm-QUxqK>p-loazs6PltlbYN48h!E=O7vp>?}^p+jA z<5OSLZEO1&uL}Df%gjsLYfMg|#r9%{3qBw6mQ#Hwg^&yL@4 zDY2JkS*gHNI6t;iiE-*;(C!CfgY` z=I+Jfe<10z-$?35`!h+;zY&pCU^e~$k6&xU`Yuqv)UQ;{7kx(V`${`{GDji2wLkWD z1QkY{Xh5*;@lD6~k=K11SqOms>Mj~R8eHQ(%Q^)DVJ}!W)YZLPU9Io$@4p)pL(IxL zpbY}qW{x$-l5U;Vznk!4vJ0(`6+B4=!I_Sy*^!;2Lx$S(>%#dWx_iUP0_>1+`MS(& z2az*%q5YoQ5_uJ2h+%uE{{|R`C91p{fBG%AL9m#kS0& w1ku~h_gKsX5Z`$GZ%@B}CZPTkp}B@3Y!VMtsZE-SegOb$u)PK4()D})1?@P)k^lez literal 0 HcmV?d00001 diff --git a/zh_cn/docs/用户/vx_images/310341616229691.png b/zh_cn/docs/用户/vx_images/310341616229691.png new file mode 100644 index 0000000000000000000000000000000000000000..2972b050f8145406bf984b3e3904a6975194e7a9 GIT binary patch literal 7351 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 W=CXM`6$;)&B1nnJi_Wmm} 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
J?je}x+&S{_aN%VgZ5vlgQr|*ujKk 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 literal 0 HcmV?d00001 diff --git a/zh_cn/docs/用户/主题和样式.md b/zh_cn/docs/用户/主题和样式.md index 30402ff8..1f189921 100644 --- a/zh_cn/docs/用户/主题和样式.md +++ b/zh_cn/docs/用户/主题和样式.md @@ -19,7 +19,7 @@ - `highlight.css`: Markdown阅读模式的代码块语法高亮样式文件;VNote在阅读模式使用[Prism](https://prismjs.com/)来进行语法高亮; ## 示例 -### 自定义字体 +### 自定义编辑器字体 #### 阅读模式 **阅读模式**的字体定义在文件`web.css`的`font-family`和`font-size`中。 @@ -126,3 +126,32 @@ Markdown编辑器: } } ``` + +### 自定义界面字体 +我们需要编辑`interface.qss`来自定义界面字体,例如菜单或者导航树。 + +[Qt文档](https://doc.qt.io/qt-5/stylesheet-examples.html)提供了关于Qt样式的很详细的例子。 + +改变所有部件的字体大小: + +```css +QWidget { + font-size: 12pt; +} +``` + +改变所有树或者列表部件的字体大小: + +```css +QTreeView, QListView { + font-size: 12pt; +} +``` + +改变笔记本节点浏览器的字体大小: + +```css +vnotex--NotebookNodeExplorer QTreeView { + font-size: 14pt; +} +``` \ No newline at end of file diff --git a/zh_cn/docs/用户/任务.md b/zh_cn/docs/用户/任务.md new file mode 100644 index 00000000..ec540962 --- /dev/null +++ b/zh_cn/docs/用户/任务.md @@ -0,0 +1,294 @@ +# 任务 +VNote支持一个类似于[VSCode Tasks](https://code.visualstudio.com/docs/editor/tasks)的简单任务系统,可以方便地执行第三方程序。 + +## 加载任务 +VNote会尝试从下面三个位置加载任务: + +* `默认配置文件夹/tasks`包含内置的任务 +* `用户配置文件夹/tasks`包含用户定义的任务 +* `笔记本配置文件夹/tasks`包含该笔记本定义的任务 + +一个任务由一个`*.json`的入口文件给出定义。 + +## 一个简单的任务 +点击任务菜单中的`添加任务`,打开用户定义的任务文件夹。 + +![](vx_images/310341616229691.png) + +新建一个文件夹`hello`并在其下面新建一个文件`hello.json`。编辑该文件如下: + +```json +{ + "command": "echo 'Hello Tasks'" +} +``` + +重新加载任务,我们可以看到菜单里面列出了一个新的任务`hello`。点击运行该任务。 + +![](vx_images/566291716217558.png) + +![](vx_images/12811816237724.png) + +### 自定义菜单项 +```json +{ + "label": "Hello", + "icon": "tasks-solid.svg", + "shortcut": "Alt+H, T", + "command": "echo", + "args": [ + "Hello tasks!" + ] +} +``` + +其中的图标文件`tasks-solid.svg`需要保存在JSON入口文件同目录。 + +### 子任务 +任务可以无限嵌套。子任务会继承父任务的大部分属性。 + +```json +{ + "label": "Hello Tasks", + "icon": "tasks-solid.svg", + "shortcut": "Alt+H, T", + "command": "echo", + "args": ["Hello tasks!"], + "tasks": [ + { + "label": "Hello Cat", + "icon": "cat-solid.svg", + "shortcut": "Alt+H, C", + "args": ["Hello cat!"] + }, + { + "label": "Hello Dove", + "icon": "dove-solid.svg", + "shortcut": "Alt+H, D", + "args": ["Hello dove!"] + }, + { + "label": "Hello Fish", + "icon": "fish-solid.svg", + "shortcut": "Alt+H, F", + "args": ["Hello fish!"] + } + ] +} +``` + +### 命令类型 +任务的`type`属性定义了该任务的命令是如何被执行的。 + +* `shell`: 默认,将命令作为一个shell命令执行 +* `process`: 将命令作为一个独立的程序执行 + +```json +{ + "type": "process", + "label": "Open File with", + "args": ["${file}"], + "tasks": [ + { + "label": "Typora", + "icon": "Typora.svg", + "command": "C:\\Programs\\Typora0.9.98\\x64\\Typora.exe" + }, + { + "label": "VS Code", + "icon": "vscode.svg", + "command": "C:\\Users\\tootal\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe" + } + ] +} +``` + +::: alert-info + +是的,`tootal`就是那个发起VNote任务系统的贡献者! + +::: + +VNote没有提供一个终端。我们可能需要使用`start`或者`gnome-terminal`或者`konsole`来在终端里面运行某些程序。 + +```json +{ + "label": "Vim", + "icon": "vim.svg", + "type": "process", + "command": "gnome-terminal", + "args": [ + "--execute", + "vim", + "${file}" + ] +} +``` + +### 本地化和平台依赖选项 +可以通过一个**区域字符串**JSON对象来提供本地化。 + +```json +{ + "label": { + "en_US": "Hello", + "zh_CN": "你好" + } +} +``` + +可以使用`windows`/`linux`/`osx`关键词来指明不同平台的选项。 + +```json +{ + "type": "process", + "label": "Open File with", + "args": ["${file}"], + "tasks": [ + { + "label": "Typora", + "icon": "Typora.svg", + "windows": { + "command": "C:\\Programs\\Typora0.9.98\\x64\\Typora.exe" + }, + "linux": { + "command": "/usr/bin/typora" + } + }, + { + "label": "VS Code", + "icon": "vscode.svg", + "windows": { + "command": "C:\\Users\\tootal\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe" + }, + "linux": { + "command": "/usr/bin/code" + } + } + ] +} +``` + +## 任务选项 +一个任务可以有多个选项,其中有一些是必须的。 + +我们使用`[m]`来标记必须选项,`[l]`来标记支持本地化的选项。 + +* `version`: 任务文件的版本 +* `label[l]`: 任务的名字 +* `type`: 任务的类型,`shell`(默认)或者`process` +* `command[l]`: 需要执行的命令 +* `args[l]`: 传递给命令的参数 +* `options`: 运行任务的选项 + * `cwd`: 运行任务时的当前工作目录;如果不指定,会顺序尝试当前笔记本根文件夹,然后当前缓冲区所在文件夹,然后是当前任务文件所在文件夹 + * `env`: 运行任务的环境变量 + * `shell`: `shell`类型的任务的选项 + * `executable`: shell可执行文件;Windows上默认为`Powershell.exe`,Linux/macOS上默认为`/bin/bash` + * `args`: 启动shell的参数 +* `tasks`: 定义子任务 +* `inputs`: 定义输入变量 + * `id[m]`: 输入变量的ID + * `type`: `promptString`(默认,会提示用户输入),`pickString`(提示用户选择) + * `description[l]`: 输入变量的描述 + * `default[l]`: 默认值 + * `password`: `promptString`类型下,是否启用密码模式 + * `options[l]`: `pickString`类型下提供的选项 +* `windows`: 指定Windows系统的选项 +* `linux`: 指定Linux系统的选项 +* `osx`: 指定macOS系统的选项 + +## 变量 +一个任务可以通过形式`${variableName}`来使用VNote提供的变量。变量可以在任务运行时提供有用的信息。 + +变量可以在选项`command`/`args`/`options.cwd`/`options.env`中使用。 + +### 内建变量 +笔记本相关变量: + +* `notebookFolder`: 笔记本根文件夹路径 +* `notebookFolderName` +* `notebookName` +* `notebookDescription` + +缓冲区相关变量: + +* `buffer`: 当前缓冲区路径 +* `bufferNotebookFolder`: 当前缓冲区所属笔记本的根文件夹路径 +* `bufferRelativePath` +* `bufferName` +* `bufferBaseName` +* `bufferDir`: 当前缓冲区所在目录 +* `bufferExt`: 当前缓冲区的扩展名后缀 +* `selectedText`: 当前缓冲区查看窗口的所选文本 + +任务相关变量: + +* `cwd`: 当前工作目录 +* `taskFile`: 任务入口文件路径 +* `taskDir`: 任务入口文件所在目录 +* `exeFile`: VNote可执行文件路径 +* `pathSeparator`: 平台相关的路径分隔符 +* `notebookTaskFolder`: 当前笔记本任务文件夹路径 +* `userTaskFolder`: 用户任务文件夹路径 +* `appTaskFolder`: 默认任务文件夹路径 +* `userThemeFolder`: 用户主题文件夹路径 +* `appThemeFolder`: 默认主题文件夹路径 +* `userDocsFolder`: 用户文档文件夹路径 +* `appDocsFolder`: 默认文档文件夹路径 + +其他特殊变量: + +* 通过`${magic:snippet_name}`引用VNote的**片段** +* 通过`${env:env_name}`访问环境变量 +* 通过`${config:[main|session].json_object_path}`访问VNote的配置选项 + * `main`对应读取自`vnotex.json`的主要配置,`session`对应读取自`session.json`的会话配置 + * 使用`arr[index]`来访问一个JSON数组 + * 例如`${config:main.core.shortcuts.FullScreen}`可以读取`FullScreen`对应的快捷键 + +#### 输入变量 +一个任务可以通过`${input:input_id}`使用**输入变量**来提示用户提供输入 + +目前有两种类型的输入变量: + +* `promptString` +* `pickString` + +```json +{ + "command": "echo", + "args": ["${input:what}"], + "inputs": [ + { + "id": "what", + "type": "promptString", + "description": "Type something, it will show in output panel." + } + ] +} +``` + +#### Shell变量 +一个任务可以通过`${shell:shell_command}`使用**shell变量**来执行一个shell命令并获取其输出。 + +* `${shell:git rev-parse --abbrev-ref HEAD}` → `master` +* `${shell:whoami}` → `tootal` +* `${shell:dig github.com -4 +short}` → `52.69.186.44` + +## 示例 +在默认配置任务文件夹中有一个内建的`Git`任务。 + +编译并运行: + +```json +{ + "command": "g++ \"${file}\" -o \"${fileBasenameNoExtension}\"; if ($?) { start cmd \"/c `\"${fileBasenameNoExtension}`\" & pause\" }" +} +``` + +运行一个HTTP服务: + +```json +{ + "command": "start cmd.exe \"/c python -m http.server\" ; start http://localhost:8000" +} +``` diff --git a/zh_cn/index.md b/zh_cn/index.md index 039ff9ec..74cdd223 100644 --- a/zh_cn/index.md +++ b/zh_cn/index.md @@ -3,7 +3,7 @@ ::: alert-success -VNote 3.10.1已发布! 看看都有[哪些更新](https://github.com/vnotex/vnote/releases) ! +VNote 3.11.0已发布! 看看都有[哪些更新](https://github.com/vnotex/vnote/releases) ! 观看[展示录屏](https://www.bilibili.com/video/av77455284) ! @@ -36,7 +36,7 @@ VNote 3.10.1已发布! 看看都有[哪些更新](https://github.com/vnotex/vn ![](_v_images/20181124155408890_125984506.svg =512x) ## 专注 -- 没有双边实时预览 +- 原地预览或者双边实时预览 - 通过**阅读**和**编辑**模式以专注于笔记 ![](_v_images/20181124155541581_1337512834.svg =512x) diff --git a/zh_cn/vx.json b/zh_cn/vx.json index f2c3f30c..2e6fc620 100644 --- a/zh_cn/vx.json +++ b/zh_cn/vx.json @@ -25,7 +25,7 @@ "attachment_folder": "", "created_time": "2018-11-24T09:30:11Z", "id": "47", - "modified_time": "2021-08-29T03:16:48Z", + "modified_time": "2021-12-24T13:36:34Z", "name": "index.md", "signature": "53181922294899", "tags": [