Code Monkey home page Code Monkey logo

aggressive-indent-mode's Introduction

aggressive-indent-mode Melpa Melpa-Stable

electric-indent-mode is enough to keep your code nicely aligned when all you do is type. However, once you start shifting blocks around, transposing lines, or slurping and barfing sexps, indentation is bound to go wrong.

aggressive-indent-mode is a minor mode that keeps your code always indented. It reindents after every change, making it more reliable than electric-indent-mode.

Demonstration

  • An example of Lisp mode (Emacs Lisp): Lisp Code Example

  • An example of non-Lisp mode (C): C Code Example

Instructions

This package is available from Melpa, you may install it by calling

M-x package-install RET aggressive-indent

Then activate it with

(add-hook 'emacs-lisp-mode-hook #'aggressive-indent-mode)
(add-hook 'css-mode-hook #'aggressive-indent-mode)

You can use this hook on any mode you want, aggressive-indent is not exclusive to emacs-lisp code. In fact, if you want to turn it on for every programming mode, you can do something like:

(global-aggressive-indent-mode 1)
(add-to-list 'aggressive-indent-excluded-modes 'html-mode)

Manual Installation

If you don't want to install from Melpa, you can download it manually, place it in your load-path along with its dependency cl-lib (which you should already have if your emacs-version is at least 24.3).

Then require it with:

(require 'aggressive-indent)

Customization

The variable aggressive-indent-dont-indent-if lets you customize when you don't want indentation to happen. For instance, if you think it's annoying that lines jump around in c++-mode because you haven't typed the ; yet, you could add the following clause:

(add-to-list
 'aggressive-indent-dont-indent-if
 '(and (derived-mode-p 'c++-mode)
       (null (string-match "\\([;{}]\\|\\b\\(if\\|for\\|while\\)\\b\\)"
                           (thing-at-point 'line)))))

Contribute

Gratipay

aggressive-indent-mode's People

Contributors

celeritascelery avatar davidshepherd7 avatar expez avatar joaotavora avatar leungbk avatar malabarba avatar peterwvj avatar prometeo avatar purcell avatar raxod502 avatar silex avatar spwhitton avatar tsdh avatar tuhdo avatar wilfred avatar yyoncho avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.