Restructure the README into a manual
This commit is contained in:
parent
63c697c2f4
commit
4490d51798
17 changed files with 789 additions and 684 deletions
BIN
doc/cheatsheet.png
Normal file
BIN
doc/cheatsheet.png
Normal file
Binary file not shown.
After ![]() (image error) Size: 476 KiB |
125
doc/configuration.md
Normal file
125
doc/configuration.md
Normal file
|
@ -0,0 +1,125 @@
|
|||
# Configuration
|
||||
|
||||
## Color Themes
|
||||
|
||||
Emacs provides a dozen of
|
||||
built-in themes you can use out-of-the-box by invoking the `M-x
|
||||
load-theme` command.
|
||||
|
||||
[Zenburn](https://github.com/bbatsov/zenburn-emacs) is the default
|
||||
color theme in Prelude, but you can change it at your discretion. Why
|
||||
Zenburn? I (and lots of hackers around the world) find it pretty neat
|
||||
for some reason. Personally I find the default theme pretty tiresome
|
||||
for the eyes, that's why I took that "controversial" decision to
|
||||
replace it. You can, of course, easily go back to the default (or
|
||||
select another theme entirely).
|
||||
|
||||
To disable Zenburn just put in your personal config the following
|
||||
line:
|
||||
|
||||
```lisp
|
||||
(disable-theme 'zenburn)
|
||||
```
|
||||
|
||||
Or you can use another theme altogether by adding something in `personal/preload` like:
|
||||
|
||||
```lisp
|
||||
(setq prelude-theme 'tango)
|
||||
```
|
||||
|
||||
**Note** To use a non-built-in theme, like [Solarized](https://github.com/bbatsov/zenburn-emacs),
|
||||
you'll have to install it from MELPA first by `M-x package-install RET solarized-theme`. Then add
|
||||
|
||||
``` lisp
|
||||
(setq prelude-theme 'solarized-dark)
|
||||
```
|
||||
in `personal/preload`.
|
||||
|
||||
Finally, if you don't want any theme at all, you can add this to your
|
||||
`personal/preload`:
|
||||
|
||||
```lisp
|
||||
(setq prelude-theme nil)
|
||||
```
|
||||
|
||||
## Personalizing
|
||||
|
||||
All files you create under the `personal/` directory are yours for
|
||||
personalization. There is no single special personal config file --
|
||||
any files you create in the `personal/` directory will be loaded in
|
||||
lexicographical order. The overall loading precedence is:
|
||||
|
||||
1. `personal/preload/*`
|
||||
2. `core/`
|
||||
3. `prelude-modules.el`
|
||||
4. `personal/*`
|
||||
|
||||
#### Personalization Example
|
||||
|
||||
Suppose you want to configure `go-mode` to autoformat on each save. You
|
||||
can create a file in `personal/`, let's call this one
|
||||
`config-go-mode.el` and add the following to it.
|
||||
|
||||
``` emacs-lisp
|
||||
(add-hook 'go-mode-hook
|
||||
(lambda ()
|
||||
(add-hook 'before-save-hook 'gofmt-before-save)
|
||||
(setq tab-width 2)))
|
||||
```
|
||||
|
||||
#### Tips
|
||||
|
||||
**Fork** (instead of cloning) the official Prelude repo and add your
|
||||
own touch to it. You're advised to **avoid changing stuff outside of
|
||||
the personal folder** to avoid having to deal with git merge conflicts
|
||||
in the future.
|
||||
|
||||
If you'd like to add some auto installation of packages in your
|
||||
personal config use the following code:
|
||||
|
||||
```lisp
|
||||
(prelude-require-packages '(some-package some-other-package))
|
||||
```
|
||||
|
||||
If you require just a single package you can also use:
|
||||
|
||||
```lisp
|
||||
(prelude-require-package 'some-package)
|
||||
```
|
||||
|
||||
### Preloading personal config
|
||||
|
||||
Sometimes you might want to load code before Prelude has started loading. Prelude will automatically preload all
|
||||
Emacs Lisp files in your `personal/preload` directory. Note that at this point you can't using anything from
|
||||
Prelude, except a few variables like `prelude-dir`, etc (since nothing is yet loaded).
|
||||
|
||||
### Disabling whitespace-mode
|
||||
|
||||
Although `whitespace-mode` is awesome, some people might find it too
|
||||
intrusive. You can disable it in your
|
||||
personal config with the following bit of code:
|
||||
|
||||
```lisp
|
||||
(setq prelude-whitespace nil)
|
||||
```
|
||||
|
||||
If you like `whitespace-mode`, but prefer it to not automatically
|
||||
cleanup your file on save, you can disable that behavior by setting
|
||||
`prelude-clean-whitespace-on-save` to `nil` in your config file with:
|
||||
|
||||
```lisp
|
||||
(setq prelude-clean-whitespace-on-save nil)
|
||||
```
|
||||
|
||||
The `prelude-clean-whitespace-on-save` setting can also be set on a
|
||||
per-file or directory basis by using a file variable or a
|
||||
`.dir-locals.el` file.
|
||||
|
||||
|
||||
### Disable flyspell-mode
|
||||
|
||||
If you're not fond of spellchecking on the fly:
|
||||
|
||||
```lisp
|
||||
(setq prelude-flyspell nil)
|
||||
```
|
58
doc/contributing.md
Normal file
58
doc/contributing.md
Normal file
|
@ -0,0 +1,58 @@
|
|||
## Issues
|
||||
|
||||
Report issues and suggest features and improvements on the
|
||||
[GitHub issue tracker](https://github.com/bbatsov/prelude/issues). Don't ask
|
||||
questions on the issue tracker - use the [support channels](support.md) instead.
|
||||
|
||||
If you want to file a bug, please provide all the necessary info listed in
|
||||
our issue reporting template (it's loaded automatically when you create a
|
||||
new GitHub issue).
|
||||
|
||||
## Patches
|
||||
|
||||
Patches in any form are always welcome! GitHub pull requests are even better! :-)
|
||||
|
||||
Before submitting a patch or a pull request make sure that your patch
|
||||
is in line with the [contribution
|
||||
guidelines](https://github.com/bbatsov/prelude/blob/master/CONTRIBUTING.md).
|
||||
|
||||
## Documentation
|
||||
|
||||
Good documentation is just as important as good code.
|
||||
|
||||
Consider improving and extending the
|
||||
this manual and the
|
||||
[community wiki](https://github.com/bbatsov/prelude/wiki).
|
||||
|
||||
### Working on the Manual
|
||||
|
||||
The manual is generated from the markdown files in the
|
||||
[doc](https://github.com/bbatsov/prelude/tree/master/doc) folder of Prelude's
|
||||
GitHub repo and is published to [Read the Docs](readthedocs.org). The
|
||||
[MkDocs](http://www.mkdocs.org/) tool is used to convert the markdown sources to
|
||||
HTML.
|
||||
|
||||
To make changes to the manual you simply have to change the files under
|
||||
`doc`. The manual will be regenerated automatically when changes to those files
|
||||
are merged in `master` (or the latest stable branch).
|
||||
|
||||
You can install `MkDocs` locally and use the command `mkdocs serve` to see the
|
||||
result of changes you make to the manual locally:
|
||||
|
||||
```sh
|
||||
$ cd path/to/prelude/repo
|
||||
$ mkdocs serve
|
||||
```
|
||||
|
||||
If you want to make changes to the manual's page structure you'll have to edit
|
||||
[mkdocs.yml](https://github.com/bbatsov/prelude/blob/master/mkdocs.yml).
|
||||
|
||||
## Donations
|
||||
|
||||
You can support the development of Prelude via
|
||||
[Salt](https://salt.bountysource.com/teams/prelude),
|
||||
[Patreon](https://www.patreon.com/bbatsov) and
|
||||
[Liberapay](https://liberapay.com/bbatsov/donate).
|
||||
|
||||
[](https://liberapay.com/bbatsov/donate)
|
||||
[](https://www.patreon.com/bbatsov)
|
15
doc/css/extra.css
Normal file
15
doc/css/extra.css
Normal file
|
@ -0,0 +1,15 @@
|
|||
/* By default kbd doesn't stand out very much. Let's fix this! */
|
||||
kbd {
|
||||
padding: 3px 5px;
|
||||
border: solid 1px #ccc;
|
||||
background-color: #fcfcfc;
|
||||
border-radius: 3px;
|
||||
box-shadow: inset 0 -1px 0 #bbb;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
/* The default font-size for code blocks is 75% which makes code
|
||||
hard to read. */
|
||||
code {
|
||||
font-size: 90%;
|
||||
}
|
3
doc/faq.md
Normal file
3
doc/faq.md
Normal file
|
@ -0,0 +1,3 @@
|
|||
# Frequently Asked Questions
|
||||
|
||||
Coming soon...
|
18
doc/index.md
Normal file
18
doc/index.md
Normal file
|
@ -0,0 +1,18 @@
|
|||
# Emacs Prelude
|
||||
|
||||
Prelude is an Emacs distribution that aims to enhance the default
|
||||
Emacs experience. Prelude alters a lot of the default settings,
|
||||
bundles a plethora of additional packages and adds its own core
|
||||
library to the mix. The final product offers an easy to use Emacs
|
||||
configuration for Emacs newcomers and lots of additional power for
|
||||
Emacs power users.
|
||||
|
||||
Prelude is compatible **ONLY with GNU Emacs 25.1+**. In general you're
|
||||
advised to always run Prelude with the latest Emacs - currently
|
||||
**26.1**.
|
||||
|
||||
You can support the development of Prelude via
|
||||
[PayPal](https://www.paypal.me/bbatsov),
|
||||
[Salt](https://bountysource.com/teams/prelude),
|
||||
[Patreon](https://www.patreon.com/bbatsov) and
|
||||
[Liberapay](https://liberapay.com/bbatsov/donate).
|
122
doc/installation.md
Normal file
122
doc/installation.md
Normal file
|
@ -0,0 +1,122 @@
|
|||
# Installation
|
||||
|
||||
## Installing Emacs
|
||||
|
||||
Obviously to use the Emacs Prelude you have to install Emacs
|
||||
first. Have a look at
|
||||
the
|
||||
[WikEmacs articles on installing Emacs](http://wikemacs.org/index.php/Installing_Emacs).
|
||||
|
||||
## Installation
|
||||
|
||||
### Automated
|
||||
|
||||
You can install **Emacs Prelude** via the command line with either `curl` or
|
||||
`wget`. Naturally `git` is also required.
|
||||
|
||||
#### Via Curl
|
||||
|
||||
If you're using `curl` type the following command:
|
||||
|
||||
```bash
|
||||
curl -L https://github.com/bbatsov/prelude/raw/master/utils/installer.sh | sh
|
||||
```
|
||||
|
||||
#### Via Wget
|
||||
|
||||
If you're using `wget` type:
|
||||
|
||||
```bash
|
||||
wget --no-check-certificate https://github.com/bbatsov/prelude/raw/master/utils/installer.sh -O - | sh
|
||||
```
|
||||
|
||||
### Manual
|
||||
|
||||
Make sure you do not have any `~/.emacs` file present.
|
||||
|
||||
```bash
|
||||
git clone git://github.com/bbatsov/prelude.git path/to/local/repo
|
||||
ln -s path/to/local/repo ~/.emacs.d
|
||||
cd ~/.emacs.d
|
||||
```
|
||||
|
||||
If you are using Windows, you should check what Emacs thinks the `~` directory is by running Emacs and typing `C-x d ~/<RET>`, and then adjust the command appropriately.
|
||||
|
||||
## Updating Prelude
|
||||
|
||||
### Manual update
|
||||
|
||||
The update procedure is fairly straightforward and consists of 3 steps:
|
||||
|
||||
#### Update all bundled packages
|
||||
|
||||
Just run <kbd>M-x package-list-packages RET U x</kbd>.
|
||||
|
||||
#### Update Prelude's code
|
||||
|
||||
```bash
|
||||
cd path/to/prelude/installation
|
||||
git pull
|
||||
```
|
||||
|
||||
The `path/to/prelude/installation` is usually `~/.emacs.d` (at least
|
||||
on Unix systems).
|
||||
|
||||
#### Restart Prelude
|
||||
|
||||
It's generally a good idea to stop Emacs after you do the update. The
|
||||
next time Prelude starts it will install any new dependencies (if
|
||||
there are such).
|
||||
|
||||
### Automatic update
|
||||
|
||||
Simply run <kbd>M-x prelude-update</kbd> from Emacs itself and restart Emacs afterwards.
|
||||
|
||||
## Pinning packages
|
||||
|
||||
By default, Prelude will install packages from the melpa and gnu package
|
||||
repositories. Occasionally package integration can break when upgrading packages.
|
||||
This can be avoided by pinning packages to stable versions in other repositories.
|
||||
To do so, copy `prelude-pinned-packages.el` from the sample directory to
|
||||
Prelude's root directory and adjust the [variables](https://www.gnu.org/software/emacs/manual/html_node/emacs/Package-Installation.html)
|
||||
inside accordingly.
|
||||
|
||||
## Enabling additional modules
|
||||
|
||||
By default most of the modules that ship with Prelude are not loaded. For more information on the functionality provided by these modules visit the [docs](modules/index.md).
|
||||
|
||||
```lisp
|
||||
;;; Uncomment the modules you'd like to use and restart Prelude afterwards
|
||||
|
||||
(require 'prelude-c)
|
||||
;; (require 'prelude-clojure)
|
||||
;; (require 'prelude-coffee)
|
||||
;; (require 'prelude-common-lisp)
|
||||
;; (require 'prelude-css)
|
||||
(require 'prelude-emacs-lisp)
|
||||
(require 'prelude-erc)
|
||||
;; (require 'prelude-erlang)
|
||||
;; (require 'prelude-elixir)
|
||||
;; (require 'prelude-haskell)
|
||||
(require 'prelude-js)
|
||||
;; (require 'prelude-latex)
|
||||
(require 'prelude-lisp)
|
||||
(require 'prelude-org)
|
||||
(require 'prelude-perl)
|
||||
;; (require 'prelude-python)
|
||||
;; (require 'prelude-ruby)
|
||||
;; (require 'prelude-scala)
|
||||
(require 'prelude-scheme)
|
||||
;; (require 'prelude-scss)
|
||||
;; (require 'prelude-web)
|
||||
(require 'prelude-xml)
|
||||
```
|
||||
|
||||
You'll need to adjust your `prelude-modules.el` file once the
|
||||
installation is done. If you are doing a manual install then you first
|
||||
need to copy the `prelude-modules.el` available in the sample
|
||||
directory to the root of `path/to/prelude/installation` and then
|
||||
adjust that one.
|
||||
|
||||
After you've uncommented a module you should either restart Emacs or evaluate the module
|
||||
`require` expression with <kbd>C-x C-e</kbd>.
|
50
doc/modules/erc.md
Normal file
50
doc/modules/erc.md
Normal file
|
@ -0,0 +1,50 @@
|
|||
# Prelude ERC
|
||||
|
||||
## Customizing Server list
|
||||
|
||||
If you want to join a list of servers on `M-x start-irc`, other than
|
||||
the default list, please redefine the variable `my-fav-irc` as follows
|
||||
in your personal config
|
||||
|
||||
``` emacs-lisp
|
||||
(setq my-fav-irc '("irc.freenode.net"
|
||||
"irc.oftc.net"
|
||||
"irc.mozilla.org"
|
||||
"irc.gnome.org"))
|
||||
```
|
||||
|
||||
## Customizing Last Quit Message
|
||||
|
||||
If you want to customize your IRC Last Quit Message from *Asta la
|
||||
vista* to something more funkier, please redefine `bye-irc-message` as
|
||||
follows
|
||||
|
||||
``` emacs-lisp
|
||||
(setq bye-erc-message "adios")
|
||||
```
|
||||
|
||||
## Reading NickServ passwords from auth-source plugin
|
||||
|
||||
If you want to automatically authenticate while logging into IRC
|
||||
servers set the `erc-prompt-for-password` to nil as follows
|
||||
|
||||
``` emacs-lisp
|
||||
(setq erc-prompt-for-password nil)
|
||||
```
|
||||
|
||||
Now you can set password in plaintext in .authinfo file in the netRC
|
||||
format or you it encrypted in .authinfo.gpg file after setting up gpg
|
||||
in emacs
|
||||
|
||||
## Opening all ERC buffers in a new perspective
|
||||
Many a time when we start IRC with the `start-irc` command, all the
|
||||
channels open in our existing workspace, which can be annoying to
|
||||
some; especially to those who like to organize their buffers into
|
||||
separate groups (perspectives). To avoid this scenario, it is better
|
||||
to group all the ERC buffers into one perspective called `IRC` when
|
||||
`start-irc` is called. To enable this set the `prelude-new-irc-persp`
|
||||
variable to true as follows
|
||||
|
||||
``` emacs-lisp
|
||||
(setq prelude-new-irc-persp t)
|
||||
```
|
29
doc/modules/index.md
Normal file
29
doc/modules/index.md
Normal file
|
@ -0,0 +1,29 @@
|
|||
# Modules
|
||||
|
||||
Prelude provides extra functionality through modules. Some modules may
|
||||
require extra steps to enable all functionality. These steps and the
|
||||
functionality provided by these modules are documented on the
|
||||
following links.
|
||||
|
||||
- C
|
||||
- Clojure
|
||||
- Coffee
|
||||
- Common-Lisp
|
||||
- CSS
|
||||
- Emacs-Lisp
|
||||
- [ERC](erc.md)
|
||||
- Erlang
|
||||
- Elixir
|
||||
- Haskell
|
||||
- JS
|
||||
- Latex
|
||||
- Lisp
|
||||
- Markdown
|
||||
- Org
|
||||
- Perl
|
||||
- [Python](python.md)
|
||||
- Ruby
|
||||
- Scala
|
||||
- Scheme
|
||||
- Scss
|
||||
- Web
|
18
doc/modules/python.md
Normal file
18
doc/modules/python.md
Normal file
|
@ -0,0 +1,18 @@
|
|||
# Prelude Python
|
||||
|
||||
## Python Mode
|
||||
|
||||
Emacs comes with Python programming support through the built-in
|
||||
Python-mode. Whenever you are editing Python code run `C-h m` to
|
||||
look at the Python mode key bindings. Alternatively look at the
|
||||
menu bar entries under Python. To toggle the menu bar press `F12`.
|
||||
|
||||
## Syntax checking
|
||||
|
||||
Prelude ships with [Flycheck](https://github.com/flycheck/flycheck),
|
||||
an on the fly syntax checker. Flycheck has support for two Python
|
||||
syntax checkers, [Pylint](http://www.pylint.org/) and
|
||||
[Flake8](http://flake8.readthedocs.org/en/latest/). In
|
||||
order to have Flycheck support on the fly syntax checking for
|
||||
Python you need to have either of these installed and accessible to
|
||||
Emacs. In order to manually choose a checker run `C-c ! s`.
|
BIN
doc/prelude-cheatsheet.pdf
Normal file
BIN
doc/prelude-cheatsheet.pdf
Normal file
Binary file not shown.
348
doc/prelude-cheatsheet.tex
Normal file
348
doc/prelude-cheatsheet.tex
Normal file
|
@ -0,0 +1,348 @@
|
|||
\documentclass[10pt]{article}
|
||||
\usepackage[margin=0.5cm,landscape,a3paper]{geometry}
|
||||
\pagestyle{empty}
|
||||
|
||||
\usepackage{textcomp}
|
||||
\usepackage{multicol}
|
||||
\usepackage{menukeys}
|
||||
\usepackage{enumitem}
|
||||
\usepackage{xcolor}
|
||||
\usepackage{xpatch}
|
||||
\usepackage{xparse}
|
||||
\usepackage{calc}
|
||||
\usepackage{tcolorbox}
|
||||
|
||||
\definecolor{default}{HTML}{333333}
|
||||
\definecolor{heading}{HTML}{000000}
|
||||
\definecolor{command}{HTML}{666666}
|
||||
\definecolor{key}{HTML}{268BD2}
|
||||
|
||||
\renewcommand\section[1]{\bigskip\par\textbf{\color{heading}\large#1}\smallskip}
|
||||
\renewcommand\subsection[1]{\smallskip\par\textbf{\color{heading}#1}}
|
||||
\newcommand\humanreadable[1]{{\par\color{default}\small\sffamily#1}}
|
||||
\newcommand\meta[1]{\textlangle\textit{#1}\textrangle}
|
||||
\newcommand\keyify[1]{\color{key}\ttfamily#1}
|
||||
\newlist{keylist}{description}{1}
|
||||
\setlist[keylist]{
|
||||
topsep = 1pt,
|
||||
labelindent = 1pt,
|
||||
itemsep = -1ex,
|
||||
labelwidth = \widthof{xxxxxxxxxxxxxx},
|
||||
font = \keyify,
|
||||
leftmargin = !,
|
||||
before = \color{command}\sffamily
|
||||
}
|
||||
|
||||
\setlength\parindent{0em}
|
||||
\setlength\parsep{0ex}
|
||||
\renewcommand\baselinestretch{1.2}
|
||||
|
||||
\begin{document}
|
||||
\begin{multicols}{4}
|
||||
|
||||
\setlength{\columnsep}{1cm}
|
||||
\begin{center}
|
||||
\LARGE\color{heading}\textbf{Emacs Prelude Cheat Sheet}
|
||||
\end{center}
|
||||
|
||||
\section{Getting Help in Emacs}
|
||||
\begin{keylist}
|
||||
\item[C-h k \meta{key}] \humanreadable{describe function bound to \meta{key}}
|
||||
\item[C-h b] \humanreadable{list key-bindings for focused buffer}
|
||||
\item[C-h m] \humanreadable{describe mode}
|
||||
\item[C-h l] \humanreadable{show the keys you have pressed}
|
||||
\item[C-h f] \humanreadable{describe function}
|
||||
\end{keylist}
|
||||
|
||||
\section{Global}
|
||||
\begin{keylist}
|
||||
\item[C-x \textbackslash] align-regexp
|
||||
\item[C-+] text-scale-increase
|
||||
\item[C--] text-scale-decrease
|
||||
\item[C-x O] \humanreadable{go to previous window}
|
||||
\item[C-x m] eshell
|
||||
\item[C-x M] \humanreadable{start a new eshell if one is active}
|
||||
\item[C-x M-m] shell
|
||||
\item[C-x C-m] smex
|
||||
\item[C-h A] apropos
|
||||
\item[C-h C-f] find-function
|
||||
\item[C-h C-k] find-function-on-key
|
||||
\item[C-h C-v] find-variable
|
||||
\item[C-h C-l] find-library
|
||||
\item[C-h C-i] info-display-manual
|
||||
\item[C-<backspace>] \humanreadable{kill line backward and indent}
|
||||
\item[C-o] (isearch-mode) isearch-occur
|
||||
\item[M-/] hippie-expand
|
||||
\item[C-x C-b] ibuffer
|
||||
\item[<f11>] prelude-fullscreen
|
||||
\item[<f12>] menu-bar-mode
|
||||
\item[C-x g] magit-status
|
||||
\item[C-x M-g] magit-dispatch-popup
|
||||
\end{keylist}
|
||||
|
||||
\subsection{prelude}
|
||||
|
||||
\humanreadable{Keybindings defined in prelude mode}
|
||||
\begin{keylist}
|
||||
\item[C-c o] crux-open-with
|
||||
\item[C-c g] prelude-google
|
||||
\item[C-c G] prelude-github
|
||||
\item[C-c y] prelude-youtube
|
||||
\item[C-c U] prelude-duckduckgo
|
||||
\item[C-a] crux-move-beginning-of-line
|
||||
\item[S-<return>] crux-smart-open-line
|
||||
\item[M-o] crux-smart-open-line
|
||||
\item[C-S-<return>] crux-smart-open-line-above
|
||||
\item[C-S-<up>] move-text-up
|
||||
\item[C-S-<down>] move-text-down
|
||||
\item[M-S-<up>] move-text-up
|
||||
\item[M-S-<down>] move-text-down
|
||||
\item[C-c n] crux-cleanup-buffer-or-region
|
||||
\item[C-c f] crux-recentf-ido-find-file
|
||||
\item[C-M-z] crux-indent-defun
|
||||
\item[C-c u] crux-view-url
|
||||
\item[C-c e] crux-eval-and-replace
|
||||
\item[C-c s] crux-swap-windows
|
||||
\item[C-c w] prelude-swap-meta-and-super
|
||||
\item[C-c D] crux-delete-file-and-buffer
|
||||
\item[C-c d] crux-duplicate-current-line-or-region
|
||||
\item[C-c M-d] crux-duplicate-and-comment-current-
|
||||
line-or-region
|
||||
\item[C-c r] crux-rename-buffer-and-file
|
||||
\item[C-c t] crux-visit-term-buffer
|
||||
\item[C-c k] crux-kill-other-buffers
|
||||
\item[C-c TAB] crux-indent-rigidly-and-copy-
|
||||
to-clipboard
|
||||
\item[C-c I] crux-find-user-init-file
|
||||
\item[C-c S] crux-find-shell-init-file
|
||||
\item[C-c i] imenu-anywhere
|
||||
\item[s-p] projectile-command-map
|
||||
\item[s-r] crux-recentf-ido-find-file
|
||||
\item[s-j] crux-top-join-line
|
||||
\item[s-k] crux-kill-whole-line
|
||||
\item[s-m m] magit-status
|
||||
\item[s-m l] magit-log
|
||||
\item[s-m f] magit-log-buffer-file
|
||||
\item[s-m b] magit-blame
|
||||
\item[s-o] crux-smart-open-line-above
|
||||
\end{keylist}
|
||||
|
||||
\subsection{ace-window}
|
||||
\humanreadable{Quickly switch windows in Emacs}
|
||||
\begin{keylist}
|
||||
\item[s-w] ace-window
|
||||
\end{keylist}
|
||||
|
||||
\subsection{avy}
|
||||
|
||||
\humanreadable{Effectively navigate to visible things}
|
||||
\begin{keylist}
|
||||
\item[C-c j] avy-goto-word-or-subword-1
|
||||
\item[s-.] avy-goto-word-or-subword-1
|
||||
\end{keylist}
|
||||
\subsection{anzu}
|
||||
|
||||
\humanreadable{Enhances isearch \& query-replace by showing total matches and current match position}
|
||||
\begin{keylist}
|
||||
\item[M-\%] anzu-query-replace
|
||||
\item[s-.] anzu-query-replace-regexp
|
||||
\end{keylist}
|
||||
|
||||
\subsection{browse-kill-ring}
|
||||
|
||||
\humanreadable{Smarter kill-ring navigation}
|
||||
\begin{keylist}
|
||||
\item[s-y] browse-kill-ring
|
||||
\end{keylist}
|
||||
|
||||
\subsection{crux}
|
||||
|
||||
\humanreadable{A Collection of Ridiculously Useful eXtensions for Emacs.}
|
||||
\begin{keylist}
|
||||
\item[C-\^] crux-top-join-line
|
||||
\item[s-k] crux-kill-whole-line
|
||||
\end{keylist}
|
||||
|
||||
\subsection{discover-my-major}
|
||||
\humanreadable{A quick major mode help with discover-my-major.}
|
||||
\begin{keylist}
|
||||
\item[C-h C-m] discover-my-major
|
||||
\end{keylist}
|
||||
|
||||
\subsection{easy-kill}
|
||||
\humanreadable{Kill \& Mark Things Easily in Emacs.}
|
||||
\begin{keylist}
|
||||
\item[M-w] easy-kill
|
||||
\item[C-M-SPC] easy-mark
|
||||
\item[C-M-@] easy-mark
|
||||
\end{keylist}
|
||||
|
||||
\subsection{expand-region}
|
||||
\humanreadable{Increase selected region by semantic units.}
|
||||
\begin{keylist}
|
||||
\item[C-=] er/expand-region
|
||||
\end{keylist}
|
||||
|
||||
\subsection{flycheck}
|
||||
\humanreadable{On the fly syntax checking.}
|
||||
\begin{keylist}
|
||||
\item[C-t C-n] flycheck-next-error
|
||||
\item[C-t C-p] flycheck-previous-error
|
||||
\end{keylist}
|
||||
|
||||
\subsection{projectile}
|
||||
\humanreadable{Project Interaction Library for Emacs.}
|
||||
\begin{keylist}
|
||||
\item[C-c p f] projectile-find-file
|
||||
\item[C-c p p] projectile-switch-project
|
||||
\item[C-c p d] projectile-find-dir
|
||||
\item[C-c p r] projectile-replace
|
||||
\item[C-c p T] projectile-find-test-file
|
||||
\item[C-c p s g] projectile-grep
|
||||
\item[C-c p s s] projectile-ag
|
||||
\end{keylist}
|
||||
|
||||
\subsection{operate-on-number}
|
||||
\humanreadable{Operate on number at point with arithmetic functions.}
|
||||
\begin{keylist}
|
||||
\item[C-c . +] apply-operation-to-number-at-point
|
||||
\item[C-c . -] apply-operation-to-number-at-point
|
||||
\item[C-c . *] apply-operation-to-number-at-point
|
||||
\item[C-c . /] apply-operation-to-number-at-point
|
||||
\item[C-c . \textbackslash] apply-operation-to-number-at-point
|
||||
\item[C-c . \textasciicircum] apply-operation-to-number-at-point
|
||||
\item[C-c . <] apply-operation-to-number-at-point
|
||||
\item[C-c . >] apply-operation-to-number-at-point
|
||||
\item[C-c . \#] apply-operation-to-number-at-point
|
||||
\item[C-c . \%] apply-operation-to-number-at-point
|
||||
\item[C-c . '] operate-on-number-at-point
|
||||
\end{keylist}
|
||||
|
||||
\subsection{zop-to-char}
|
||||
\humanreadable{A more powerful alternative to zap-to-char.}
|
||||
\begin{keylist}
|
||||
\item[M-z] zop-up-to-char
|
||||
\item[M-Z] zop-to-char
|
||||
\end{keylist}
|
||||
|
||||
\section{Modules}
|
||||
\subsection{prelude-ido}
|
||||
\begin{keylist}
|
||||
\item[M-x] smex
|
||||
\item[M-X] smex-major-mode-commands
|
||||
\end{keylist}
|
||||
|
||||
\subsection{prelude-ivy}
|
||||
\begin{keylist}
|
||||
\item[C-c C-r] ivy-resume
|
||||
\item[<f6>] ivy-resume
|
||||
\item[C-s] swiper
|
||||
\item[M-x] counsel-M-x
|
||||
\item[<f1> f] counsel-describe-function
|
||||
\item[<f1> v] counsel-describe-variable
|
||||
\item[<f1> l] counsel-find-library
|
||||
\item[<f1> i] counsel-info-lookup-symbol
|
||||
\item[<f1> u] counsel-unicode-char
|
||||
\item[C-c g] counsel-git
|
||||
\item[C-c j] counsel-git-grep
|
||||
\item[C-c k] counsel-ag
|
||||
\item[C-x l] counsel-locate
|
||||
\item[C-r] (minibuffer) counsel-minibuffer-history
|
||||
\end{keylist}
|
||||
|
||||
\subsection{prelude-helm}
|
||||
\begin{keylist}
|
||||
\item[C-c h o] helm-occur
|
||||
\item[C-c h g] helm-do-grep
|
||||
\item[C-c h C-c w] helm-wikipedia-suggest
|
||||
\item[C-c h SPC] helm-all-mark-rings
|
||||
\item[C-c p h] helm-projectile
|
||||
\end{keylist}
|
||||
|
||||
\subsection{prelude-helm-everywhere}
|
||||
\begin{keylist}
|
||||
\item[M-x] helm-M-x
|
||||
\item[C-c C-m] helm-M-x
|
||||
\item[M-y] helm-show-kill-ring
|
||||
\item[C-x b] helm-mini
|
||||
\item[C-x C-b] helm-buffers-list
|
||||
\item[C-x C-f] helm-find-files
|
||||
\item[C-h f] helm-apropos
|
||||
\item[C-h r] helm-info-emacs
|
||||
\item[C-h C-l] helm-locate-library
|
||||
\item[C-c f] (prelude-mode) helm-recentf
|
||||
\item[C-c C-l] (minibuffer-local) help-minibuffer-history
|
||||
\item[C-o] (isearch-mode) helm-occur-from-isearch
|
||||
\item[C-c C-l] (shell-mode) helm-comint-input-ring
|
||||
\end{keylist}
|
||||
|
||||
\subsection{prelude-key-chord}
|
||||
\begin{keylist}
|
||||
\item[jj] avy-goto-word-1
|
||||
\item[jl] avy-goto-line
|
||||
\item[jk] avy-goto-char
|
||||
\item[JJ] crux-switch-to-previous-buffer
|
||||
\item[uu] undo-tree-visualize
|
||||
\item[xx] execute-extended-command
|
||||
\item[yy] browse-kill-ring
|
||||
\end{keylist}
|
||||
|
||||
\subsection{prelude-evil}
|
||||
\begin{keylist}
|
||||
\item[C-A] (normal-state) evil-numbers/inc-at-pt
|
||||
\item[C-S-A] (normal-state) evil-numbers/dec-at-pt
|
||||
\item[>] (visual-state) prelude-shift-right-visual
|
||||
\item[<] prelude-shift-left-visual
|
||||
\item[C-S-d] prelude-evil-scroll-down-other-window
|
||||
\item[C-S-u] prelude-evil-scroll-up-other-window
|
||||
\item[K] (magit-branch-manager-mode)\\
|
||||
(emacs-state) magit-discard
|
||||
\item[L] (magit-branch-manager-mode)\\
|
||||
(emacs-state) magit-log-popup
|
||||
\item[K] (magit-status-mode) (emacs-state) magit-discard
|
||||
\item[l] (magit-status-mode) (emacs-state)\\
|
||||
magit-log-popup
|
||||
\item[h] (magit-status-mode) (emacs-state)\\
|
||||
magit-diff-toggle-refine-hunk
|
||||
\end{keylist}
|
||||
|
||||
\subsection{prelude-emacs-lisp}
|
||||
\begin{keylist}
|
||||
\item[C-c C-z] prelude-visit-ielm
|
||||
\item[C-c C-c] eval-defun
|
||||
\item[C-c C-b] eval-buffer
|
||||
\end{keylist}
|
||||
|
||||
\subsection{prelude-go}
|
||||
\begin{keylist}
|
||||
\item[C-c a] go-test-current-project
|
||||
\item[C-c m] go-test-current-file
|
||||
\item[C-c .] go-test-current-test
|
||||
\item[C-c b] go-run
|
||||
\item[C-c h] godoc-at-point
|
||||
\end{keylist}
|
||||
|
||||
\subsection{prelude-ocaml}
|
||||
\begin{keylist}
|
||||
\item[C-c C-s] utop
|
||||
\end{keylist}
|
||||
|
||||
\subsection{prelude-org}
|
||||
\begin{keylist}
|
||||
\item[C-c l] org-store-link
|
||||
\item[C-c a] org-agenda
|
||||
\item[C-c b] org-iswitchb
|
||||
\end{keylist}
|
||||
|
||||
\subsection{prelude-rust}
|
||||
\begin{keylist}
|
||||
\item[C-c C-d] racer-describe
|
||||
\end{keylist}
|
||||
|
||||
\end{multicols}
|
||||
\end{document}
|
||||
|
||||
%%% Local Variables:
|
||||
%%% mode: latex
|
||||
%%% TeX-master: t
|
||||
%%% End:
|
33
doc/support.md
Normal file
33
doc/support.md
Normal file
|
@ -0,0 +1,33 @@
|
|||
# Support
|
||||
|
||||
Prelude currently has several official & unofficial support channels.
|
||||
|
||||
For questions, suggestions and support refer to one of them. Please, don't
|
||||
use the support channels to report issues, as this makes them harder to track.
|
||||
|
||||
## Gitter
|
||||
|
||||
Most internal discussions about the development of Prelude happen on its
|
||||
[gitter channel](https://gitter.im/bbatsov/prelude). You can often find
|
||||
Prelude's maintainers there and get some interesting news from the project's
|
||||
kitchen.
|
||||
|
||||
## Mailing List
|
||||
|
||||
The [official mailing list](https://groups.google.com/forum/#!forum/emacs-prelude) is
|
||||
hosted at Google Groups. It's a low-traffic list, so don't be too hesitant to subscribe.
|
||||
|
||||
## Freenode
|
||||
|
||||
If you're into IRC you can visit the `#prelude` channel on Freenode.
|
||||
It's not actively
|
||||
monitored by the Prelude maintainers themselves, but still you can get support
|
||||
from other Prelude users there.
|
||||
|
||||
## Stackoverflow
|
||||
|
||||
We're also encouraging users to ask Prelude-related questions on StackOverflow.
|
||||
|
||||
When doing so you should use the
|
||||
[Prelude](http://stackoverflow.com/questions/tagged/prelude) tag (ideally combined
|
||||
with the tag `emacs`).
|
103
doc/troubleshooting.md
Normal file
103
doc/troubleshooting.md
Normal file
|
@ -0,0 +1,103 @@
|
|||
# Troubleshooting
|
||||
|
||||
## Updating bundled packages
|
||||
|
||||
Generally it's a good idea to do a package update before running
|
||||
updating Prelude, since the latest Prelude code might depend on newer
|
||||
versions of the bundled packages than you would currently have
|
||||
installed.
|
||||
|
||||
If you're doing manual Prelude updates you should always do a package update first.
|
||||
|
||||
`M-x package-list-packages RET U x`
|
||||
|
||||
That's not necessary if you're using `M-x prelude-update`, since it
|
||||
will automatically update the installed packages.
|
||||
|
||||
## Problems with flyspell-mode
|
||||
|
||||
Prelude makes heavy use of the flyspell-mode package for spell
|
||||
checking of various things. The proper operation of flyspell depends
|
||||
on the presence of the `aspell` program and an `en` dictionary on your
|
||||
system. You can install `aspell` and the dictionary on macOS with
|
||||
`homebrew` like this:
|
||||
|
||||
```bash
|
||||
brew install aspell --with-lang=en
|
||||
```
|
||||
|
||||
On Linux distros - just use your distro's package manager.
|
||||
|
||||
## Ugly colors in the terminal Emacs version
|
||||
|
||||
If your Emacs looks considerably uglier in a terminal (compared to the
|
||||
GUI version) try adding this to your `.bashrc` or `.zshrc`:
|
||||
|
||||
```bash
|
||||
export TERM=xterm-256color
|
||||
```
|
||||
|
||||
Source the `.bashrc` file and start Emacs again.
|
||||
|
||||
## MELPA error on initial startup
|
||||
|
||||
If you get some http connection error related to the MELPA repo
|
||||
just do a manual `M-x package-refresh-contents` and restart Emacs
|
||||
afterwards.
|
||||
|
||||
## Warnings on arrow navigation in editor buffers
|
||||
|
||||
This is not a bug - it's a feature! I firmly believe that the one true
|
||||
way to use Emacs is by using it the way it was intended to be used (as
|
||||
far as navigation is concerned at least).
|
||||
|
||||
If you'd like to be take this a step further and disable the arrow key navigation
|
||||
completely put this in your personal config:
|
||||
|
||||
```lisp
|
||||
(setq guru-warn-only nil)
|
||||
```
|
||||
|
||||
To disable `guru-mode` completely add the following snippet to your
|
||||
personal Emacs config:
|
||||
|
||||
```lisp
|
||||
(setq prelude-guru nil)
|
||||
```
|
||||
|
||||
## Customized C-a behavior
|
||||
|
||||
Prelude overrides `C-a` to behave as described
|
||||
[here](http://emacsredux.com/blog/2013/05/22/smarter-navigation-to-the-beginning-of-a-line/). If
|
||||
you don't like that simply add this to your personal config:
|
||||
|
||||
```lisp
|
||||
(global-set-key [remap move-beginning-of-line]
|
||||
'move-beginning-of-line)
|
||||
```
|
||||
|
||||
## Poor ido matching performance on large datasets
|
||||
|
||||
Prelude's `ido` module swaps the default `ido` flex matching with the
|
||||
more powerful [ido-flx](https://github.com/lewang/flx).
|
||||
|
||||
The sorting algorithm `flx` uses is more complex, but yields better results.
|
||||
|
||||
On slower machines, it may be necessary to lower `flx-ido-threshold` to
|
||||
ensure a smooth experience.
|
||||
|
||||
```lisp
|
||||
(setq flx-ido-threshold 1000)
|
||||
```
|
||||
|
||||
You can always disable the improved sorting algorithm all together like this:
|
||||
|
||||
```lisp
|
||||
(flx-ido-mode -1)
|
||||
```
|
||||
|
||||
## Windows compatibility
|
||||
|
||||
While everything in Prelude should work fine in Windows, I test it only
|
||||
with GNU/Linux & macOS, so there might be Windows-specific problems from time to
|
||||
time. This situation will probably improve over time.
|
275
doc/usage.md
Normal file
275
doc/usage.md
Normal file
|
@ -0,0 +1,275 @@
|
|||
# Usage
|
||||
|
||||
## Running
|
||||
|
||||
Nothing fancy here. Just start Emacs as usual. Personally I run Emacs
|
||||
in daemon mode:
|
||||
|
||||
```bash
|
||||
emacs --daemon
|
||||
```
|
||||
|
||||
Afterwards I connect to the server with either a terminal or a GUI
|
||||
client like this:
|
||||
|
||||
```bash
|
||||
emacsclient -t
|
||||
emacsclient -c
|
||||
```
|
||||
|
||||
You'd probably do well to put a few aliases in your `.zshrc` (or
|
||||
`.bashrc`):
|
||||
|
||||
```bash
|
||||
alias e='emacsclient -t'
|
||||
alias ec='emacsclient -c'
|
||||
alias vim='emacsclient -t'
|
||||
alias vi='emacsclient -t'
|
||||
```
|
||||
|
||||
The last two aliases are helpful if you're used to editing files from
|
||||
the command line using `vi(m)`.
|
||||
|
||||
You can also open a file with the cursor positioned directly on a specific line:
|
||||
|
||||
```bash
|
||||
emacsclient somefile:1234
|
||||
```
|
||||
|
||||
This will open file 'somefile' and set cursor on line 1234.
|
||||
|
||||
## Getting to know Prelude
|
||||
|
||||
Certainly the best way to understand how Prelude enhances the default
|
||||
Emacs experience is to peruse Prelude's source code (which is
|
||||
obviously written in Emacs Lisp). Understanding the code is not
|
||||
necessary of course. Prelude includes a `prelude-mode` minor Emacs mode
|
||||
which collects some of the additional functionality added by
|
||||
Prelude. It also adds an additional keymap that binds many of those
|
||||
extensions to keybindings.
|
||||
|
||||
### Keymap
|
||||
|
||||
#### Global
|
||||
|
||||
Keybinding | Description
|
||||
-------------------|------------------------------------------------------------
|
||||
<kbd>C-x \\</kbd> | `align-regexp`
|
||||
<kbd>C-+</kbd> | Increase font size(`text-scale-increase`).
|
||||
<kbd>C--</kbd> | Decrease font size(`text-scale-decrease`).
|
||||
<kbd>C-x O</kbd> | Go back to previous window (the inverse of `other-window` (`C-x o`)).
|
||||
<kbd>C-^</kbd> | Join two lines into one(`crux-top-join-line`).
|
||||
<kbd>C-x p</kbd> | Start `proced` (manage processes from Emacs; works only in Linux).
|
||||
<kbd>C-x m</kbd> | Start `eshell`.
|
||||
<kbd>C-x M-m</kbd> | Start your default shell.
|
||||
<kbd>C-x C-m</kbd> | Alias for `M-x`.
|
||||
<kbd>M-X</kbd> | Like `M-x` but limited to commands that are relevant to the active major mode.
|
||||
<kbd>C-h A</kbd> | Run `apropos` (search in all Emacs symbols).
|
||||
<kbd>C-h C-m</kbd> | Display key bindings of current major mode and descriptions of every binding.
|
||||
<kbd>M-/</kbd> | Run `hippie-expand` (a replacement for the default `dabbrev-expand`).
|
||||
<kbd>C-x C-b</kbd> | Open `ibuffer` (a replacement for the default `buffer-list`).
|
||||
<kbd>F11</kbd> | Make the window full screen.
|
||||
<kbd>F12</kbd> | Toggle the Emacs menu bar.
|
||||
<kbd>C-x g</kbd> | Open Magit's status buffer.
|
||||
<kbd>C-x M-g</kbd> | Open Magit's popup of popups.
|
||||
<kbd>M-Z</kbd> | Zap up to char.
|
||||
<kbd>C-=</kbd> | Run `expand-region` (incremental text selection).
|
||||
<kbd>C-a</kbd> | Run `crux-move-beginning-of-line`. Read [this](http://emacsredux.com/blog/2013/05/22/smarter-navigation-to-the-beginning-of-a-line/) for details.
|
||||
|
||||
#### Prelude Mode
|
||||
|
||||
Keybinding | Description
|
||||
-------------------|------------------------------------------------------------
|
||||
<kbd>C-c o</kbd> | Open the currently visited file with an external program.
|
||||
<kbd>C-c i</kbd> | Search for a symbol, only for buffers that contain code
|
||||
<kbd>C-c g</kbd> | Search in Google for the thing under point (or an interactive query).
|
||||
<kbd>C-c G</kbd> | Search in GitHub for the thing under point (or an interactive query).
|
||||
<kbd>C-c y</kbd> | Search in YouTube for the thing under point (or an interactive query).
|
||||
<kbd>C-c U</kbd> | Search in Duckduckgo for the thing under point (or an interactive query).
|
||||
<kbd>C-S-RET</kbd> or <kbd>Super-o</kbd> | Insert an empty line above the current line and indent it properly.
|
||||
<kbd>S-RET</kbd> or <kbd>M-o</kbd> | Insert an empty line and indent it properly (as in most IDEs).
|
||||
<kbd>C-S-up</kbd> or <kbd>M-S-up</kbd> | Move the current line or region up.
|
||||
<kbd>C-S-down</kbd> or <kbd>M-S-down</kbd>| Move the current line or region down.
|
||||
<kbd>C-c n</kbd> | Fix indentation in buffer and strip whitespace.
|
||||
<kbd>C-c f</kbd> | Open recently visited file.
|
||||
<kbd>C-M-\\</kbd> | Indent region (if selected) or the entire buffer.
|
||||
<kbd>C-c u</kbd> | Open a new buffer containing the contents of URL.
|
||||
<kbd>C-c e</kbd> | Eval a bit of Emacs Lisp code and replace it with its result.
|
||||
<kbd>C-c s</kbd> | Swap two active windows.
|
||||
<kbd>C-c D</kbd> | Delete current file and buffer.
|
||||
<kbd>C-c d</kbd> | Duplicate the current line (or region).
|
||||
<kbd>C-c M-d</kbd> | Duplicate and comment the current line (or region).
|
||||
<kbd>C-c r</kbd> | Rename the current buffer and its visiting file if any.
|
||||
<kbd>C-c t</kbd> | Open a terminal emulator (`ansi-term`).
|
||||
<kbd>C-c k</kbd> | Kill all open buffers except the one you're currently in.
|
||||
<kbd>C-c TAB</kbd> | Indent and copy region to clipboard
|
||||
<kbd>C-c I</kbd> | Open user's init file.
|
||||
<kbd>C-c S</kbd> | Open shell's init file.
|
||||
<kbd>C-c . +</kbd> | Increment integer at point. Default is +1.
|
||||
<kbd>C-c . -</kbd> | Decrement integer at point. Default is -1.
|
||||
<kbd>C-c . *</kbd> | Multiply integer at point. Default is *2.
|
||||
<kbd>C-c . /</kbd> | Divide integer at point. Default is /2.
|
||||
<kbd>C-c . \\</kbd> | Modulo integer at point. Default is modulo 2.
|
||||
<kbd>C-c . ^</kbd> | Power to the integer at point. Default is ^2.
|
||||
<kbd>C-c . <</kbd> | Left-shift integer at point. Default is 1 position to the left.
|
||||
<kbd>C-c . ></kbd> | Right-shift integer at point. Default is 1 position to the right.
|
||||
<kbd>C-c . #</kbd> | Convert integer at point to specified base. Default is 10.
|
||||
<kbd>C-c . %</kbd> | Replace integer at point with another specified integer.
|
||||
<kbd>C-c . '</kbd> | Perform arithmetic operations on integer at point. User specifies the operator.
|
||||
<kbd>Super-r</kbd> | Recent files
|
||||
<kbd>Super-j</kbd> | Join lines
|
||||
<kbd>Super-k</kbd> | Kill whole line
|
||||
<kbd>Super-m m</kbd> | Magit status
|
||||
<kbd>Super-m l</kbd> | Magit log
|
||||
<kbd>Super-m f</kbd> | Magit file log
|
||||
<kbd>Super-m b</kbd> | Magit blame mode
|
||||
|
||||
**Note**: For various arithmetic operations, the prefix `C-c .` only needs to be pressed once for the first operation.
|
||||
For subsequent operations, only the appropriate operations (i.e. `+`, `-`, `*`, `/`... needs to be pressed).
|
||||
|
||||
#### macOS modifier keys
|
||||
|
||||
Prelude does not mess by default with the standard mapping of `Command` (to `Super`) and `Option` (to `Meta`).
|
||||
|
||||
If you want to swap them add this to your personal config:
|
||||
|
||||
```lisp
|
||||
(setq mac-command-modifier 'meta)
|
||||
(setq mac-option-modifier 'super)
|
||||
```
|
||||
|
||||
You can also temporarily swap them with `C-c w` (`M-x prelude-swap-meta-and-super`).
|
||||
|
||||
**Note**: I'd highly recommend to all macOS users to consider
|
||||
[remapping Return to
|
||||
Control](http://emacsredux.com/blog/2013/11/12/a-crazy-productivity-boost-remap-return-to-control/)
|
||||
instead. That's an epic productivity boost and it's not as crazy as it sounds!
|
||||
|
||||
#### Projectile
|
||||
|
||||
[Projectile](https://github.com/bbatsov/projectile) is one of the essential packages bundled with Prelude.
|
||||
It provides an easy way to navigate and switch projects. Take a look at its extensive documentation
|
||||
to get a feel for everything you can do with Projectile.
|
||||
|
||||
Prelude adds an extra keymap prefix `s-p` (`s` stands for
|
||||
`Super`) in addition to the standard one `C-c p`. By default on Windows keyboard
|
||||
`Super` is mapped to the `Windows` key and on macOS keyboards `Super` is mapped
|
||||
to the `Command` key.
|
||||
|
||||
If you ever forget any of Projectile's keybindings just do a:
|
||||
|
||||
<kbd>C-c p C-h</kbd> or <kbd>s-p C-h</kbd>
|
||||
|
||||
Alternatively you can just press <kbd>s-p</kbd> and wait for a moment
|
||||
for `which-key` to kick in and show you the available keybindings.
|
||||
|
||||
#### Helm
|
||||
|
||||
Helm is setup according to this guide: [A Package in a league of its own: Helm](http://tuhdo.github.io/helm-intro.html).
|
||||
|
||||
You can learn Helm usage and key bindings following the guide. <kbd>C-c h</kbd> is Prelude's default prefix key for Helm.
|
||||
If you don't remember any key binding, append <kbd>C-h</kbd> after <kbd>C-c h</kbd> for a list of key bindings in Helm.
|
||||
|
||||
If you love Helm and want to use Helm globally with enhanced `helm-find-files`, `helm-buffer-lists`..., you will have to also add `(require 'prelude-helm-everywhere)`.
|
||||
When `prelude-helm-everywhere` is activated, Helm enables these global key bindings:
|
||||
|
||||
Key binding | Description
|
||||
-------------------|----------------------------------------------
|
||||
<kbd>M-x</kbd> | Run [helm-M-x](http://tuhdo.github.io/helm-intro.html#sec-3), an interactive version of <kbd>M-x</kdb>.
|
||||
<kbd>M-y</kbd> | Run [helm-show-kill-ring](http://tuhdo.github.io/helm-intro.html#sec-4), shows the content of `kill-ring`.
|
||||
<kbd>C-x b </kbd> | Run [helm-mini](http://tuhdo.github.io/helm-intro.html#sec-5), an interactive version of `C-x b` with more features.
|
||||
<kbd>C-x C-f</kbd> | Run [helm-find-files](http://tuhdo.github.io/helm-intro.html#sec-6), an interactive version of `find-file` with more features.
|
||||
<kbd>C-h f </kbd> | Run [helm-apropos](http://tuhdo.github.io/helm-intro.html#sec-13), an interactive version of `apropos-command`.
|
||||
<kbd>C-h r</kbd> | Run [helm-info-emacs](http://tuhdo.github.io/helm-intro.html#sec-14), an interactive version of `info-emacs-manual`.
|
||||
<kbd>C-h C-l </kbd>| Run `helm-locate-library` that can search for locations of any file loaded into Emacs.
|
||||
|
||||
This key binding is activated in `shell-mode`:
|
||||
|
||||
Key Binding | Description
|
||||
-------------------|----------------------------------------------
|
||||
<kbd>C-c C-l</kbd> | Run `helm-comint-input-ring` that shows `shell` history using Helm interface.
|
||||
|
||||
This key bindings is activated in `eshell-mode`:
|
||||
|
||||
Key Binding | Description
|
||||
-------------------|----------------------------------------------
|
||||
<kbd>C-c C-l</kbd> | Run `helm-eshell-history` that shows `eshell` history using Helm interface.
|
||||
|
||||
If you prefer Ido in everywhere, you should not add `prelude-helm-everywhere`, so you can use Helm along with Ido and Prelude's default commands.
|
||||
|
||||
You can always reactivate Helm with `(prelude-global-helm-global-mode-on)`.
|
||||
|
||||
**NOTICE**: In `helm-M-x`, you have to pass prefix argument *AFTER* you run `helm-M-x`,
|
||||
because your prefix argument will be displayed in the modeline when in `helm-M-x`
|
||||
buffer. Passing prefix argument **BEFORE** =helm-M-x= **has no effect**.
|
||||
|
||||
|
||||
#### Key-chords
|
||||
|
||||
**Key-chords are available only when the `prelude-key-chord` module has been enabled.**
|
||||
|
||||
Keybinding | Description
|
||||
-------------------|----------------------------------------------
|
||||
<kbd>jj</kbd> | Jump to the beginning of a word(`avy-goto-word-1`)
|
||||
<kbd>jk</kbd> | Jump to a character(`avy-goto-char`)
|
||||
<kbd>jl</kbd> | Jump to the beginning of a line(`avy-goto-line`)
|
||||
<kbd>JJ</kbd> | Jump back to previous buffer(`crux-switch-to-previous-buffer`)
|
||||
<kbd>uu</kbd> | View edits as a tree(`undo-tree-visualize`)
|
||||
<kbd>xx</kbd> | Executed extended command(`execute-extended-command`)
|
||||
<kbd>yy</kbd> | Browse the kill ring(`browse-kill-ring`)
|
||||
|
||||
##### Disabling key-chords
|
||||
|
||||
In some cases you may not want to have a key-chord that is defined by prelude,
|
||||
in which case you can disable the binding in your `personal.el` file by setting
|
||||
its command to `nil`. For example, to disable the `jj` key-chord add the
|
||||
following line:
|
||||
|
||||
```lisp
|
||||
(key-chord-define-global "jj" nil)
|
||||
```
|
||||
|
||||
If you're an `evil-mode` user you'll probably do well to disable `key-chord-mode` altogether:
|
||||
|
||||
```lisp
|
||||
(key-chord-mode -1)
|
||||
```
|
||||
|
||||
#### vim emulation
|
||||
|
||||
If you want to use vim keybindings inside of Emacs enable the `prelude-evil` module which provides
|
||||
support for `evil-mode`.
|
||||
|
||||
### Cheatsheet
|
||||
|
||||
Use `C-h k <key>` (`<key>` are the ones listed on the left) or `C-h f <function>` (`<function>` are the ones listed on the right) to see the detailed explanation.
|
||||
|
||||

|
||||
|
||||
#### PDF generation
|
||||
|
||||
Install [LaTeX](https://www.latex-project.org/get/)
|
||||
|
||||
``` bash
|
||||
cd modules/doc
|
||||
pdflatex prelude-cheatsheet.tex
|
||||
```
|
||||
|
||||
#### PNG generation
|
||||
|
||||
Install [Poppler](https://poppler.freedesktop.org/)
|
||||
|
||||
``` bash
|
||||
cd modules/doc
|
||||
pdftocairo -png -singlefile prelude-cheatsheet.pdf cheatsheet
|
||||
```
|
||||
|
||||
## Automatic package installation
|
||||
|
||||
The default Prelude installation comes with a bare minimum of
|
||||
functionality. It will however install add-ons for various programming
|
||||
languages and frameworks on demand. For instance - if you try to open
|
||||
a `.clj` file `clojure-mode`, `cider` and Prelude's enhanced Lisp
|
||||
configuration will be installed automatically for you.
|
||||
|
||||
You can, of course, install anything you wish manually as well.
|
Loading…
Add table
Add a link
Reference in a new issue