diff --git a/CHANGELOG b/CHANGELOG index cfb6511..4d788cc 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - `System` implementation (`core/fg42/system.el`) - New `extensions` implementation (`core/fg42/extensions.el`) - New approach to launching fg42 + - New `compiler` target to Makefile ### Changed - Changed the main package path to `/core` - Changed the extensions path to `/extensions` diff --git a/CONTRIBUTE b/CONTRIBUTE new file mode 100644 index 0000000..d7dd651 --- /dev/null +++ b/CONTRIBUTE @@ -0,0 +1,144 @@ +# Contribution Guidelines +*FG42* is a free software and a community of Emacs developers who like to share +their ideas and tools. We encourage you to join us. The community is what matters +to us. Here is a brief overview of contribution guidelines, which we ask all +contributors to follow. + +## Asking for help +If you want to ask an usage question, first make sure to read the `README.md` file +and the documents of *FG42*. If you still need help feel free to join us via +[out gitter channel](https://gitter.im/FG42/FG42). + +## Reporting issues +Issues have to be reported on our [issues tracker](https://gitlab.com/FG42/FG42/issues). Please: + +- Check that the issue has not already been reported. + - This can be achieved by searching keywords on the [issues tracker](https://gitlab.com/FG42/FG42/issues). +- Try to use a clear title, and describe your problem with complete sentences. + - Include your emacs version and `~/.fg42.el` file as well. + - If possible, try to include details on how to reproduce it, like a step by + step guide. + +## Contributing code +Code contributions are welcome. Please read the following sections carefully. In +any case, feel free to join us on [out gitter channel](https://gitter.im/FG42/FG42) to ask questions about +contributing! + +### General contribution + +#### License +The license is *GPLv2* for all parts specific to *FG42*, this includes: +- The initialization and core files +- All the built-in extensions. + +For files not belonging to FG42 like local packages and libraries, refer +to the header file. Those files should not have an empty header, we may not +accept code without a proper header file. + +#### Conventions +We follow these simple rules: + +* Make elisp linter happy +* follow functional patterns and avoid huge functions +* seperate each expression by two new lines +* put (comment ...) to demonstrate the usage of the function +* write good docstrings +* choose meaningful names +* follow the indentation guides made in FG42 +* prefix the functions with a prefix to differentiate them from other functions ( we need to discuss this) +* use -- for private/internal function names +* use / to categorize functions into namespaces ( air quote) + +#### Pull-Request +Submit your contribution against the `master` branch. The `stable` branch +is going to be our last stable version only. + +Please make one PR per feature. Keep your PRs as small as possible so we can review them +easily. + +Write commit messages according to adapted [this article](https://chris.beams.io/posts/git-commit/): + +- Include the extension or library name in the title inside square brackets +- Use present tense and write in the imperative: “Fix bug”, not “fixed bug” or + “fixes bug”. +- Start with a capitalized, short (72 characters or less) summary, followed by a + blank line. +- If necessary, add one or more paragraphs with details, wrapped at 72 + characters. +- Separate paragraphs by blank lines. + +This is a model commit message: + +``` +[FPKG] Capitalized, short (72 chars or less) summary + +More detailed explanatory text, if necessary. Wrap it to about 72 +characters or so. In some contexts, the first line is treated as the +subject of an email and the rest of the text as the body. The blank +line separating the summary from the body is critical (unless you omit +the body entirely); tools like rebase can get confused if you run the +two together. + +Write your commit message in the imperative: "Fix bug" and not "Fixed bug" +or "Fixes bug." This convention matches up with commit messages generated +by commands like git merge and git revert. + +Further paragraphs come after blank lines. + +- Bullet points are okay, too + + - Typically a hyphen or asterisk is used for the bullet, followed by a + single space, with blank lines in between, but conventions vary here + + - Use a hanging indent +``` + +[[https://github.com/magit/magit/][Git Commit]] and [[https://github.com/magit/magit/][Magit]] provide Emacs mode +for Git commit messages, which helps you to comply to these guidelines. + +### Contributing an extension +Technical aspects TBD + +Each file should be GPL compliant and contain the following header: + +```lisp +;;; FILENAME --- SHORT DESCRIPTION +;; +;; Copyright (c) 2010-2020 Sameer Rahmani & Contributors +;; +;; Author: YOUR FULL NAME +;; URL: https://gitlab.com/FG42/FG42 +;; Version: VERSION +;; +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . +;; +;;; Commentary: +;; THE COMMENTARY ON THE MOST IMPORTANT ASPECT OF THE EXTENSION +;; +;;; Code: +``` + +You should replace `FILENAME` by the name of the file (e.g. `packages.el`). +Don't forget to replace `YOUR FULL NAME` and `YOUR EMAIL` also. + +#### Contribute to an existing extension +If you are contributing to an already existing extension, you should not modify any +header file. + +* Credits + +This `CONTRIBUTING` file is partially based on the [Rails Contribution +guidelines](https://github.com/rails/rails/blob/master/CONTRIBUTING.md) +and [Flycheck Contribution guidelines](https://github.com/flycheck/flycheck/blob/master/CONTRIBUTING.md) +and [Spacemacs Contribution guidelines](https://raw.githubusercontent.com/syl20bnr/spacemacs/master/CONTRIBUTING.org). diff --git a/Makefile b/Makefile index 99c3911..e1b1009 100644 --- a/Makefile +++ b/Makefile @@ -51,3 +51,7 @@ install: install-fonts: @mkdir -p ~/.fonts/ @cp -rv ./share/fonts/vazir/* ~/.fonts/ + +.PHONY: compile +compile: + @$(PWD)/fg42-new --script scripts/compiler.el diff --git a/core/fg42/extensions.el b/core/fg42/extensions.el index 845f814..9710ad4 100644 --- a/core/fg42/extensions.el +++ b/core/fg42/extensions.el @@ -27,7 +27,7 @@ (require 'fg42/extensions/core) -(defun fg42-extensions/load-index (system ext-name ext-path) +(defun fg42-extensions/load-index (_system ext-name ext-path) "Load the extension EXT-NAME which is in EXT-PATH using SYSTEM. It will load the main file of the extension and return the `fg42-extension' instance of the extension and nil otherwise." diff --git a/core/fg42/system.el b/core/fg42/system.el index df731eb..a1e8ae9 100644 --- a/core/fg42/system.el +++ b/core/fg42/system.el @@ -1,6 +1,6 @@ ;;; system --- System library of FG42 -*- lexical-binding: t; -*- ;; -;; Copyright (c) 2010-2020 Sameer Rahmani +;; Copyright (c) 2010-2020 Sameer Rahmani & Contributors ;; ;; Author: Sameer Rahmani ;; URL: https://gitlab.com/FG42/FG42 @@ -25,13 +25,13 @@ ;; ;;; Code: -(require 'fg42/utils) -(require 'fg42/system/core) -(require 'fg42/system/utils) - - +;;;###autoload (defun fg42-system/start () "Start the system from `fg42-get-current-system'." + (require 'fg42/utils)) + (require 'fg42/system/core) + (require 'fg42/system/utils) + (debug-message "Starting the default system.") (let ((sys (fg42-system/get-active-system))) (funcall (fg42-system-start sys) sys))) diff --git a/scripts/compiler.el b/scripts/compiler.el new file mode 100644 index 0000000..2ef295c --- /dev/null +++ b/scripts/compiler.el @@ -0,0 +1,30 @@ +;;; FG42ByteCompiler --- The byte compiler for FG42 libraries and extensions +;; +;; Copyright (c) 2010-2020 Sameer Rahmani +;; +;; Author: Sameer Rahmani +;; URL: https://gitlab.com/FG42/FG42 +;; Version: 3.0.0 +;; +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . +;; +;; +;;; Commentary: +;;; Code: + +(add-to-list 'load-path (concat (getenv "FG42_HOME") "/core")) + +(message "Compiling FG42 core...") +(byte-recompile-directory (concat (getenv "FG42_HOME") "/core") 0 t) +;;; compiler.el ends here