diff --git a/ivette/CONTRIBUTING.md b/ivette/CONTRIBUTING.md new file mode 100644 index 0000000000000000000000000000000000000000..d76d6f8bf6ec937db85212519394942ca0b0c888 --- /dev/null +++ b/ivette/CONTRIBUTING.md @@ -0,0 +1,37 @@ +## Coding Guidelines + +- use `make app` (checked by GitLab-CI) +- per-directory `style.css` for CSS; +- caml-cased file names for typescript modules; +- indentation based on 2 spaces, no tabs; +- caml-case identifiers for exported members; +- no `export default` for libs, individual exports only; +- prefer use of `import * as AbcDef from '<path>/AbcDef'`; + +## Makefile Targets + +From the `./ivette` sub-directory of Frama-C main directory: + +``` +$ make app // Builds desktop app +$ make dev // Launch development version with live code editing +$ make doc // Generate development documentation (static) +$ make serve // Serve the documentation (makes it searchable) +``` + +Once build, the application can be launched from the command line +with `./bin/frama-c-gui`. + +The static documentation is available offline at `doc/html/index.html`. +However, searching the documentation does not work +with `file://` protocole, use `make serve` to use it. + +## Mirroring to Dome/Electron + +**Warning:** not recommanded until all codebase has been moved to TypeScript. + +The content of ./src/dome shall be kept in sync with +the public repository for Dome. An experimental support +for automated synchronisation is available with: +- `make dome-pull` for pulling Dome updates into Ivette +- `make dome-push` for pushing local updates into Dome diff --git a/ivette/INSTALL.md b/ivette/INSTALL.md new file mode 100644 index 0000000000000000000000000000000000000000..54c752a99deb6db96c7bfdc4ca57fbd8b381771c --- /dev/null +++ b/ivette/INSTALL.md @@ -0,0 +1,42 @@ +# Installation + +Required package to be installed: +- `yarn` for node and node pakage management; +- `pandoc` for generating the documentation; + +# Emacs Configuration + +Emacs mode configuration can be setup with Typescript, Web-mode and Tide packages. +You can install them with `M-x package-install`: + +``` +M-x package-refresh-contents ;; updates your index +M-x package-install web-mode +M-x package-install typescript-mode +M-x package-install tidse +``` + +For configuring your `.emacs` accordingly, +please look at the `share/typescript-config.el` file. +It setup the Tide package to work with +`typescript-mode` for `*.ts` files (see also `tsfmt.json` config file) +and `web-mode` for `*.tsx` files. + +Usefull commands: + +``` +M-. goto definition +M-, back to previous point +M-x tide-documentation-at-point +M-x tide-error-at-point +``` + +# VS Code + +VS Code has native support for Typescript (and JavaScript, of course), in terms +of code navigation, syntax highlighting and formatting, compiler errors and +warnings. The same holds for React development. + +Useful extensions: +- `ESlint` provides support for lint errors and warnings; +- `ES7 React/Redux/GraphQL/React-Native snippets` provides boilerplate snippets; diff --git a/ivette/README.md b/ivette/README.md index ca9c70e965912edb4ce8a840534414d00a0c8f9d..27e6a2adb061d69ad9a5b6aae9d801d9cf4543ed 100644 --- a/ivette/README.md +++ b/ivette/README.md @@ -1,4 +1,22 @@ -## Dome Framework Guides +## Ivette + +Main entry points: +- [frama-c/server](modules/frama_c_server.html) Frama-C Server interaction (low level) +- [frama-c/states](modules/frama_c_states.html) high-level request management + +## Command Line + +The following options are recognized by `./bin/frama-c-gui`: + +- `--cwd` working directory of Frama-C server +- `--command` path to Frama-C binary +- `--socket` ZeroMQ socket address of the server + +The default working directory is the current one. +The default command is the local `bin/frama-c` of source installation. +The default socket is `ipc:///.frama-c.<pid>.io`. + +## Dome Guides - [Dome Framework](guides/dome.md.html) - [Quick Start](guides/quickstart.md.html) @@ -9,39 +27,3 @@ - [Custom Hooks](guides/hooks.md.html) - [Icon Gallery](guides/icons.md.html) - [Glossary](guides/glossary.md.html) - -## Setup - -From the `./ivette` sub-directory of Frama-C main directory: - -``` -$ make app -``` - -## Typescript Editors - -Emacs mode configuration can be setup with Typescript, Web-mode and Tide packages -which are all available with MELPA. For configuring your `.emacs` accordingly, -please look at the `share/typescript-config.el` file. -This setup the Tide package to work with -`typescript-mode` for `*.ts` files (see also `tsfmt.json` config file) -and `web-mode` for `*.tsx` files. - -VS-Code is also known to work out of the box. - -## Coding Guidelines - -- per-directory `style.css` for CSS; -- caml-cased file names for typescript modules; -- indentation based on 2 spaces, no tabs; -- caml-case identifiers for exported members; -- no `export default` for libs, individual exports only; -- prefer use of `import * as AbcDef from '<path>/AbcDef'`; - -## Mirroring to Dome/Electron - -The content of ./src/dome shall be kept in sync with -the public repository for Dome. An experimental support -for automated synchronisation is available with: -- `make dome-pull` for pulling Dome updates into Ivette -- `make dome-push` for pushing local updates into Dome diff --git a/ivette/jsdoc.json b/ivette/jsdoc.json deleted file mode 100644 index 3737d8aa52005edc2b83fef5b60bb6808e436d60..0000000000000000000000000000000000000000 --- a/ivette/jsdoc.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "source": { - "include": [ - "src/dome/doc/README.md", - "build" - ] - }, - "opts": { - "recurse": true, - "tutorials": "src/dome/doc/tutorials", - "template": "src/dome/doc/template" - }, - "plugins": [ "plugins/markdown" ], - "templates": { - "default": { - "useLongnameInNav": true, - "outputSourceFiles": false, - "includeDate": false - } - } -} diff --git a/ivette/share/typescript-config.el b/ivette/share/typescript-config.el index bac505c7d20ee59d0a05090fc42aa6ec7f959c30..2a524efd0792b26fdd86f3d7af3bada8b00ee397 100644 --- a/ivette/share/typescript-config.el +++ b/ivette/share/typescript-config.el @@ -19,6 +19,7 @@ (defun setup-txs-mode () (interactive) (when (string-equal "tsx" (file-name-extension buffer-file-name)) + (setq web-mode-enable-auto-quoting nil) (setup-tide-mode))) ;; aligns annotation to the right hand side