1. eslint-plugin-smarter-tabs
A tiny ESLint plugin to enforce the usage of smart tabs.
eslint-plugin-smarter-tabs
Package: eslint-plugin-smarter-tabs
Created by: cheap-glitch
Last modified: Sun, 01 May 2022 16:57:21 GMT
Version: 1.2.0
License: ISC
Downloads: 1,392
Repository: https://github.com/cheap-glitch/eslint-plugin-smarter-tabs

Install

npm install eslint-plugin-smarter-tabs
yarn add eslint-plugin-smarter-tabs

🎓 eslint-plugin-smarter-tabs

License
Latest release
Coverage status

This plugin aims to enforce the usage of smart tabs, as defined
in the emacs wiki:

  1. Tabs are only used at the beginning of lines. Everything else, like ASCII
    art and tables, should be formatted with spaces.
  2. Tabs are only used for expressing the indentation level. One tab per
    “block” — any remaining whitespace is spaces only.

To accomplish this, the plugin exports a single rule which issues a report in three cases:

  1. The line contains an inline tabulation:
Valid Invalid
 const foo    = true;
const foobar = false;
 const foo———𝈷= true;
const foobar = false;
  1. The line use spaces for indentation. This happens when a line is indented with
    spaces or starts with tabs followed by spaces, and its indentation level is
    different than the one of its block:
Valid Invalid
 function foo(bar) {
————𝈷return (bar === undefined)
————𝈷       ? 'foo';
————𝈷       : 'bar';
}
 function foo(bar) {
————𝈷return (bar === undefined)
————𝈷————𝈷  ? 'foo';
————𝈷————𝈷  : 'bar';
}
  1. The line has a mismatched indentation level. This happens when the
    indentation level of the line is greater than the one of the line before it by
    two or more:
Valid Invalid
 if (baz) {
————𝈷let p = { x: 1,
————𝈷          y: 2,
————𝈷          z: 3,
————𝈷};
}
 if (baz) {
————𝈷let p = { x: 1,
————𝈷————𝈷————𝈷y: 2,
————𝈷————𝈷————𝈷z: 3,
————𝈷};
}

Installation

 npm i -D eslint-plugin-smarter-tabs

Usage

This plugin exports a single rule called smarter-tabs that you can use in your
.eslintrc.json or eslintrc.js:

 {
	"plugins": [
		"smarter-tabs"
	],

	"rules": {
		"smarter-tabs/smarter-tabs": "warn"
	}
}

If you use the eslint:recommended preset, you may also want to disable the
no-mixed-spaces-and-tabs rule as it might clash with this plugin:

 {
	"rules": {
		"no-mixed-spaces-and-tabs": "off",
		"smarter-tabs/smarter-tabs": "warn"
	}
}

Or you could pass it the smart-tabs options:

 {
	"rules": {
		"no-mixed-spaces-and-tabs": ["warn", "smart-tabs"],
		"smarter-tabs/smarter-tabs": "warn"
	}
}

Changelog

See the full changelog here.

License

This software is distributed under the ISC license.

RELATED POST

10 Must-Know Windows Shortcuts That Will Save You Time

10 Must-Know Windows Shortcuts That Will Save You Time

Arrays vs Linked Lists: Which is Better for Memory Management in Data Structures?

Arrays vs Linked Lists: Which is Better for Memory Management in Data Structures?

Navigating AWS Networking: Essential Hacks for Smooth Operation

Navigating AWS Networking: Essential Hacks for Smooth Operation

Achieving Stunning Visuals with Unity's Global Illumination

Achieving Stunning Visuals with Unity's Global Illumination

Nim's Hidden Gems: Lesser-known Features for Writing Efficient Code

Nim's Hidden Gems: Lesser-known Features for Writing Efficient Code