1
1
mirror of https://github.com/mawww/kakoune.git synced 2024-09-20 17:28:14 +03:00
kakoune/doc/coding-style.asciidoc

74 lines
2.0 KiB
Plaintext
Raw Normal View History

2014-10-07 12:19:46 +04:00
C++ Coding Style
================
Kakoune is written in C++11, here are the main coding style points:
* Avoid external dependencies besides posix/stdc++/ncurses
2015-11-04 04:32:59 +03:00
- That means avoid depending on boost, it is only allowed for the regex
implementation. The reference for the current regex support is available under
http://www.boost.org/doc/libs/release/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html[Perl Regular Expression Syntax].
2014-10-07 12:19:46 +04:00
* 4 spaces for indentation, no tabs
* public interface before private methods/data when defining a class
2016-04-08 19:00:24 +03:00
* use +override+ keyword for overridden virtual methods
2014-10-07 12:19:46 +04:00
* opening brackets on their own lines by default, except when declaring
an object where the opening bracket follows the equal sign.
-----
int func()
{
if (condition)
{
...
}
else
statement;
}
int array[] = {
...
};
-----
* End lines with an operator when continuing on the next line
----
if (condition1 ||
condition2)
----
* Try to keep under 80 columns, even though this is not a strict limit.
* CamelCase for types, snake_case for variables/function names
* prefix fields with m_, static ones with ms_ except for dumb structs
(struct with every field public) where these prefixes can be dropped.
* use const and constexpr liberally
Kakrc coding style
==================
* kak scripts can depend on tools that can be reasonable expected for
their use context:
- mime.kak which handles file type detection uses the +file+ command
which is deemed ubiquitous enough.
- clang.kak provides c++ completion using clang,
* It is better to keep kak scripts POSIX. Consider %sh{...} blocks
as executed by a POSIX shell. Avoid non posix extensions to common
tools.
2016-04-08 19:00:24 +03:00
* Avoid too much complexity/logic in kak scripts. They are not meant
2014-10-07 12:19:46 +04:00
to implement generic tools, only to transform a general tool output
to Kakoune commands.
- Write generic, editor independent tools as a separate project,
Add kakoune support as a kak script.