From e3066166a5f41ddeca51dd1820c8f0ed023755a9 Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Tue, 27 Dec 2016 02:20:25 +0100 Subject: [PATCH] doc --- docs/features_runnables.md | 75 +++++++++++++++++- docs/features_symbolic_strings.md | 1 + docs/img/options_runnables.png | Bin 0 -> 55698 bytes docs/img/process_input.png | Bin 0 -> 23882 bytes docs/index.md | 6 +- docs/widgets_library_manager.md | 1 + docs/widgets_options_editor.md | 6 +- docs/widgets_process_input.md | 11 +++ wiki/wiki.txt | 126 ------------------------------ 9 files changed, 96 insertions(+), 130 deletions(-) create mode 100644 docs/features_symbolic_strings.md create mode 100644 docs/img/options_runnables.png create mode 100644 docs/img/process_input.png create mode 100644 docs/widgets_library_manager.md create mode 100644 docs/widgets_process_input.md diff --git a/docs/features_runnables.md b/docs/features_runnables.md index 8d1c8b69..b3eabffd 100644 --- a/docs/features_runnables.md +++ b/docs/features_runnables.md @@ -1 +1,74 @@ - +### Runnable modules + +#### Description + +Coedit is able to compile and execute the module that's currently edited even if it's not part of a project. +Such a module is called a **runnable** module. + +Runnable modules don't have to be explicitly saved because Coedit will handle the task automatically, using an unique temporary file name. +For example it's possible to execute the _Compile and run file_ action directly after the _New runnable module_ action . +By default the binary is produced in the folder where is located the D source but this can be changed in the options applied to this feature. + +A runnable is useful to quickly test an idea or to use a module as a script without messing with all the parameters that a project would require. + +#### Shebang line + +By default runnables don't need any setting however the shebang line can be used when specific compiler options are required. +Two typical scenario: + +- the runnable will be debugged so symbolic debugging information must be generated with `-g`. +- the runnable must be linked with a C static library so linker flags `-L-lthelib` must be specified. + +Coedit doesn't handle the program specified after the She-Bang, which means that any of the following script line are valid: + +- `#!runnable-flags: --whatever` +- `#!usr/bin/dmd --whatever` +- `#!options --whatever` + +In the three cases, every non white character after the She-Bang is ignored. + +#### Runnable I/O handling + +In general the program output is redirected to the [messages](widgets_messages). +This is true unless the _Compile file and run outside_ or the _Run compiled file outside_ actions are used. + +When the program is not run outside, the [process input widget](widgets_process_input) is used to pass input to the runnable. + +#### Other + +To be runnable, a module must verify: + +- a `void main()` is present. +- the modules to import must be known, either by the [library manager](widgets_library_manager) or by the compiler configuration file. +- _import expressions_ ( `import(file);` ) are allowed if _file_ stands in the same folder as the module being edited. + +The _Compile file and run outside_ action can be used to execute in an external console. +This must be used if the runnable outputs thousands of lines, to display properly UTF8 characters or if it has a GUI. + +The version identifier **runnable_module** is automatically defined when a runnable is compiled. +It can be used to adjust the source according to the execution context, for example: + +```D +version(runnable_module) +{ + stdout.writeln("to output stream"); +} +else +{ + myFile.writeln("to a file"); +} +``` + +The executable produced is deleted after each run unless the file has been saved explicitly out of the initial temporary folder. +Note that the action _Run file unittest_ is based on the same internal function excepted that the `-main` and `-unittest` switches are automatically added to the switch list (menu **File**, action **Set runnable switches**). + +#### Options + +![](img/options_runnables.png) + +- __alwaysToFolder__: When checked the folder specified in __outputFolder__ is handled, even if the runnable module is not part of the current project. +- __compiler__: Select the [compiler](options_compilers_paths) used to produce the runnable binary. +- __detectLibraries__: When checked the static libraries used by the runnable are detected from the [library manager](widgets_library_manager) by performing import analysis. When unchecked, all the library manager entries are passed and the compiler does the selection. +- __detectMain__: When checked the `main()` function is detected automatically and the `-main` switch is set accordingly. When not checked `-main` is never passed. This options is useful with the **Run file unittests** action because it allows to test a module that's also a valid program. +- __outputFolder__: Defines a folder where the runnable binary is output. If the runnable is part of the project this folder is used otherwise __alwaysToFolder__ must also be checked. When the folder is a relative path, it is solbed using the runnable module parent directory as root. +- __staticSwitches__: Defines a list of switches that are always passed to the compiler when a runnable is produced or when a module is tested. diff --git a/docs/features_symbolic_strings.md b/docs/features_symbolic_strings.md new file mode 100644 index 00000000..8d1c8b69 --- /dev/null +++ b/docs/features_symbolic_strings.md @@ -0,0 +1 @@ + diff --git a/docs/img/options_runnables.png b/docs/img/options_runnables.png new file mode 100644 index 0000000000000000000000000000000000000000..bedc773347ac754a32a7cd27ffc3b54a71c8f725 GIT binary patch literal 55698 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 literal 0 HcmV?d00001 diff --git a/docs/img/process_input.png b/docs/img/process_input.png new file mode 100644 index 0000000000000000000000000000000000000000..b86862ee9a3647ad9cd435f87c6ea9a9e4ad3920 GIT binary patch literal 23882 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 z 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/.config/Coedit/`**. -- Windows: **`?:\Users\\AppData\Roaming\Coedit\`**. +- Linux: +**`/home//.config/Coedit/`**. +- Windows: +**`?:\Users\\AppData\Roaming\Coedit\`**. Each widget and software component save their own files with a self-explanatory name so it's easy to find and modify the file that matches a particular setting. \ No newline at end of file diff --git a/docs/widgets_process_input.md b/docs/widgets_process_input.md new file mode 100644 index 00000000..cb65461c --- /dev/null +++ b/docs/widgets_process_input.md @@ -0,0 +1,11 @@ +### Process input + +The process input widget is used to pass input to a processes that are executed within Coedit. + +![](img/process_input.png) + +- ![](https://raw.githubusercontent.com/BBasile/Coedit/master/icons/other/pencil_go.png): sends the text to the process, also works with ENTER. +- ![](https://raw.githubusercontent.com/BBasile/Coedit/master/icons/other/pencil_delete.png): closes the process input stream. +- ![](https://raw.githubusercontent.com/BBasile/Coedit/master/icons/other/cancel.png): forces the process termination. + +The input text can contain [symbolic strings](features_symbolic_strings). diff --git a/wiki/wiki.txt b/wiki/wiki.txt index 2f0292ac..e128803a 100644 --- a/wiki/wiki.txt +++ b/wiki/wiki.txt @@ -202,53 +202,6 @@ For discussions, the official D forums [propose a section dedicated to the IDEs] - **"Run project"**: tries to execute the output if the project output option _binaryKind_ is set to _executable_. - **"Run project..."**: Ditto. Before the execution of the output file, an input-query dialog lets you specify switches and arguments to the process. -# Runnable module - -Coedit is able to compile and execute the module that's currently edited even if it's not part of a project. Such a module is called a **runnable** module. -A runnable module has not to be explicitly saved because Coedit will handle the task automatically, using an unique temporary file name. -For example it's possible to call the action _Compile and run file_ directly after the action _New runnable module_. -By default the binary is produced in the folder where is located the D source. This can be changed in the [general options](lnk_widg_opts), -_runnableDestination_ allows to specify a path. If it's relative then the binary will be output in a sub folder named as this string. It it's an absolute path then the binary will be produced in this directory. When _runnableDestinationAlways_ is not checked, _runnableDestination_ is only handled if the D source part of the current project. - -A runnable is useful to test quickly an idea or to use a module as a script without messing with all the parameters that a project would require. -However, the first script line can be used to pass additional options. They'll be parsed and automatically submitted to the compiler (runnable modules are always compiled with DMD). - -For example this runnable: - -```D -#!runnable-flags: -O -L-lcairo -void main(){} -``` - -will be optimized and _libcairo_ will be linked in the binary. The first line must start with `#!runnable-flags:`, without any spaces. - -To be runnable, a module must verify the following requirements: -- a **void main()** is present. -- the modules to import must be known, either by the [library manager][lnk_widg_lib] or by the DMD configuration file. -- _import expressions_ ( ```import(file);``` ) are allowed if _file_ stands in the same folder as the file being edited. -- the module should be a simple console program. When executed, the process output is redirected to the [message widget][lnk_widg_msg] and the input can be passed using the [process input widget][lnk_widg_procinp]. - -The action _Compile file and run outside_ can be used to execute in an external console. -This must be used if the runnable outputs thousands of lines, to display properly UTF8 characters or if it has a GUI. - -The version identifier **runnable_module** is automatically defined when a runnable is compiled. -It can be used to adjust the source according to the execution context, for example: - -```D -version(runnable_module) -{ - stdout.writeln("to output stream"); -} -else -{ - myFile.writeln("to a file"); -} -``` - -The executable produced is deleted after each run unless the file has been saved explicitly out of the initial temporary folder. - -Note that the action _Run file unittest_ is based on the same internal function excepted that the **-main** and **-unittest** switches are automatically added to the switch list (menu **File**, action **Set runnable switches**). - # Native projects Coedit features a native project format completely based on the _DMD_ options. @@ -566,18 +519,6 @@ All of them can be easily build in Coedit and setup in the [_libman_](lnk_widg_l The library entries are saved in the user folder [(see options)][lnk_widg_opts] as _libraryManager.txt_. -## Symbol list widget - -This list enumerates the symbols declared in a D module (imports, classes, variables, etc). -The widget is a GUI front end for the [_cesyms_][lnk_cesyms] tool. -It can be used to quickly find and go to the declaration of a symbol but also as a basic linter since the syntactic errors are displayed (almost immediately if the option _refresh on change_ is checked). - -![](https://raw.githubusercontent.com/BBasile/CoeditWikiData/master/symlist1.png) - -The way the widget refreshes the list can be tweaked in the context menu or in the [options editor][lnk_widg_opts]. - -![](https://raw.githubusercontent.com/BBasile/CoeditWikiData/master/optsymlist.png) - ## Project inspector widget The project inspector widget is mostly designed to manipulate the project source files. It can also be used to select a compiler configuration. @@ -797,41 +738,6 @@ A property inspector allows to tweak the format. See the [official documentation The formatting is applied in memory and is undo-able either from the widget or from the code editor. The changes are not physically applied until the file is explicitly saved. Formatting options are saved between each session in the [Coedit data folder][lnk_widg_opts]. -## Message widget - -The message widget displays a stream of information about the current file or about the current project. -The messages can be filtered according to their context: - -- All: no filter. -- Editor: filter the messages related to the editor that has the focus (compilation, standard output of the module when executed as a [_runnable_][lnk_runa]). -- Project: filter the messages related to the current project (DMD or DUB messages, pre/post compilation process output, project execution). -- Application: filter the messages emitted by CE (applications warnings, application exceptions). -- Misc: miscellaneous messages (messages emitted by the widgets, by the custom tools when their output is redirected, [find all][lnk_widg_find] results, etc). - -![](https://raw.githubusercontent.com/BBasile/CoeditWikiData/master/messages1.png) -![](https://raw.githubusercontent.com/BBasile/CoeditWikiData/master/messages2.png) -![](https://raw.githubusercontent.com/BBasile/CoeditWikiData/master/messages3.png) - -When a message is double-clicked, it is parsed in order to extract a *position* and a *file name*. -If the operation is successful then the *file* will be opened at a *position*. -So far, *DMD*, [*Dscanner*](https://www.github.com/Hackerpilot/Dscanner) or DUB messages are well parsed. -The messages emitted by the custom tools can also be clickable if they follow a similar format. -(**`()`**). - -The context menu contains a few useful actions, such as *copy messages*, *save message(s) to file*. -By default only the last 500 messages are displayed, regardless of the categories. -This value and several other options can be changed in the [options editor][lnk_widg_opts]: - -![](https://raw.githubusercontent.com/BBasile/CoeditWikiData/master/optmesg.png) - -- autoSelect: defines if the widget change dynamically the message categories. -This is a recommended setting because if a run-time error happens, it will be immediately displayed. -- colors: allows to associate a message kind to a particular color. -- fast display: if set, the new messages are displayed fast but by block. When not set the same amount of message takes longer to be displayed but the operation is smoother. -- font: options for the font used in this widget: the size, the family, etc. -- maxMessageCount: allows to limit the maximum number of messages kept in the list. -- singleMessageClick: allows to open the file that the message parser has found by a single click. - ## Custom tools widget This widget allows to define a set of third party applications that can be launched from Coedit. @@ -899,19 +805,6 @@ The fields (-a -c -p -s) are optional but the _what_ is mandatory. The format is more detailed in the [tool source code](https://github.com/BBasile/Coedit/blob/master/cetodo/cetodo.d#L7). The tool itself can be build with Coedit. -## Process input widget - -![](https://raw.githubusercontent.com/BBasile/CoeditWikiData/master/processinput1.png) - -This simple utility allows to send some text to the input stream of a process that's executed from Coedit and redirected to Coedit messages. -It works for the runnable modules and the project output, when launched from Coedit. - -- ![](https://raw.githubusercontent.com/BBasile/Coedit/master/icons/other/pencil_go.png): sends the text to the process, also works with ENTER. -- ![](https://raw.githubusercontent.com/BBasile/Coedit/master/icons/other/pencil_delete.png): closes the process input stream. -- ![](https://raw.githubusercontent.com/BBasile/Coedit/master/icons/other/cancel.png): forces the process termination. - -The input text can contain [symbolic strings][lnk_sym]. - ## Mini explorer widget The mini explorer provides basic file browsing within the IDE. @@ -926,25 +819,6 @@ The mini explorer provides basic file browsing within the IDE. The favorite folders are persistent. The file list supports drag and drop. A few options are available in the [option editor][lnk_widg_opts]. -## Options editor widget - -![](https://raw.githubusercontent.com/BBasile/CoeditWikiData/master/optmain.png) - -### Description - -The _Option editor_ is a special, non-dockable, widget that allows the other widgets to expose their options. -The list at the left displays the categories. A category often matches to a single widget but not only (for example the shortcuts). -The options are applied in real time but are reversible until the green checker icon is clicked. - -- ![](https://raw.githubusercontent.com/BBasile/Coedit/master/icons/other/accept.png): validates the modifications made to the current category, after what they can't be canceled anymore. -- ![](https://raw.githubusercontent.com/BBasile/Coedit/master/icons/other/cancel.png): cancels and restores the previous state of the current category. - -The options are persistent and saved in a distinct folder: -- Linux: **`/home//.config/Coedit/`** (hidden by default). -- Windows: **`?:\Users\\AppData\Roaming\Coedit\`**. - -Each widget or each software component saves its own file with a self-explanatory name so it's easy to find and modify the file that matches a particular setting. - # Detailed and illustrated tutorials ## New project flow