spacemacs/CONVENTIONS.md
2014-12-01 00:05:01 -05:00

2.4 KiB

Spacemacs conventions

Table of Contents

Code guidelines

Spacemacs core and layer

Function names follow these conventions:

  • spacemacs/xxx is an interactive function called xxx
  • spacemacs//xxx is a private function called xxx (implementation details)
  • spacemacs|xxx is a macro called xxx

Variables follow these conventions:

  • spacemacs-xxx is a variable
  • spacemacs--xxx is a private variable (implementation details)

All layers

A package is initialized in a function with name <layer>/init-xxx where:

  • <layer> is the layer name
  • xxx is the package name

Key bindings conventions

Prefix reserved to the user

<SPC> o must not be used by any layer. It is reserved for the user.

Navigation in insert state buffers

Navigation in buffers like Helm and ido which are in insert state should be performed with C-j and C-k for vertical movements.

History navigation in shells or REPLs buffers should be bound as well to C-j and C-k.

Interactions with REPLs

A lot of languages can interact with a REPL. To help keeping a consistent behavior between those languages the following conventions should be followed:

  • lower case key bindings keep the focus on the current buffer
  • upper case key bindings move the focus to the REPL buffer
    Key Description
    b evaluate buffer
    B evaluate buffer and switch to REPL
    f evaluate function
    F evaluate function and switch to REPL
    l evaluate line
    L evaluate line and switch to REPL
    r evaluate region
    R evaluate region and switch to REPL