Update README.md
This commit is contained in:
61
README.md
61
README.md
@@ -2,6 +2,44 @@ would-reformat - automatic reformatting for emacs without being annoying
|
|||||||
|
|
||||||
# Motivation
|
# Motivation
|
||||||
|
|
||||||
|
I've never liked it when a text editor formats code for me without my asking.
|
||||||
|
I don't like it when the editor uses cheap heuristics (indent a new line to
|
||||||
|
match the previous one? blah!) and I don't like it when the editor shells out
|
||||||
|
to one of the new generation of automatic code formatters.
|
||||||
|
|
||||||
|
But I don't enjoy formatting code by hand either. Who does?
|
||||||
|
|
||||||
|
This is my solution: some shell scripts and some emacs lisp code.
|
||||||
|
|
||||||
|
The shell script `would-reformat.sh` takes a file's full path as
|
||||||
|
its argument. It tells you if that file would be reformatted.
|
||||||
|
|
||||||
|
The shell script `do-reformat.sh` takes a file's full path as its argument. It
|
||||||
|
reformats the file.
|
||||||
|
|
||||||
|
Finally, there is some rudimentary machinery to run `would-reformat.sh` when
|
||||||
|
saving a file and to run `do-reformat.sh` when you hit `<F1>`.
|
||||||
|
|
||||||
|
## Supported programming languages and file formats
|
||||||
|
|
||||||
|
- python
|
||||||
|
- go
|
||||||
|
- javascript
|
||||||
|
- typescript
|
||||||
|
- vue
|
||||||
|
- css
|
||||||
|
- php
|
||||||
|
- html
|
||||||
|
- jsx
|
||||||
|
- tsx
|
||||||
|
- css
|
||||||
|
- cscc
|
||||||
|
- sh
|
||||||
|
|
||||||
|
Python and go use `black` and `gofmt` respectively. The rest use `prettier`.
|
||||||
|
Adding new programming languages is easy, assuming they have a formatter with
|
||||||
|
a dry run mode.
|
||||||
|
|
||||||
# Installation
|
# Installation
|
||||||
|
|
||||||
- Change to the directory where you want to use **would-reformat**:
|
- Change to the directory where you want to use **would-reformat**:
|
||||||
@@ -10,6 +48,9 @@ would-reformat - automatic reformatting for emacs without being annoying
|
|||||||
you have **would-reformat** checked out:
|
you have **would-reformat** checked out:
|
||||||
`you@host:~/devel/my-project $ ~/src/would-reformat/install.sh`
|
`you@host:~/devel/my-project $ ~/src/would-reformat/install.sh`
|
||||||
|
|
||||||
|
Be sure to run the installation script from the root of your project's
|
||||||
|
directory, not a subdirectory.
|
||||||
|
|
||||||
This will do the following:
|
This will do the following:
|
||||||
|
|
||||||
- create the directory `~/devel/my-project/bin` if it does not exist
|
- create the directory `~/devel/my-project/bin` if it does not exist
|
||||||
@@ -35,6 +76,17 @@ the situation.
|
|||||||
|
|
||||||
# Troubleshooting
|
# Troubleshooting
|
||||||
|
|
||||||
|
## nothing works from emacs
|
||||||
|
|
||||||
|
Be sure to run the install script from your project's root as determined by
|
||||||
|
`(projectile-project-root)`.
|
||||||
|
|
||||||
|
## problems with nvm, pyenv, goenv, etc
|
||||||
|
|
||||||
|
The problem might be that their shims aren't in your `PATH`. To work around
|
||||||
|
this sort of problem I run emacs from a wrapper script that ensures the shims
|
||||||
|
are loaded in my `PATH`.
|
||||||
|
|
||||||
## Running prettier is slow
|
## Running prettier is slow
|
||||||
|
|
||||||
The scripts by default call `npx prettier` with some arguments. If you call
|
The scripts by default call `npx prettier` with some arguments. If you call
|
||||||
@@ -48,6 +100,15 @@ The solution, therefore, seems to be to say `yarn add --dev prettier` (or
|
|||||||
(This seems to work for me, but it is admittedly still uncomfortably
|
(This seems to work for me, but it is admittedly still uncomfortably
|
||||||
cargoculty. There should be a more solid basis for this answer.)
|
cargoculty. There should be a more solid basis for this answer.)
|
||||||
|
|
||||||
|
## problems running black
|
||||||
|
|
||||||
|
The solution seems to be to run `pip install black pipx` somewhere.
|
||||||
|
|
||||||
# Development
|
# Development
|
||||||
|
|
||||||
|
# Wishlist
|
||||||
|
|
||||||
|
- Generalize this beyond emacs
|
||||||
|
- Add support for more programming languages and file formats
|
||||||
|
- Clean up shell script code
|
||||||
|
- Be better at "just working"
|
||||||
|
|||||||
Reference in New Issue
Block a user