REPL: Add support for elastic tabstops
- Dominant language
- TypeScript
- Stars
- 777
- Forks
- 1.4k
- Avg merge
- 16h 45m
- Merged PRs (30d)
- 3
Description
[Elastic tabstops](http://nickgravgaard.com/elastic-tabstops/) allow for better code alignment using tabs.
There is already a [JavaScript library](https://github.com/hax/etab) for this, but I would recommend using [my fork](https://github.com/ExE-Boss/etab/tree/fix/docs-and-tab-alignment), because it [has support for JSDoc and fixes some issues](https://github.com/hax/etab/compare/master...ExE-Boss:fix/docs-and-tab-alignment#diff-1fdf421c05c1140f6d71444ea2b27638) with the original implementation.
## Example:
A code written like so:
```javascript
const languageData = {
en: {
appTitle: { "message": "Some app" },
description: { "message": "This application does things" },
options: { "message": "Options" },
options_theme: { "message": "Theme:" },
options_theme_default: { "message": "Default Theme" },
options_theme_colorful: { "message": "Colorful Theme" }
},
en_GB: {
options_theme_colorful: { "message": "Colourful Theme" }
}
}
export const translateMessage = (message) => {
const navLang = navigator.language.split("-");
let translated = undefined;
let prevLang = undefined;
for (let i = 0; i < navLang.length; i++) {
let stuff = navLang[i];
if (prevLang) {
stuff = `${prevLang}_${stuff}`;
}
translated = languageData[stuff][message] || translated;
}
return translated;
}
```
Would render like so:
```javascript
const languageData = {
en: {
appTitle: { "message": "Some app" },
description: { "message": "This application does things" },
options: { "message": "Options" },
options_theme: { "message": "Theme:" },
options_theme_default: { "message": "Default Theme" },
options_theme_colorful: { "message": "Colorful Theme" }
},
en_GB: {
options_theme_colorful: { "message": "Colourful Theme" }
}
}
export const translateMessage = (message) => {
const navLang = navigator.language.split("-");
let translated = undefined;
let prevLang = undefined;
for (let i = 0; i < navLang.length; i++) {
let stuff = navLang[i];
if (prevLang) {
stuff = `${prevLang}_${stuff}`;
}
translated = languageData[stuff][message] || translated;
}
return translated;
}
```
(If this gets implemented then space indented code might finally die once and for all, because space indented code is much bigger than tab indented code (4 bytes (4 spaces) vs 1 byte (1 tab)).)
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.