diff options
| author | Po Lu | 2022-12-11 09:34:02 +0800 |
|---|---|---|
| committer | Po Lu | 2022-12-11 09:34:02 +0800 |
| commit | 13310643cd642bb1403bb2f8a5c27d1929725897 (patch) | |
| tree | dafc767117c64ade8ce5b53487a4874450fb5d9b /doc/misc | |
| parent | 0878279809c8acc8de703ae9774e89695b4ffc37 (diff) | |
| parent | 5fbd12ff49410bbc150e677b527ca4939ffcaf5f (diff) | |
| download | emacs-13310643cd642bb1403bb2f8a5c27d1929725897.tar.gz emacs-13310643cd642bb1403bb2f8a5c27d1929725897.zip | |
Merge from origin/emacs-29
5fbd12ff494 Adapt manual names in emacs-news-mode
b36bc692671 ; * etc/NEWS: Fix typos.
f626b9f3856 ; * doc/misc/use-package.texi: Fix indexing.
56a6712bd6f ; * lisp/erc/erc.el (erc-default-target): Fix comment.
dcf69a1da4a Respect some spaces in auth-source-pass--match-regexp
acd462b0306 ; Improve the use-package manual
801c1c22de8 ; Prefer HTTPS to HTTP in some URLs
74a009dd96a Eglot: Handle LSP progress with Emacs progress reporters ...
0cfeb1c2bc9 Eglot: cleanup whitespace and indentation
465a9e78b96 Better test-custom-opts diagnostics
bdbb7099784 ; Fix groff warnings in man pages
d3d9676bf88 New script admin/check-man-pages
c2aea9d1323 ; Mention flush-lines in kill-matching-lines docstring
f5c3585e4dd ; Fix typos
58a483960dd ; Improve use-package-autoload-keymap docstring
# Conflicts:
# etc/NEWS
Diffstat (limited to 'doc/misc')
| -rw-r--r-- | doc/misc/eglot.texi | 7 | ||||
| -rw-r--r-- | doc/misc/flymake.texi | 2 | ||||
| -rw-r--r-- | doc/misc/use-package.texi | 768 |
3 files changed, 526 insertions, 251 deletions
diff --git a/doc/misc/eglot.texi b/doc/misc/eglot.texi index b76f8bdfd71..2aff038b9ab 100644 --- a/doc/misc/eglot.texi +++ b/doc/misc/eglot.texi | |||
| @@ -955,6 +955,13 @@ Note that you can still configure the excluded Emacs features manually | |||
| 955 | to use Eglot in your @code{eglot-managed-mode-hook} or via some other | 955 | to use Eglot in your @code{eglot-managed-mode-hook} or via some other |
| 956 | mechanism. | 956 | mechanism. |
| 957 | 957 | ||
| 958 | @vindex eglot-report-progress | ||
| 959 | @cindex progress | ||
| 960 | @item eglot-report-progress | ||
| 961 | Set this variable to true if you'd like progress notifications coming | ||
| 962 | from the LSP server to be handled as Emacs's progress reporting | ||
| 963 | facilities. | ||
| 964 | |||
| 958 | @vindex eglot-workspace-configuration | 965 | @vindex eglot-workspace-configuration |
| 959 | @cindex server workspace configuration | 966 | @cindex server workspace configuration |
| 960 | @item eglot-workspace-configuration | 967 | @item eglot-workspace-configuration |
diff --git a/doc/misc/flymake.texi b/doc/misc/flymake.texi index 4561b760c04..80e1bceb8ec 100644 --- a/doc/misc/flymake.texi +++ b/doc/misc/flymake.texi | |||
| @@ -847,7 +847,7 @@ Binding,,, elisp, The Emacs Lisp Reference Manual}) to be active. | |||
| 847 | @findex flymake-proc-legacy-flymake | 847 | @findex flymake-proc-legacy-flymake |
| 848 | The backend @code{flymake-proc-legacy-flymake} was originally designed | 848 | The backend @code{flymake-proc-legacy-flymake} was originally designed |
| 849 | to be extended for supporting new syntax check tools and error message | 849 | to be extended for supporting new syntax check tools and error message |
| 850 | patterns. It is also controlled by its own set of customization variables | 850 | patterns. It is also controlled by its own set of customization variables. |
| 851 | 851 | ||
| 852 | @node Proc customization variables | 852 | @node Proc customization variables |
| 853 | @section Customization variables for the Proc backend | 853 | @section Customization variables for the Proc backend |
diff --git a/doc/misc/use-package.texi b/doc/misc/use-package.texi index 4f0f8a26773..daf27ec5bbc 100644 --- a/doc/misc/use-package.texi +++ b/doc/misc/use-package.texi | |||
| @@ -47,9 +47,9 @@ modify this GNU manual.'' | |||
| 47 | @node Top | 47 | @node Top |
| 48 | @top use-package User Manual | 48 | @top use-package User Manual |
| 49 | 49 | ||
| 50 | The @code{use-package} macro allows you to isolate package | 50 | The @code{use-package} macro allows you to set up package |
| 51 | customization in your init file in a declarative way. It takes care | 51 | customization in your init file in a declarative way. It takes care |
| 52 | of a lot of things for you that would otherwise require a lot of | 52 | of many things for you that would otherwise require a lot of |
| 53 | repetitive boilerplate code. It can help with common customization, | 53 | repetitive boilerplate code. It can help with common customization, |
| 54 | such as binding keys, setting up hooks, customizing user options and | 54 | such as binding keys, setting up hooks, customizing user options and |
| 55 | faces, autoloading, and more. It also helps you keep Emacs startup | 55 | faces, autoloading, and more. It also helps you keep Emacs startup |
| @@ -57,8 +57,9 @@ fast, even when you use many (even hundreds) of packages. | |||
| 57 | 57 | ||
| 58 | Note that use-package is not a package manager. Although use-package | 58 | Note that use-package is not a package manager. Although use-package |
| 59 | does have the useful capability to interface with the Emacs package | 59 | does have the useful capability to interface with the Emacs package |
| 60 | manager, its primary purpose is for the configuration and loading of | 60 | manager, its primary purpose is help with the configuration and |
| 61 | packages. | 61 | loading of packages, not with managing their download, upgrades, and |
| 62 | installation. | ||
| 62 | 63 | ||
| 63 | @insertcopying | 64 | @insertcopying |
| 64 | 65 | ||
| @@ -75,6 +76,8 @@ Appendices | |||
| 75 | * Keyword extensions:: Adding new use-package keywords. | 76 | * Keyword extensions:: Adding new use-package keywords. |
| 76 | * History:: History and acknowledgments. | 77 | * History:: History and acknowledgments. |
| 77 | * GNU Free Documentation License:: The license for this manual. | 78 | * GNU Free Documentation License:: The license for this manual. |
| 79 | |||
| 80 | Index | ||
| 78 | * Index:: | 81 | * Index:: |
| 79 | @end menu | 82 | @end menu |
| 80 | @end ifnottex | 83 | @end ifnottex |
| @@ -88,52 +91,58 @@ customization and use of packages in Emacs. It was created for a few | |||
| 88 | basic reasons, each of which drove the design. Understanding these | 91 | basic reasons, each of which drove the design. Understanding these |
| 89 | reasons may help make some of those decisions clearer: | 92 | reasons may help make some of those decisions clearer: |
| 90 | 93 | ||
| 94 | @cindex reasons for developing use-package | ||
| 91 | @enumerate | 95 | @enumerate |
| 92 | @item | 96 | @item |
| 93 | To gather all configuration details of a package into one place, | 97 | Allow gathering all the configuration details of a package into one |
| 94 | making it easier to copy, disable, or move it elsewhere in the init | 98 | place, making it easier to copy, disable, or move it elsewhere in the |
| 95 | file. | 99 | init file. |
| 96 | 100 | ||
| 97 | @item | 101 | @item |
| 98 | To reduce duplication and boilerplate, capturing several common | 102 | Reduce duplication and repetitive boilerplate, capturing several |
| 99 | practices as mere keywords both easy and intuitive to use. | 103 | common practices as mere keywords both easy and intuitive to use. |
| 100 | 104 | ||
| 101 | @item | 105 | @item |
| 102 | To make startup time of Emacs as quick as possible, without | 106 | Make startup time of Emacs as short as possible, without sacrificing |
| 103 | sacrificing the quantity of add-on packages used. | 107 | the quantity of add-on packages used. |
| 104 | 108 | ||
| 105 | @item | 109 | @item |
| 106 | To make it so errors encountered during startup disable only the | 110 | Ensure that errors encountered during startup disable only the |
| 107 | package raising the error, and as little else as possible, leaving as | 111 | package(s) raising the error(s), and as little else as possible, |
| 108 | close to a functional Emacs as possible. | 112 | leaving Emacs as close to fully functional as possible. |
| 109 | 113 | ||
| 110 | @item | 114 | @item |
| 111 | To allow byte-compilation of one's init file so that any warnings or | 115 | Allow byte-compiling your init file, so that any warnings or errors |
| 112 | errors seen are meaningful. In this way, even if byte-compilation is | 116 | you see at startup are meaningful. In this way, even if |
| 113 | not used for speed (reason 3), it can still be used as a sanity check. | 117 | byte-compilation is not used for speed (see item 3 above), it can |
| 118 | still be used as a sanity check. | ||
| 114 | @end enumerate | 119 | @end enumerate |
| 115 | 120 | ||
| 116 | It is worth noting that use-package is not intended to replace the | 121 | It is worth noting that use-package is not intended to replace the |
| 117 | standard @w{@code{M-x customize}}. On the contrary, it is designed to | 122 | standard customization command @w{@kbd{M-x customize}} (@pxref{Easy |
| 118 | work together with it, for things that customize cannot do. | 123 | Customization,,, emacs, GNU Emacs Manual}). On the contrary, it is |
| 124 | designed to work together with it, for things that Customize cannot | ||
| 125 | do. | ||
| 119 | 126 | ||
| 120 | @c ---------------------------------------------------------------------------- | 127 | @c ---------------------------------------------------------------------------- |
| 121 | @node Getting Started | 128 | @node Getting Started |
| 122 | @chapter Getting Started | 129 | @chapter Getting Started |
| 130 | @cindex quick-start instructions | ||
| 123 | 131 | ||
| 124 | This chapter provides instructions and examples for quickly getting | 132 | This chapter provides instructions and examples for quickly getting |
| 125 | started with use-package. The first thing you need to do is make sure | 133 | started with use-package. The first thing you need to do is make sure |
| 126 | that @samp{use-package} itself is loaded. To do that, put this at the | 134 | that @file{use-package} itself is loaded. To do that, put this at the |
| 127 | top of your init file: | 135 | top of your init file: |
| 128 | 136 | ||
| 129 | @lisp | 137 | @lisp |
| 130 | (require 'use-package) | 138 | (require 'use-package) |
| 131 | @end lisp | 139 | @end lisp |
| 132 | 140 | ||
| 133 | The above makes the @code{use-macro} for in the rest of your init | 141 | @cindex declaration |
| 134 | file. In this manual, we call each call to @code{use-macro} a | 142 | The above makes the @code{use-macro} available for us in the rest of |
| 135 | @dfn{declaration}, to highlight the declarative nature of its | 143 | your init file. In this manual, we say that each call to |
| 136 | semantic. | 144 | @code{use-macro} is a @dfn{declaration}, to highlight the declarative |
| 145 | nature of its syntax. | ||
| 137 | 146 | ||
| 138 | To unconditionally load a package named @samp{foo}, add the following | 147 | To unconditionally load a package named @samp{foo}, add the following |
| 139 | declaration to your init file: | 148 | declaration to your init file: |
| @@ -143,62 +152,70 @@ declaration to your init file: | |||
| 143 | @end lisp | 152 | @end lisp |
| 144 | 153 | ||
| 145 | @noindent | 154 | @noindent |
| 146 | This declaration is equivalent to using @code{require}, with some | 155 | This declaration is equivalent to using @code{require} (@pxref{Named |
| 147 | use-package specific error handling added in. Just like require, it | 156 | Features,,, elisp, GNU Emacs Lisp Reference Manual}), with some |
| 148 | needs the package @samp{foo} to be installed and available in your | 157 | use-package specific error handling added in. Just like |
| 149 | @code{load-path} (@pxref{Installing packages}). | 158 | @code{require}, it needs the package @samp{foo} to be installed and |
| 159 | available via your @code{load-path} (@pxref{Installing packages}). | ||
| 150 | 160 | ||
| 151 | To evaluate Lisp code @emph{before} the @samp{foo} package is loaded, | 161 | To evaluate some Lisp @emph{before} the @samp{foo} package is loaded, |
| 152 | use the @code{:init} keyword: | 162 | use the @code{:init} keyword: |
| 153 | 163 | ||
| 154 | @lisp | 164 | @lisp |
| 165 | @group | ||
| 155 | (use-package foo | 166 | (use-package foo |
| 156 | :init | 167 | :init |
| 157 | (setq foo-variable t)) | 168 | (setq foo-variable t)) |
| 169 | @end group | ||
| 158 | @end lisp | 170 | @end lisp |
| 159 | 171 | ||
| 160 | Similarly, @code{:config} can be used to execute code @emph{after} a | 172 | Similarly, @code{:config} can be used to execute code @emph{after} a |
| 161 | package is loaded. In cases where loading is done lazily | 173 | package is loaded. In cases where loading is done lazily |
| 162 | (@pxref{Loading Packages}), this execution is deferred until after the | 174 | (@pxref{Loading Packages}), this execution is deferred until after the |
| 163 | autoload occurs. As you might expect, you can use @code{:init} and | 175 | loading actually occurs. As you might expect, you can use |
| 164 | @code{:config} together: | 176 | @code{:init} and @code{:config} together: |
| 165 | 177 | ||
| 166 | @lisp | 178 | @lisp |
| 179 | @group | ||
| 167 | (use-package foo | 180 | (use-package foo |
| 168 | :init | 181 | :init |
| 169 | (setq foo-variable t) | 182 | (setq foo-variable t) |
| 170 | :config | 183 | :config |
| 171 | (foo-mode 1)) | 184 | (foo-mode 1)) |
| 185 | @end group | ||
| 172 | @end lisp | 186 | @end lisp |
| 173 | 187 | ||
| 174 | The above declarations will all load the @samp{foo} package | 188 | The above declarations will load the @samp{foo} package |
| 175 | immediately. In most cases, this is not necessary or desirable, as | 189 | immediately. In most cases, this is not necessary or desirable, as |
| 176 | that will slow down Emacs startup. Instead, you should try to set | 190 | that will slow down Emacs startup. Instead, you should try to set |
| 177 | things up so that packages are only loaded when they are actually | 191 | things up so that packages are only loaded when they are actually |
| 178 | needed (autoloading). If you have installed a package from | 192 | needed (a.k.a. ``autoloading''). If you have installed a package from |
| 179 | @acronym{GNU ELPA} that provides it's own autoloads, it is often | 193 | @acronym{GNU ELPA} that provides it's own autoloads, it is often |
| 180 | enough to say: | 194 | enough to say: |
| 181 | 195 | ||
| 182 | @lisp | 196 | @lisp |
| 197 | @group | ||
| 183 | (use-package foo | 198 | (use-package foo |
| 184 | :defer t) | 199 | :defer t) |
| 200 | @end group | ||
| 185 | @end lisp | 201 | @end lisp |
| 186 | 202 | ||
| 187 | @noindent | 203 | @noindent |
| 188 | This will avoid loading the package. Now, when you run any autoloaded | 204 | This will avoid loading the package. Now, when you run any autoloaded |
| 189 | command, the package @samp{foo} is loaded automatically. Package | 205 | command, the package @samp{foo} is loaded automatically. (Which |
| 190 | authors will make their own decisions about which commands are marked | 206 | commands from a package are marked to auto-load by default is the |
| 191 | to autoload by default. | 207 | decision of the package authors.) |
| 192 | 208 | ||
| 193 | In some cases, you might need or want to provide your own autoloads. | 209 | In some cases, you might need or want to provide your own autoloads. |
| 194 | The below more complex example autoloads the commands | 210 | The more complex example below autoloads the commands |
| 195 | @code{isearch-moccur} and @code{isearch-all} from | 211 | @code{isearch-moccur} and @code{isearch-all} from the package |
| 196 | @file{color-moccur.el}, and binds keys both globally and in | 212 | @file{color-moccur.el}, and binds keys both globally and in |
| 197 | @code{isearch-mode-map}. When one of these commands are used, the | 213 | @code{isearch-mode-map}. When one of these two commands are used, the |
| 198 | package is loaded. At that point, @code{moccur-edit} is also loaded, | 214 | package will be loaded. At that point, @code{moccur-edit} is also loaded, |
| 199 | to allow editing of the @code{moccur} buffer. | 215 | to allow editing of the @code{moccur} buffer. |
| 200 | 216 | ||
| 201 | @lisp | 217 | @lisp |
| 218 | @group | ||
| 202 | (use-package color-moccur | 219 | (use-package color-moccur |
| 203 | :commands (isearch-moccur isearch-all) | 220 | :commands (isearch-moccur isearch-all) |
| 204 | :bind (("M-s O" . moccur) | 221 | :bind (("M-s O" . moccur) |
| @@ -209,6 +226,7 @@ to allow editing of the @code{moccur} buffer. | |||
| 209 | (setq isearch-lazy-highlight t) | 226 | (setq isearch-lazy-highlight t) |
| 210 | :config | 227 | :config |
| 211 | (use-package moccur-edit)) | 228 | (use-package moccur-edit)) |
| 229 | @end group | ||
| 212 | @end lisp | 230 | @end lisp |
| 213 | 231 | ||
| 214 | Some packages will suggest ready-made @code{use-package} declarations | 232 | Some packages will suggest ready-made @code{use-package} declarations |
| @@ -220,8 +238,8 @@ That should be enough to get you started! | |||
| 220 | @c ---------------------------------------------------------------------------- | 238 | @c ---------------------------------------------------------------------------- |
| 221 | @node Loading Packages | 239 | @node Loading Packages |
| 222 | @chapter Loading Packages | 240 | @chapter Loading Packages |
| 241 | @cindex loading packages with use-package | ||
| 223 | 242 | ||
| 224 | @cindex loading packages | ||
| 225 | Before use-package can load an Emacs Lisp package, it must be | 243 | Before use-package can load an Emacs Lisp package, it must be |
| 226 | available in a directory on your @code{load-path}. When you install | 244 | available in a directory on your @code{load-path}. When you install |
| 227 | packages using the built-in @code{install-package} command, it will do | 245 | packages using the built-in @code{install-package} command, it will do |
| @@ -230,15 +248,15 @@ packages) are always available. | |||
| 230 | 248 | ||
| 231 | If you install packages manually, you must make sure they are | 249 | If you install packages manually, you must make sure they are |
| 232 | available on your @code{load-path}. @xref{Lisp Libraries,,, emacs, | 250 | available on your @code{load-path}. @xref{Lisp Libraries,,, emacs, |
| 233 | GNU Emacs Manual} for details. | 251 | GNU Emacs Manual}, for details. |
| 234 | 252 | ||
| 235 | Some packages have more than one library. In those cases, you might | 253 | Some packages have more than one library. In those cases, you might |
| 236 | need more than one @code{use-package} declaration to make sure it is | 254 | need more than one @code{use-package} declaration to make sure the |
| 237 | properly loaded. For complex configurations, you might also need more | 255 | package is properly loaded. For complex configurations, you might |
| 238 | than one declaration for a package with the same name. | 256 | also need more than one declaration for a package with the same name. |
| 239 | 257 | ||
| 240 | use-package can interface with @samp{package.el} to install packages | 258 | use-package can interface with @samp{package.el} to install packages |
| 241 | on Emacs start. @xref{Installing packages} for details. | 259 | on Emacs start. @xref{Installing packages}, for details. |
| 242 | 260 | ||
| 243 | @menu | 261 | @menu |
| 244 | * Loading basics:: How and when packages are loaded. | 262 | * Loading basics:: How and when packages are loaded. |
| @@ -254,32 +272,38 @@ on Emacs start. @xref{Installing packages} for details. | |||
| 254 | @node Loading basics | 272 | @node Loading basics |
| 255 | @section How and when use-package loads packages | 273 | @section How and when use-package loads packages |
| 256 | 274 | ||
| 257 | The @code{use-package} macro either will either load a package | 275 | The call to the @code{use-package} macro will load a package either |
| 258 | immediately, or when they are first used (autoloading). In the | 276 | immediately, or when the package is first used (via autoloading). In the |
| 259 | simplest case, a @code{use-package} declaration loads a package when | 277 | simplest case, a @code{use-package} declaration loads a package when |
| 260 | it is evaluated.@footnote{This happens both at run-time and at | 278 | it is evaluated.@footnote{This happens both at run-time and at |
| 261 | compile-time. @xref{Byte-compiling}.} If the declaration is in your | 279 | compile-time. @xref{Byte-compiling}.} If the declaration is in your |
| 262 | init file, this happens automatically each time Emacs is started. | 280 | init file, this happens automatically each time Emacs is started. |
| 263 | 281 | ||
| 264 | For example, the below declaration immediately loads the library | 282 | For example, the declaration below immediately loads the library |
| 265 | @code{foo}, just like @code{require} would. If the library @samp{foo} | 283 | @code{foo}, just like @code{require} would: |
| 266 | is not available in your @code{load-path}, it logs a warning to the | ||
| 267 | @samp{*Messages*} buffer: | ||
| 268 | 284 | ||
| 269 | @lisp | 285 | @lisp |
| 270 | (use-package foo) | 286 | (use-package foo) |
| 271 | @end lisp | 287 | @end lisp |
| 272 | 288 | ||
| 289 | @noindent | ||
| 290 | If the library @samp{foo} is not available in your @code{load-path}, | ||
| 291 | the declaration logs a warning to the @samp{*Messages*} buffer. | ||
| 292 | |||
| 293 | @cindex package vs library | ||
| 294 | @c So, confusingly, (use-package foo) actually means to use the | ||
| 295 | @c _library_ foo.el, not all of the _package_ foo's libraries? | ||
| 296 | @c Should this be explicitly explained here? | ||
| 273 | Note that a ``package'' is different from an Emacs Lisp ``library''. | 297 | Note that a ``package'' is different from an Emacs Lisp ``library''. |
| 274 | The above declaration tells use-package to load the @emph{library} | 298 | The above declaration tells use-package to load the @emph{library} |
| 275 | @file{foo.el}, which the overwhelming majority of cases also resides | 299 | @file{foo.el}, which in the overwhelming majority of cases also |
| 276 | in a @emph{package} named @code{foo}. But the @code{foo} package | 300 | resides in a @emph{package} named @code{foo}. But the package |
| 277 | might also contain a library named @file{foo-extra.el}. If that | 301 | @code{foo} might also contain a library named @file{foo-extra.el}. If |
| 278 | library is not loaded automatically, you will need a separate | 302 | that library is not loaded automatically, you will need a separate |
| 279 | @code{use-package} declaration to make sure that it is. This manual | 303 | @code{use-package} declaration to make sure that it is loaded when |
| 280 | will often use these terms interchangeably, as this distinction does | 304 | needed. This manual will often use the terms ``package'' and |
| 281 | not usually matter, but you should keep it in mind for the cases when | 305 | ``library'' interchangeably, as this distinction does not usually |
| 282 | it does. | 306 | matter, but you should keep it in mind for the cases when it does. |
| 283 | 307 | ||
| 284 | The details of how and when you should load a package might differ | 308 | The details of how and when you should load a package might differ |
| 285 | from one package to another. When in doubt, refer to the package | 309 | from one package to another. When in doubt, refer to the package |
| @@ -287,17 +311,19 @@ documentation for details. | |||
| 287 | 311 | ||
| 288 | @node Deferring loading | 312 | @node Deferring loading |
| 289 | @section Deferring package loading | 313 | @section Deferring package loading |
| 314 | @cindex deferring loading of package | ||
| 290 | 315 | ||
| 291 | @cindex autoloading packages | 316 | @cindex autoloading packages |
| 292 | @cindex loading lazily | 317 | @cindex loading lazily |
| 318 | @cindex lazy loading of packages | ||
| 293 | In the examples we have seen so far, use-package loads packages every | 319 | In the examples we have seen so far, use-package loads packages every |
| 294 | time you start Emacs, even if that package is never used. That will | 320 | time you start Emacs, even if that package is never used. That will |
| 295 | make starting Emacs slower. use-package therefore tries to set things | 321 | make starting Emacs slower. use-package therefore allows setting |
| 296 | up in such a way that it only loads packages when a command is first | 322 | things up in such a way that packages are only loaded when some of the |
| 297 | used (either with @kbd{M-x} or some key binding). This is based on | 323 | package's commands is first used (either with @kbd{M-x} or via some key |
| 298 | autoloading, a full description of which is outside the scope of this | 324 | binding). This is based on autoloading, a full description of which |
| 299 | manual. @xref{Autoload,,, elisp, GNU Emacs Lisp Reference Manual} for | 325 | is outside the scope of this manual. @xref{Autoload,,, elisp, GNU |
| 300 | the full story. | 326 | Emacs Lisp Reference Manual}, for the full story. |
| 301 | 327 | ||
| 302 | @cindex triggers, for loading packages | 328 | @cindex triggers, for loading packages |
| 303 | Some @code{use-package} keywords provide autoload @dfn{triggers} that | 329 | Some @code{use-package} keywords provide autoload @dfn{triggers} that |
| @@ -320,8 +346,10 @@ this package from being immediately loaded. Here is an example of | |||
| 320 | using @code{:defer} to postpone loading the package @samp{foo}: | 346 | using @code{:defer} to postpone loading the package @samp{foo}: |
| 321 | 347 | ||
| 322 | @lisp | 348 | @lisp |
| 349 | @group | ||
| 323 | (use-package foo | 350 | (use-package foo |
| 324 | :defer t) | 351 | :defer t) |
| 352 | @end group | ||
| 325 | @end lisp | 353 | @end lisp |
| 326 | 354 | ||
| 327 | Using @code{:defer t} by itself like this is rarely useful. | 355 | Using @code{:defer t} by itself like this is rarely useful. |
| @@ -331,21 +359,25 @@ Typically, you would only use it together with a keyword like | |||
| 331 | 359 | ||
| 332 | @subheading Defer loading until idle for N seconds | 360 | @subheading Defer loading until idle for N seconds |
| 333 | 361 | ||
| 334 | You can also give a numeric argument @var{N} to @w{@code{:defer}} to | 362 | @findex :defer@r{, with a numeric argument} |
| 363 | You can also give a numeric argument @var{n} to @w{@code{:defer}} to | ||
| 335 | specify that a package should be loaded (if it hasn't already) after | 364 | specify that a package should be loaded (if it hasn't already) after |
| 336 | Emacs has been idle for @var{N} seconds. For example, use this to | 365 | Emacs has been idle for @var{n} seconds. For example, use the |
| 337 | make use-package load @samp{foo} after 30 seconds of idle time: | 366 | following to make use-package load @samp{foo} after 30 seconds of idle |
| 367 | time: | ||
| 338 | 368 | ||
| 339 | @lisp | 369 | @lisp |
| 370 | @group | ||
| 340 | (use-package foo | 371 | (use-package foo |
| 341 | :defer 30) | 372 | :defer 30) |
| 373 | @end group | ||
| 342 | @end lisp | 374 | @end lisp |
| 343 | 375 | ||
| 344 | @subheading When to use @code{:defer} | 376 | @subheading When to use @code{:defer} |
| 345 | 377 | ||
| 346 | When using autoloading keywords, there is no need to also use | 378 | When using autoloading keywords, there is no need to also use |
| 347 | @code{:defer}. It doesn't hurt anything to add it in this case, | 379 | @code{:defer}. It doesn't hurt to add it in this case, perhaps for |
| 348 | perhaps for extra clarity, but it is redundant. | 380 | extra clarity, but it is redundant. |
| 349 | 381 | ||
| 350 | You should use @code{:defer} to force deferred loading, in cases when | 382 | You should use @code{:defer} to force deferred loading, in cases when |
| 351 | use-package isn't creating any autoloads for you. For example, you | 383 | use-package isn't creating any autoloads for you. For example, you |
| @@ -357,6 +389,8 @@ autoloads already set up. | |||
| 357 | 389 | ||
| 358 | @subheading Making @w{@code{:defer t}} the default | 390 | @subheading Making @w{@code{:defer t}} the default |
| 359 | 391 | ||
| 392 | @cindex defer loading by default | ||
| 393 | @cindex lazy loading by default | ||
| 360 | @vindex use-package-always-defer | 394 | @vindex use-package-always-defer |
| 361 | If you customize the user option @code{use-package-always-defer} to | 395 | If you customize the user option @code{use-package-always-defer} to |
| 362 | non-@code{nil}, the @code{use-package} macro will behave as if | 396 | non-@code{nil}, the @code{use-package} macro will behave as if |
| @@ -366,6 +400,7 @@ individual declarations using either @w{@code{:defer nil}} or | |||
| 366 | 400 | ||
| 367 | @node Forcing loading | 401 | @node Forcing loading |
| 368 | @section Forcing package to load immediately | 402 | @section Forcing package to load immediately |
| 403 | @cindex forcing immediate loading | ||
| 369 | 404 | ||
| 370 | @findex :demand | 405 | @findex :demand |
| 371 | The presence of autoloading trigger keywords can be overridden using | 406 | The presence of autoloading trigger keywords can be overridden using |
| @@ -380,6 +415,8 @@ If you specify both @w{@code{:demand t}} and @w{@code{:defer t}}, the | |||
| 380 | 415 | ||
| 381 | @node Conditional loading | 416 | @node Conditional loading |
| 382 | @section Loading packages conditionally | 417 | @section Loading packages conditionally |
| 418 | @cindex conditional loading | ||
| 419 | @cindex loading conditions | ||
| 383 | 420 | ||
| 384 | @findex :if | 421 | @findex :if |
| 385 | @findex :when | 422 | @findex :when |
| @@ -398,8 +435,10 @@ For example, if you only want to load @samp{foo} in graphical Emacs | |||
| 398 | sessions, you could use the following: | 435 | sessions, you could use the following: |
| 399 | 436 | ||
| 400 | @lisp | 437 | @lisp |
| 438 | @group | ||
| 401 | (use-package foo | 439 | (use-package foo |
| 402 | :if (display-graphic-p)) | 440 | :if (display-graphic-p)) |
| 441 | @end group | ||
| 403 | @end lisp | 442 | @end lisp |
| 404 | 443 | ||
| 405 | @subheading Some common use cases | 444 | @subheading Some common use cases |
| @@ -407,39 +446,46 @@ sessions, you could use the following: | |||
| 407 | Here are some common cases for conditional loading, and how to achieve | 446 | Here are some common cases for conditional loading, and how to achieve |
| 408 | them. | 447 | them. |
| 409 | 448 | ||
| 449 | @c FIXME: Too many redundant examples? E.g., why do we need both an | ||
| 450 | @c example for system-type and window-system? or both of the last 2 | ||
| 451 | @c examples? | ||
| 410 | @itemize | 452 | @itemize |
| 411 | 453 | ||
| 412 | @item Operating system | 454 | @item |
| 455 | Operating system | ||
| 413 | 456 | ||
| 414 | This example loads a package only on GNU/Linux. See the | 457 | The following example loads a package only on GNU/Linux. See the |
| 415 | @code{system-type} docstring for other valid values. | 458 | docstring of @code{system-type} for other valid values. |
| 416 | 459 | ||
| 417 | @lisp | 460 | @lisp |
| 418 | :if (eq system-type 'gnu/linux) | 461 | :if (eq system-type 'gnu/linux) |
| 419 | @end lisp | 462 | @end lisp |
| 420 | 463 | ||
| 421 | @item Window system | 464 | @item |
| 465 | Window system | ||
| 422 | 466 | ||
| 423 | This example loads a package only on macOS and X. See the | 467 | The example below loads a package only on macOS and X. See the |
| 424 | @code{window-system} docstring for valid values. | 468 | docstring of @code{window-system} for valid values. |
| 425 | 469 | ||
| 426 | @lisp | 470 | @lisp |
| 427 | :if (memq window-system '(ns x)) | 471 | :if (memq window-system '(ns x)) |
| 428 | @end lisp | 472 | @end lisp |
| 429 | 473 | ||
| 430 | @item Installed package | 474 | @item |
| 475 | Installed package | ||
| 431 | 476 | ||
| 432 | This example loads a package only when the @samp{foo} package is | 477 | The following example loads a package only when the @samp{foo} package |
| 433 | installed. | 478 | is installed. |
| 434 | 479 | ||
| 435 | @lisp | 480 | @lisp |
| 436 | :if (package-installed-p 'foo) | 481 | :if (package-installed-p 'foo) |
| 437 | @end lisp | 482 | @end lisp |
| 438 | 483 | ||
| 439 | @item Libraries in @code{load-path} | 484 | @item |
| 485 | Libraries in @code{load-path} | ||
| 440 | 486 | ||
| 441 | This example loads a package only when @file{foo.el} is available in | 487 | The example below loads a package only when @file{foo.el} is available |
| 442 | your @code{load-path} (for example, if you installed that file | 488 | in your @code{load-path} (for example, if you installed that file |
| 443 | manually): | 489 | manually): |
| 444 | 490 | ||
| 445 | @lisp | 491 | @lisp |
| @@ -450,38 +496,45 @@ manually): | |||
| 450 | @subheading Making conditional loading affect @code{:preface} and @code{:ensure} | 496 | @subheading Making conditional loading affect @code{:preface} and @code{:ensure} |
| 451 | 497 | ||
| 452 | @cindex conditional loading before @code{:preface} or @code{:ensure} | 498 | @cindex conditional loading before @code{:preface} or @code{:ensure} |
| 453 | If you need to conditionalize a use-package form so that the condition | 499 | If you need to make a use-package form conditional so that the condition |
| 454 | occurs before even @code{:ensure} or @code{:preface}, use @code{when} | 500 | occurs before even @code{:ensure} (@pxref{Install package}) or |
| 455 | around the use-package form itself. For example: | 501 | @code{:preface} (@pxref{Preface keyword}), use @code{when} |
| 502 | around the @code{use-package} form itself. For example: | ||
| 456 | 503 | ||
| 457 | @lisp | 504 | @lisp |
| 505 | @group | ||
| 458 | (when (memq window-system '(mac ns)) | 506 | (when (memq window-system '(mac ns)) |
| 459 | (use-package foo | 507 | (use-package foo |
| 460 | :ensure t)) | 508 | :ensure t)) |
| 509 | @end group | ||
| 461 | @end lisp | 510 | @end lisp |
| 462 | 511 | ||
| 463 | @node Loading sequentially | 512 | @node Loading sequentially |
| 464 | @section Loading packages in sequence | 513 | @section Loading packages in sequence |
| 514 | @cindex loading a package after other packages | ||
| 465 | 515 | ||
| 466 | @findex :after | 516 | @findex :after |
| 467 | Sometimes it only makes sense to configure a package after another one | 517 | Sometimes it only makes sense to configure a package after another one |
| 468 | has been loaded, because certain variables or functions are not in | 518 | has been loaded, because certain variables or functions are not in |
| 469 | scope until that time. This can achieved with the @code{:after} | 519 | scope until that time. This can be achieved with the @code{:after} |
| 470 | keyword, which allows a fairly rich description of the exact | 520 | keyword, which allows a fairly rich description of the exact |
| 471 | conditions when loading should occur. It takes either a symbol | 521 | conditions when loading should occur. The @code{:after} keyword takes |
| 472 | indicating the package name, a list of such symbols, or a list of | 522 | as argument either a symbol indicating the package name, a list of |
| 473 | selectors (see below). | 523 | such symbols, or a list of selectors (see below). |
| 474 | 524 | ||
| 475 | Here is an example of using the @acronym{GNU ELPA} packages hydra, | 525 | Here is an example of using the @acronym{GNU} @acronym{ELPA} packages |
| 476 | ivy, and ivy-hydra. Note that ivy-hydra will always be loaded last: | 526 | @file{hydra}, @file{ivy}, and @file{ivy-hydra}. Note that |
| 527 | @file{ivy-hydra} will always be loaded last: | ||
| 477 | 528 | ||
| 478 | @lisp | 529 | @lisp |
| 479 | (use-package hydra) | 530 | (use-package hydra) |
| 480 | 531 | ||
| 481 | (use-package ivy) | 532 | (use-package ivy) |
| 482 | 533 | ||
| 534 | @group | ||
| 483 | (use-package ivy-hydra | 535 | (use-package ivy-hydra |
| 484 | :after (ivy hydra)) | 536 | :after (ivy hydra)) |
| 537 | @end group | ||
| 485 | @end lisp | 538 | @end lisp |
| 486 | 539 | ||
| 487 | In this case, because the declarations are evaluated in the order they | 540 | In this case, because the declarations are evaluated in the order they |
| @@ -494,11 +547,12 @@ moving things around in your init file is less likely to break things. | |||
| 494 | 547 | ||
| 495 | @subheading Using @code{:after} selectors | 548 | @subheading Using @code{:after} selectors |
| 496 | 549 | ||
| 497 | @findex :all (with :after) | 550 | @findex :all@r{, (with @code{:after})} |
| 498 | @findex :any (with :after) | 551 | @findex :any@r{, (with @code{:after})} |
| 552 | @cindex list of selectors, for @code{:after} | ||
| 499 | The @code{:after} keyword also accepts a list of selectors. By | 553 | The @code{:after} keyword also accepts a list of selectors. By |
| 500 | default, @code{:after (foo bar)} is the same as @w{@code{:after (:all | 554 | default, @w{@code{:after (foo bar)}} is the same as @w{@code{:after |
| 501 | foo bar)}}, meaning that loading of the given package will not happen | 555 | (:all foo bar)}}, meaning that loading of the given package will not happen |
| 502 | until both @code{foo} and @code{bar} have been loaded. Here are some | 556 | until both @code{foo} and @code{bar} have been loaded. Here are some |
| 503 | of the other possibilities: | 557 | of the other possibilities: |
| 504 | 558 | ||
| @@ -510,22 +564,25 @@ of the other possibilities: | |||
| 510 | :after (:any (:all foo bar) (:all baz quux)) | 564 | :after (:any (:all foo bar) (:all baz quux)) |
| 511 | @end verbatim | 565 | @end verbatim |
| 512 | 566 | ||
| 513 | When you nest selectors, such as @code{(:any (:all foo bar) (:all baz | 567 | When you nest selectors, such as in @w{@code{(:any (:all foo bar) |
| 514 | quux))}, it means that the package will be loaded when either both | 568 | (:all baz quux))}}, it means that the package will be loaded when |
| 515 | @code{foo} and @code{bar} have been loaded, or when both @code{baz} | 569 | either both @code{foo} and @code{bar} have been loaded, or when both |
| 516 | and @code{quux} have been loaded. | 570 | @code{baz} and @code{quux} have been loaded. |
| 517 | 571 | ||
| 572 | @cindex @code{use-package-always-defer}, with @code{:after} | ||
| 518 | Pay attention when setting @code{use-package-always-defer} to a | 573 | Pay attention when setting @code{use-package-always-defer} to a |
| 519 | non-@code{nil} value, and also using the @code{:after} keyword. In | 574 | non-@code{nil} value, and also using the @code{:after} keyword. In |
| 520 | this case, you will need to specify how the declared package is to be | 575 | that case, you will need to specify how the declared package is to be |
| 521 | loaded: for example, by some @code{:bind}. If you are not using one | 576 | loaded: for example, by some @code{:bind} (@pxref{Global |
| 522 | of the keywords that registers autoloads, such as @code{:bind} or | 577 | keybindings}). If you are not using one of the keywords that |
| 523 | @code{:hook}, and your package manager does not provide autoloads, it | 578 | registers autoloads, such as @code{:bind} or @code{:hook} |
| 524 | is possible that your package will never be loaded if you do not add | 579 | (@pxref{Hooks}), and your package manager does not provide autoloads, |
| 525 | @code{:demand t} to those declarations. | 580 | it is possible that your package will never be loaded if you do not |
| 581 | add @code{:demand t} to those declarations. | ||
| 526 | 582 | ||
| 527 | @node Load dependencies | 583 | @node Load dependencies |
| 528 | @section Prevent loading if dependencies are missing | 584 | @section Prevent loading if dependencies are missing |
| 585 | @cindex prevent loading package if dependencies are missing | ||
| 529 | 586 | ||
| 530 | @findex :requires | 587 | @findex :requires |
| 531 | While the @code{:after} keyword delays loading until the dependencies | 588 | While the @code{:after} keyword delays loading until the dependencies |
| @@ -536,22 +593,29 @@ loads the package if the dependencies are not available when the | |||
| 536 | 'foo)}} evaluates to a non-@code{nil} value. For example: | 593 | 'foo)}} evaluates to a non-@code{nil} value. For example: |
| 537 | 594 | ||
| 538 | @lisp | 595 | @lisp |
| 596 | @group | ||
| 539 | (use-package abbrev | 597 | (use-package abbrev |
| 540 | :requires foo) | 598 | :requires foo) |
| 599 | @end group | ||
| 541 | @end lisp | 600 | @end lisp |
| 542 | 601 | ||
| 602 | @noindent | ||
| 543 | This is the same as: | 603 | This is the same as: |
| 544 | 604 | ||
| 545 | @lisp | 605 | @lisp |
| 606 | @group | ||
| 546 | (use-package abbrev | 607 | (use-package abbrev |
| 547 | :if (featurep 'foo)) | 608 | :if (featurep 'foo)) |
| 609 | @end group | ||
| 548 | @end lisp | 610 | @end lisp |
| 549 | 611 | ||
| 550 | As a convenience, a list of such packages may be specified: | 612 | As a convenience, a list of such packages may be specified: |
| 551 | 613 | ||
| 552 | @lisp | 614 | @lisp |
| 615 | @group | ||
| 553 | (use-package abbrev | 616 | (use-package abbrev |
| 554 | :requires (foo bar baz)) | 617 | :requires (foo bar baz)) |
| 618 | @end group | ||
| 555 | @end lisp | 619 | @end lisp |
| 556 | 620 | ||
| 557 | For more complex logic, such as that supported by @code{:after}, | 621 | For more complex logic, such as that supported by @code{:after}, |
| @@ -559,64 +623,81 @@ simply use @code{:if} and the appropriate Lisp expression. | |||
| 559 | 623 | ||
| 560 | @node Load path | 624 | @node Load path |
| 561 | @section Setting a custom @code{load-path} | 625 | @section Setting a custom @code{load-path} |
| 626 | @cindex custom @code{load-path} for loading a package | ||
| 627 | @cindex @code{load-path}, add directories for loading a package | ||
| 562 | 628 | ||
| 563 | @findex :load-path | 629 | @findex :load-path |
| 564 | If a package resides in some directory that is not in your | 630 | If a package resides in some directory that is not in your |
| 565 | @code{load-path}, use the @code{:load-path} keyword to add it. It | 631 | @code{load-path}, use the @code{:load-path} keyword to add it. It |
| 566 | takes a symbol, a function, a string or a list of strings. If the | 632 | takes as argument a symbol, a function, a string or a list of strings. |
| 567 | path is relative, it is expanded within @code{user-emacs-directory}. | 633 | If a directory is specified as a relative file name, it is expanded |
| 634 | relative to @code{user-emacs-directory}. | ||
| 568 | 635 | ||
| 569 | For example: | 636 | For example: |
| 570 | 637 | ||
| 571 | @lisp | 638 | @lisp |
| 639 | @group | ||
| 572 | (use-package ess-site | 640 | (use-package ess-site |
| 573 | :load-path "site-lisp/ess/lisp/" | 641 | :load-path "site-lisp/ess/lisp/" |
| 574 | :commands R) | 642 | :commands R) |
| 643 | @end group | ||
| 575 | @end lisp | 644 | @end lisp |
| 576 | 645 | ||
| 577 | Note that when using a symbol or a function to provide a dynamically | 646 | Note that when using a symbol or a function to provide a dynamically |
| 578 | generated list of paths, you must inform the byte-compiler of this | 647 | generated list of directories, you must inform the byte-compiler of this |
| 579 | definition so that the value is available at byte-compilation time. | 648 | definition so that the value is available at byte-compilation time. |
| 580 | This is done by using the special form @code{eval-and-compile} (as | 649 | This is done by using the special form @code{eval-and-compile} (as |
| 581 | opposed to @code{eval-when-compile}). Further, this value is fixed at | 650 | opposed to @code{eval-when-compile}, @pxref{Eval During Compile,,, |
| 651 | elisp, GNU Emacs Lisp Reference Manual}). Further, this value is fixed at | ||
| 582 | whatever was determined during compilation, to avoid looking up the | 652 | whatever was determined during compilation, to avoid looking up the |
| 583 | same information again on each startup. For example: | 653 | same information again on each startup. For example: |
| 584 | 654 | ||
| 655 | @c FIXME: the below should use shell-command-to-string, surely? | ||
| 585 | @lisp | 656 | @lisp |
| 657 | @group | ||
| 586 | (eval-and-compile | 658 | (eval-and-compile |
| 587 | (defun ess-site-load-path () | 659 | (defun ess-site-load-path () |
| 588 | (shell-command "find ~ -path ess/lisp"))) | 660 | (shell-command "find ~ -path ess/lisp"))) |
| 661 | @end group | ||
| 589 | 662 | ||
| 663 | @group | ||
| 590 | (use-package ess-site | 664 | (use-package ess-site |
| 591 | :load-path (lambda () (list (ess-site-load-path))) | 665 | :load-path (lambda () (list (ess-site-load-path))) |
| 592 | :commands R) | 666 | :commands R) |
| 667 | @end group | ||
| 593 | @end lisp | 668 | @end lisp |
| 594 | 669 | ||
| 595 | @node Manual autoloads | 670 | @node Manual autoloads |
| 596 | @section Setting up autoloads manually | 671 | @section Setting up autoloads manually |
| 672 | @cindex autoloads for packages, setting up manually | ||
| 673 | @cindex package autoloads, setting up manually | ||
| 597 | 674 | ||
| 598 | @findex :commands | 675 | @findex :commands |
| 599 | @findex :autoload | 676 | @findex :autoload |
| 600 | To autoload an interactive command, use the @code{:commands} keyword. | 677 | To autoload an interactive command, use the @code{:commands} keyword. |
| 601 | When you use the @code{:commands} keyword, it creates autoloads for | 678 | When you use the @code{:commands} keyword, it creates autoloads for |
| 602 | those commands (which defers loading of the module until they are | 679 | those commands (which defers loading of the module until those commands are |
| 603 | used). The @code{:commands} keyword takes either a symbol or a list | 680 | used). The @code{:commands} keyword takes either a symbol or a list |
| 604 | of symbols. | 681 | of symbols as its argument. |
| 605 | 682 | ||
| 606 | The @code{:autoload} keyword works like @code{:commands}, but is used | 683 | The @code{:autoload} keyword works like @code{:commands}, but is used |
| 607 | to autoload non-interactive functions. Here is an example: | 684 | to autoload non-interactive functions. Here is an example: |
| 608 | 685 | ||
| 609 | @lisp | 686 | @lisp |
| 687 | @group | ||
| 610 | (use-package org-crypt | 688 | (use-package org-crypt |
| 611 | :autoload org-crypt-use-before-save-magic) | 689 | :autoload org-crypt-use-before-save-magic) |
| 690 | @end group | ||
| 612 | @end lisp | 691 | @end lisp |
| 613 | 692 | ||
| 614 | @c ---------------------------------------------------------------------------- | 693 | @c ---------------------------------------------------------------------------- |
| 615 | @node Configuring Packages | 694 | @node Configuring Packages |
| 616 | @chapter Configuring Packages | 695 | @chapter Configuring Packages |
| 696 | @cindex configure packages using @code{use-package} | ||
| 697 | @cindex customize package configuration | ||
| 617 | 698 | ||
| 618 | This chapter describes the various keywords provided by | 699 | This chapter describes the various keywords provided by |
| 619 | @code{use-package} that helps you configure packages. | 700 | @code{use-package} that help you configure packages. |
| 620 | 701 | ||
| 621 | @menu | 702 | @menu |
| 622 | * Lisp Configuration:: Using Lisp to configure packages. | 703 | * Lisp Configuration:: Using Lisp to configure packages. |
| @@ -631,6 +712,7 @@ This chapter describes the various keywords provided by | |||
| 631 | 712 | ||
| 632 | @node Lisp Configuration | 713 | @node Lisp Configuration |
| 633 | @section Using Lisp code for configuring packages | 714 | @section Using Lisp code for configuring packages |
| 715 | @cindex configure package using Lisp forms | ||
| 634 | 716 | ||
| 635 | The most general way to add customizations are the @code{:preface}, | 717 | The most general way to add customizations are the @code{:preface}, |
| 636 | @code{:init}, and @code{:config} keywords. They all accept one or | 718 | @code{:init}, and @code{:config} keywords. They all accept one or |
| @@ -657,19 +739,22 @@ function and variable definitions that will: | |||
| 657 | 739 | ||
| 658 | @enumerate | 740 | @enumerate |
| 659 | @item | 741 | @item |
| 660 | Make the byte-compiler happy. It will not complain about functions | 742 | @c FIXME: ``within a guard block''? what's that?? |
| 743 | Make the byte-compiler happy: it will not complain about functions | ||
| 661 | whose definitions are unknown because you have them within a guard | 744 | whose definitions are unknown because you have them within a guard |
| 662 | block. | 745 | block. |
| 663 | 746 | ||
| 664 | @item | 747 | @item |
| 665 | Define code that can be used in an @code{:if} test. | 748 | Define functions and variables that will be used in an @code{:if} |
| 749 | test. | ||
| 666 | @end enumerate | 750 | @end enumerate |
| 667 | 751 | ||
| 668 | Note that whatever is specified within @code{:preface} is evaluated | 752 | Note that whatever is specified within @code{:preface} is evaluated |
| 669 | both at load time and at byte-compilation time, in order to ensure | 753 | both at load time and at byte-compilation time, in order to ensure |
| 670 | that definitions are seen by both the Lisp evaluator and the | 754 | that definitions are seen by both the Lisp evaluator and the |
| 671 | byte-compiler. Therefore, you should avoid having any side-effects in | 755 | byte-compiler. Therefore, you should avoid having any side-effects in |
| 672 | your preface, and restrict it to symbol declarations and definitions. | 756 | your @code{:preface} forms, and restrict them to symbol declarations |
| 757 | and definitions. | ||
| 673 | 758 | ||
| 674 | @node Init keyword | 759 | @node Init keyword |
| 675 | @subsection @code{:init} is evaluated before loading package | 760 | @subsection @code{:init} is evaluated before loading package |
| @@ -677,10 +762,11 @@ your preface, and restrict it to symbol declarations and definitions. | |||
| 677 | @findex :init | 762 | @findex :init |
| 678 | The @code{:init} section is evaluated just before the package is | 763 | The @code{:init} section is evaluated just before the package is |
| 679 | loaded. Note that the @code{:init} form is run unconditionally -- | 764 | loaded. Note that the @code{:init} form is run unconditionally -- |
| 680 | even if the @code{foo} package happens to not exist on your system. | 765 | even if the package happens to not exist on your system. You must |
| 681 | You must therefore remember to restrict @code{:init} code to only what | 766 | therefore remember to restrict @code{:init} code to what would succeed |
| 682 | would succeed either way. @code{:init} also always happens before | 767 | either way; put the rest in the @code{:config} section. @code{:init} |
| 683 | package load, whether @code{:config} has been deferred or not. | 768 | also always happens before package load, whether @code{:config} has |
| 769 | been deferred or not. | ||
| 684 | 770 | ||
| 685 | @node Config keyword | 771 | @node Config keyword |
| 686 | @subsection @code{:config} is evaluated after loading package | 772 | @subsection @code{:config} is evaluated after loading package |
| @@ -698,58 +784,68 @@ Emacs start as quickly as possible. | |||
| 698 | 784 | ||
| 699 | @node Best practices | 785 | @node Best practices |
| 700 | @subheading When to use @code{:preface}, @code{:config} and @code{:init}? | 786 | @subheading When to use @code{:preface}, @code{:config} and @code{:init}? |
| 787 | @cindex tips for using @code{:preface}, @code{:config}, @code{:init} | ||
| 701 | 788 | ||
| 702 | Where possible, it is better to avoid @code{:preface}, @code{:config} | 789 | Where possible, it is better to avoid @code{:preface}, @code{:config} |
| 703 | and @code{:init}. Instead, prefer autoloading keywords such as | 790 | and @code{:init}. Instead, prefer autoloading keywords such as |
| 704 | @code{:bind}, @code{:hook}, and @code{:mode}, as they will take care | 791 | @code{:bind} (@pxref{Key bindings}), @code{:hook} (@pxref{Hooks}), and |
| 792 | @code{:mode} (@pxref{Modes and interpreters}), as they will take care | ||
| 705 | of setting up autoloads for you without any need for boilerplate code. | 793 | of setting up autoloads for you without any need for boilerplate code. |
| 706 | For example, consider the following declaration: | 794 | For example, consider the following declaration: |
| 707 | 795 | ||
| 708 | @lisp | 796 | @lisp |
| 797 | @group | ||
| 709 | (use-package foo | 798 | (use-package foo |
| 710 | :init | 799 | :init |
| 711 | (add-hook 'some-hook 'foo-mode)) | 800 | (add-hook 'some-hook 'foo-mode)) |
| 801 | @end group | ||
| 712 | @end lisp | 802 | @end lisp |
| 713 | 803 | ||
| 804 | @noindent | ||
| 714 | This has two problems. First, it will unconditionally load the | 805 | This has two problems. First, it will unconditionally load the |
| 715 | package @samp{foo} on startup, which will make things slower. You can | 806 | package @samp{foo} on startup, which will make things slower. You can |
| 716 | fix this by adding @code{:defer t}: | 807 | fix this by adding @w{@code{:defer t}}: |
| 717 | 808 | ||
| 718 | @lisp | 809 | @lisp |
| 810 | @group | ||
| 719 | (use-package foo | 811 | (use-package foo |
| 720 | :defer t | 812 | :defer t |
| 721 | :init | 813 | :init |
| 722 | (add-hook 'some-hook 'foo-mode)) | 814 | (add-hook 'some-hook 'foo-mode)) |
| 815 | @end group | ||
| 723 | @end lisp | 816 | @end lisp |
| 724 | 817 | ||
| 818 | @noindent | ||
| 725 | This is better, as @samp{foo} is now only loaded when it is actually | 819 | This is better, as @samp{foo} is now only loaded when it is actually |
| 726 | needed (that is, when the hook @samp{some-hook} is run). | 820 | needed (that is, when the hook @samp{some-hook} is run). |
| 727 | 821 | ||
| 728 | The second problem is that there is a lot of boilerplate that you have | 822 | The second problem is that there is a lot of boilerplate that you have |
| 729 | to write. In this case, it might not be so bad, but avoiding that was | 823 | to write. In this case, it might not be so bad, but avoiding that was |
| 730 | what use-package was made to avoid. The better option in this case is | 824 | what use-package was made to allow. The better option in this case is |
| 731 | therefore to use @code{:hook} (@xref{Hooks}), which also implies | 825 | therefore to use @code{:hook} (@pxref{Hooks}), which also implies |
| 732 | @w{@code{:defer t}}. The above is thereby reduced down to: | 826 | @w{@code{:defer t}}. The above is thereby reduced down to: |
| 733 | 827 | ||
| 734 | @lisp | 828 | @lisp |
| 829 | @group | ||
| 735 | (use-package foo | 830 | (use-package foo |
| 736 | :hook some-hook) | 831 | :hook some-hook) |
| 832 | @end group | ||
| 737 | @end lisp | 833 | @end lisp |
| 738 | 834 | ||
| 739 | use-package will set up autoloading for you, and your Emacs startup | 835 | Now use-package will set up autoloading for you, and your Emacs |
| 740 | time will not suffer one bit. | 836 | startup time will not suffer one bit. |
| 741 | 837 | ||
| 742 | @node Key bindings | 838 | @node Key bindings |
| 743 | @section Key bindings | 839 | @section Key bindings |
| 744 | 840 | ||
| 745 | @cindex :bind | 841 | @cindex binding keys for package commands |
| 746 | @cindex binding keys | 842 | @cindex key bindings for package commands |
| 747 | @cindex key bindings | 843 | One common thing to do when loading a package is to bind keys to |
| 748 | One common thing to do when loading a package is to bind a key to | ||
| 749 | commands within that module. Without use-package, this would be done | 844 | commands within that module. Without use-package, this would be done |
| 750 | using a combination of @code{keymap-local-set}, | 845 | using a combination of @code{keymap-local-set}, |
| 751 | @code{keymap-global-set} and various autoloads. With use-package, you | 846 | @code{keymap-global-set} and various autoloads. With use-package, you |
| 752 | can simplify this using the @code{:bind} keyword. | 847 | can simplify this using the @code{:bind} keyword, as described in this |
| 848 | section. | ||
| 753 | 849 | ||
| 754 | @menu | 850 | @menu |
| 755 | * Global keybindings:: Bindings you can use anywhere. | 851 | * Global keybindings:: Bindings you can use anywhere. |
| @@ -761,25 +857,29 @@ can simplify this using the @code{:bind} keyword. | |||
| 761 | 857 | ||
| 762 | @node Global keybindings | 858 | @node Global keybindings |
| 763 | @subsection Global keybindings | 859 | @subsection Global keybindings |
| 860 | @cindex global keybindings | ||
| 764 | 861 | ||
| 765 | @findex :bind | 862 | @findex :bind |
| 766 | To bind keys globally, the @code{:bind} keyword takes either a single | 863 | To bind keys globally, the @code{:bind} keyword takes as its argument |
| 767 | cons or a list of conses. Every cons has the form @code{(@var{key} | 864 | either a single cons or a list of conses. Each cons has the form |
| 768 | . @var{command}}, where @var{key} is a string indicating the key to | 865 | @w{@code{(@var{key} . @var{command})}}, where @var{key} is a string |
| 769 | bind, and @var{command} is the name of a command (a symbol). The | 866 | indicating the key to bind, and @var{command} is the name of a command |
| 770 | syntax for the keys is similar to the syntax used by the @code{kbd} | 867 | (a symbol). The syntax for the keys is similar to the syntax used by |
| 771 | function (@pxref{Init Rebinding,,, emacs, GNU Emacs Manual} for more | 868 | the @code{kbd} function (see @ref{Init Rebinding,,, emacs, GNU Emacs |
| 772 | information). | 869 | Manual}, for more information). |
| 773 | 870 | ||
| 774 | @subheading Using @code{:bind} with a single cons | 871 | @subheading Using @code{:bind} with a single cons |
| 775 | 872 | ||
| 776 | Here is an example of using a single cons: | 873 | Here is an example of using a single cons: |
| 777 | 874 | ||
| 778 | @lisp | 875 | @lisp |
| 876 | @group | ||
| 779 | (use-package ace-jump-mode | 877 | (use-package ace-jump-mode |
| 780 | :bind ("C-." . ace-jump-mode)) | 878 | :bind ("C-." . ace-jump-mode)) |
| 879 | @end group | ||
| 781 | @end lisp | 880 | @end lisp |
| 782 | 881 | ||
| 882 | @noindent | ||
| 783 | This does two things: first, it creates an autoload for the | 883 | This does two things: first, it creates an autoload for the |
| 784 | @code{ace-jump-mode} command and defers loading of the | 884 | @code{ace-jump-mode} command and defers loading of the |
| 785 | @code{ace-jump-mode} package until you actually use it. Second, it | 885 | @code{ace-jump-mode} package until you actually use it. Second, it |
| @@ -790,73 +890,100 @@ binds the key @code{C-.} to that command globally. | |||
| 790 | Here is an example of using @code{:bind} with a list of conses: | 890 | Here is an example of using @code{:bind} with a list of conses: |
| 791 | 891 | ||
| 792 | @lisp | 892 | @lisp |
| 893 | @group | ||
| 793 | (use-package hi-lock | 894 | (use-package hi-lock |
| 794 | :bind (("M-o l" . highlight-lines-matching-regexp) | 895 | :bind (("M-o l" . highlight-lines-matching-regexp) |
| 795 | ("M-o r" . highlight-regexp) | 896 | ("M-o r" . highlight-regexp) |
| 796 | ("M-o w" . highlight-phrase))) | 897 | ("M-o w" . highlight-phrase))) |
| 898 | @end group | ||
| 797 | @end lisp | 899 | @end lisp |
| 798 | 900 | ||
| 901 | @noindent | ||
| 902 | This binds the three key sequences to the corresponding commands. | ||
| 903 | |||
| 799 | @subheading Using special keys | 904 | @subheading Using special keys |
| 905 | @cindex binding function keys with @code{:bind} | ||
| 906 | @cindex @code{:bind}, and function keys | ||
| 800 | 907 | ||
| 908 | @c FIXME: TAB vs [tab] -- is letter-case important? In general, these | ||
| 909 | @c are two different keys: one is an ASCII character, the other a | ||
| 910 | @c function key on GUI frames. | ||
| 801 | Inside key strings, special keys like @kbd{TAB} or @kbd{F1}--@kbd{F12} | 911 | Inside key strings, special keys like @kbd{TAB} or @kbd{F1}--@kbd{F12} |
| 802 | have to be written inside angle brackets, e.g. @code{"C-<up>"}. | 912 | have to be written inside angle brackets, e.g., @code{"C-<up>"}. |
| 913 | @c FIXME: ``Some combinations''? which ones? | ||
| 803 | Standalone special keys (and some combinations) can be written in | 914 | Standalone special keys (and some combinations) can be written in |
| 804 | square brackets, e.g.@ @code{[tab]} instead of @code{"<tab>"}. | 915 | square brackets, e.g.@ @code{[tab]} instead of @code{"<tab>"}. |
| 805 | 916 | ||
| 806 | Examples: | 917 | Examples: |
| 807 | 918 | ||
| 808 | @lisp | 919 | @lisp |
| 920 | @group | ||
| 809 | (use-package helm | 921 | (use-package helm |
| 810 | :bind (("M-x" . helm-M-x) | 922 | :bind (("M-x" . helm-M-x) |
| 811 | ("M-<f5>" . helm-find-files) | 923 | ("M-<f5>" . helm-find-files) |
| 812 | ([f10] . helm-buffers-list) | 924 | ([f10] . helm-buffers-list) |
| 813 | ([S-f10] . helm-recentf))) | 925 | ([S-f10] . helm-recentf))) |
| 926 | @end group | ||
| 814 | @end lisp | 927 | @end lisp |
| 815 | 928 | ||
| 816 | @subheading Remapping commands | 929 | @subheading Remapping commands |
| 930 | @cindex remapping commands with @code{:bind} | ||
| 931 | @cindex @code{:bind}, and remapping of commands | ||
| 817 | 932 | ||
| 818 | Remapping commands with @code{:bind} and @code{bind-key} works as | 933 | Remapping of commands with @code{:bind} and @code{bind-key} works as |
| 819 | expected, because when the binding is a vector, it is passed straight | 934 | expected, because when the binding is a vector, it is passed straight |
| 820 | to @code{define-key}. @xref{Remapping Commands,,, elisp, GNU Emacs | 935 | to @code{define-key}. @xref{Remapping Commands,,, elisp, GNU Emacs |
| 821 | Lisp Reference Manual}) for more information about command remapping. | 936 | Lisp Reference Manual}), for more information about command remapping. |
| 822 | For example, the following declaration will rebind | 937 | For example, the following declaration will rebind |
| 823 | @code{fill-paragraph} (bound to @kbd{M-q} by default) to | 938 | @code{fill-paragraph} (bound to @kbd{M-q} by default) to |
| 824 | @code{unfill-toggle}: | 939 | @code{unfill-toggle}: |
| 825 | 940 | ||
| 826 | @lisp | 941 | @lisp |
| 942 | @group | ||
| 827 | (use-package unfill | 943 | (use-package unfill |
| 828 | :bind ([remap fill-paragraph] . unfill-toggle)) | 944 | :bind ([remap fill-paragraph] . unfill-toggle)) |
| 945 | @end group | ||
| 829 | @end lisp | 946 | @end lisp |
| 830 | 947 | ||
| 948 | @c FIXME: Should the below be an Appendix? | ||
| 831 | @subheading What @code{:bind} does behind the scenes | 949 | @subheading What @code{:bind} does behind the scenes |
| 950 | @cindex @code{:bind}, internals | ||
| 832 | 951 | ||
| 833 | To understand what @code{:bind} does behind the scenes, it might be | 952 | To understand what @code{:bind} does behind the scenes, it might be |
| 834 | useful to consider an example: | 953 | useful to consider an example: |
| 835 | 954 | ||
| 836 | @lisp | 955 | @lisp |
| 956 | @group | ||
| 837 | (use-package ace-jump-mode | 957 | (use-package ace-jump-mode |
| 838 | :bind ("C-." . ace-jump-mode)) | 958 | :bind ("C-." . ace-jump-mode)) |
| 959 | @end group | ||
| 839 | @end lisp | 960 | @end lisp |
| 840 | 961 | ||
| 962 | @noindent | ||
| 841 | This could be expressed in a much more verbose way with the | 963 | This could be expressed in a much more verbose way with the |
| 842 | @code{:commands} and @code{:init} keywords. | 964 | @code{:commands} and @code{:init} keywords: |
| 843 | 965 | ||
| 844 | @lisp | 966 | @lisp |
| 967 | @group | ||
| 845 | (use-package ace-jump-mode | 968 | (use-package ace-jump-mode |
| 846 | :commands ace-jump-mode | 969 | :commands ace-jump-mode |
| 847 | :init | 970 | :init |
| 848 | (bind-key "C-." 'ace-jump-mode)) | 971 | (bind-key "C-." 'ace-jump-mode)) |
| 972 | @end group | ||
| 849 | @end lisp | 973 | @end lisp |
| 850 | 974 | ||
| 975 | @noindent | ||
| 851 | Without using even the @code{:commands} keyword, we could also write | 976 | Without using even the @code{:commands} keyword, we could also write |
| 852 | the above like so: | 977 | the above like so: |
| 853 | 978 | ||
| 854 | @lisp | 979 | @lisp |
| 980 | @group | ||
| 855 | (use-package ace-jump-mode | 981 | (use-package ace-jump-mode |
| 856 | :defer t | 982 | :defer t |
| 857 | :init | 983 | :init |
| 858 | (autoload 'ace-jump-mode "ace-jump-mode" nil t) | 984 | (autoload 'ace-jump-mode "ace-jump-mode" nil t) |
| 859 | (bind-key "C-." 'ace-jump-mode)) | 985 | (bind-key "C-." 'ace-jump-mode)) |
| 986 | @end group | ||
| 860 | @end lisp | 987 | @end lisp |
| 861 | 988 | ||
| 862 | Although these three forms are all equivalent, the first form is | 989 | Although these three forms are all equivalent, the first form is |
| @@ -864,28 +991,33 @@ usually the best, as it will save some typing. | |||
| 864 | 991 | ||
| 865 | @node Binding in keymaps | 992 | @node Binding in keymaps |
| 866 | @subsection Key bindings in local keymaps | 993 | @subsection Key bindings in local keymaps |
| 994 | @cindex local keybindings | ||
| 867 | 995 | ||
| 868 | @findex :map, inside :bind | 996 | @findex :map@r{, inside} :bind |
| 869 | Slightly different from binding a key to a keymap, is binding a key | 997 | Slightly different from binding a key to a keymap, is binding a key |
| 870 | @emph{within} a local keymap that only exists after the package is | 998 | @emph{within} a local keymap that only exists after the package is |
| 871 | loaded. @code{use-package} supports this with a @code{:map} modifier, | 999 | loaded. @code{use-package} supports this with a @code{:map} modifier, |
| 872 | taking the local keymap to bind to: | 1000 | taking the local keymap to bind to: |
| 873 | 1001 | ||
| 874 | @lisp | 1002 | @lisp |
| 1003 | @group | ||
| 875 | (use-package helm | 1004 | (use-package helm |
| 876 | :bind (:map helm-command-map | 1005 | :bind (:map helm-command-map |
| 877 | ("C-c h" . helm-execute-persistent-action))) | 1006 | ("C-c h" . helm-execute-persistent-action))) |
| 1007 | @end group | ||
| 878 | @end lisp | 1008 | @end lisp |
| 879 | 1009 | ||
| 880 | The effect of this statement is to wait until @code{helm} has loaded, | 1010 | @noindent |
| 881 | and then to bind the key @code{C-c h} to | 1011 | The effect of this is to wait until @code{helm} has loaded, and then |
| 1012 | to bind the key sequence @kbd{C-c h} to | ||
| 882 | @code{helm-execute-persistent-action} within Helm's local keymap, | 1013 | @code{helm-execute-persistent-action} within Helm's local keymap, |
| 883 | @code{helm-command-map}. | 1014 | @code{helm-command-map}. |
| 884 | 1015 | ||
| 885 | Multiple uses of @code{:map} may be specified. Any binding occurring | 1016 | Multiple uses of @code{:map} may be specified. Any binding occurring |
| 886 | before the first use of @code{:map} are applied to the global keymap: | 1017 | before the first use of @code{:map} are applied to the global keymap: |
| 887 | 1018 | ||
| 888 | @lisp | 1019 | @lisp |
| 1020 | @group | ||
| 889 | (use-package term | 1021 | (use-package term |
| 890 | :bind (("C-c t" . term) | 1022 | :bind (("C-c t" . term) |
| 891 | :map term-mode-map | 1023 | :map term-mode-map |
| @@ -895,21 +1027,23 @@ before the first use of @code{:map} are applied to the global keymap: | |||
| 895 | ("M-o" . other-window) | 1027 | ("M-o" . other-window) |
| 896 | ("M-p" . term-send-up) | 1028 | ("M-p" . term-send-up) |
| 897 | ("M-n" . term-send-down))) | 1029 | ("M-n" . term-send-down))) |
| 1030 | @end group | ||
| 898 | @end lisp | 1031 | @end lisp |
| 899 | 1032 | ||
| 900 | @node Binding to a keymap | 1033 | @node Binding to a keymap |
| 901 | @subsection Binding to keymaps | 1034 | @subsection Binding to keymaps |
| 1035 | @cindex binding keys to keymaps | ||
| 902 | 1036 | ||
| 903 | @findex :bind-keymap, inside :bind | 1037 | @findex :bind-keymap |
| 904 | Normally @code{:bind} expects that commands are functions that will be | 1038 | Normally @code{:bind} expects that commands are functions that will be |
| 905 | autoloaded from the given package. However, this does not work if one of | 1039 | autoloaded from the given package. However, this does not work if one of |
| 906 | those commands is actually a keymap, since keymaps are not functions, | 1040 | those commands is actually a keymap, since keymaps are not functions, |
| 907 | and cannot be autoloaded using the built-in @code{autoload} function. | 1041 | and cannot be autoloaded using the built-in @code{autoload} function. |
| 908 | 1042 | ||
| 909 | To handle this case, @code{use-package} offers a special, limited | 1043 | To handle this case, @code{use-package} offers a special, limited |
| 910 | variant of @code{:bind} called @code{:bind-keymap}. The only difference | 1044 | variant of @code{:bind} called @code{:bind-keymap}. The only difference |
| 911 | is that the ``commands'' bound to by @code{:bind-keymap} must be keymaps | 1045 | is that the ``commands'' bound to by @code{:bind-keymap} must be keymaps |
| 912 | defined in the package, rather than command functions. This is handled | 1046 | defined in the package, rather than interactive functions. This is handled |
| 913 | behind the scenes by generating custom code that loads the package | 1047 | behind the scenes by generating custom code that loads the package |
| 914 | containing the keymap, and then re-executes your keypress after the | 1048 | containing the keymap, and then re-executes your keypress after the |
| 915 | first load, to reinterpret that keypress as a prefix key. | 1049 | first load, to reinterpret that keypress as a prefix key. |
| @@ -917,31 +1051,35 @@ first load, to reinterpret that keypress as a prefix key. | |||
| 917 | For example: | 1051 | For example: |
| 918 | 1052 | ||
| 919 | @lisp | 1053 | @lisp |
| 1054 | @group | ||
| 920 | (use-package foo | 1055 | (use-package foo |
| 921 | :bind-keymap ("C-c p" . foo-command-map)) | 1056 | :bind-keymap ("C-c p" . foo-command-map)) |
| 1057 | @end group | ||
| 922 | @end lisp | 1058 | @end lisp |
| 923 | 1059 | ||
| 924 | @node Binding to repeat-maps | 1060 | @node Binding to repeat-maps |
| 925 | @subsection Binding to repeat-maps | 1061 | @subsection Binding to repeat-maps |
| 1062 | @cindex keybinding for @code{repeat-mode} keymaps | ||
| 926 | 1063 | ||
| 927 | @findex :repeat-map, inside :bind | 1064 | @findex :repeat-map@r{, inside} :bind |
| 928 | @cindex repeat-mode and use-package, using | 1065 | @cindex @code{repeat-mode} and use-package, using |
| 929 | A special case of binding within a local keymap is when that keymap is | 1066 | A special case of binding within a local keymap is when that keymap is |
| 930 | used by @code{repeat-mode} @pxref{Repeating,,, emacs, GNU Emacs | 1067 | used by @code{repeat-mode} (@pxref{Repeating,,, emacs, GNU Emacs |
| 931 | Manual}. These keymaps are usually defined specifically for | 1068 | Manual}). These keymaps are usually defined specifically for |
| 932 | this. Using the @code{:repeat-map} keyword, and passing it a name for | 1069 | this. Using the @code{:repeat-map} keyword, and passing it a name for |
| 933 | the map it defines, will bind all following keys inside that map, and | 1070 | the map it defines, will bind all the following keys inside that map, and |
| 934 | (by default) set the @code{repeat-map} property of each bound command | 1071 | (by default) set the @code{repeat-map} property of each bound command |
| 935 | to that map. | 1072 | to that map. |
| 936 | 1073 | ||
| 937 | The following example creates a keymap called | 1074 | The following example creates a keymap called |
| 938 | @code{git-gutter+-repeat-map}, makes four bindings in it as above, | 1075 | @code{git-gutter+-repeat-map}, makes four bindings in it, then sets |
| 939 | then sets the @code{repeat-map} property of each bound command | 1076 | the @code{repeat-map} property of each bound command |
| 940 | (@code{git-gutter+-next-hunk} @code{git-gutter+-previous-hunk}, | 1077 | (@code{git-gutter+-next-hunk}, @code{git-gutter+-previous-hunk}, |
| 941 | @code{git-gutter+-stage-hunks} and @code{git-gutter+-revert-hunk}) to | 1078 | @code{git-gutter+-stage-hunks}, and @code{git-gutter+-revert-hunk}) to |
| 942 | that keymap. | 1079 | that keymap. |
| 943 | 1080 | ||
| 944 | @lisp | 1081 | @lisp |
| 1082 | @group | ||
| 945 | (use-package git-gutter+ | 1083 | (use-package git-gutter+ |
| 946 | :bind | 1084 | :bind |
| 947 | (:repeat-map git-gutter+-repeat-map | 1085 | (:repeat-map git-gutter+-repeat-map |
| @@ -949,16 +1087,19 @@ that keymap. | |||
| 949 | ("p" . git-gutter+-previous-hunk) | 1087 | ("p" . git-gutter+-previous-hunk) |
| 950 | ("s" . git-gutter+-stage-hunks) | 1088 | ("s" . git-gutter+-stage-hunks) |
| 951 | ("r" . git-gutter+-revert-hunk))) | 1089 | ("r" . git-gutter+-revert-hunk))) |
| 1090 | @end group | ||
| 952 | @end lisp | 1091 | @end lisp |
| 953 | 1092 | ||
| 954 | @findex :exit, inside :repeat-map and :bind | 1093 | @findex :exit@r{, inside} :repeat-map@r{ and} :bind |
| 1094 | @cindex binding commands used at end of repeat series | ||
| 955 | Specifying @code{:exit} inside the scope of @code{:repeat-map} will | 1095 | Specifying @code{:exit} inside the scope of @code{:repeat-map} will |
| 956 | prevent the @code{repeat-map} property being set, so that the command | 1096 | prevent the @code{repeat-map} property from being set, so that the command |
| 957 | can be used from within the repeat map, but after it using it the repeat | 1097 | can be used from within the repeat map, but after using it the repeat |
| 958 | map will no longer be available. This is useful for commands often used | 1098 | map will no longer be available. This is useful for commands often used |
| 959 | at the end of a series of repeated commands: | 1099 | at the end of a series of repeated commands. Example: |
| 960 | 1100 | ||
| 961 | @lisp | 1101 | @lisp |
| 1102 | @group | ||
| 962 | (use-package git-gutter+ | 1103 | (use-package git-gutter+ |
| 963 | :bind | 1104 | :bind |
| 964 | (:repeat-map my/git-gutter+-repeat-map | 1105 | (:repeat-map my/git-gutter+-repeat-map |
| @@ -970,14 +1111,16 @@ at the end of a series of repeated commands: | |||
| 970 | ("c" . magit-commit-create) | 1111 | ("c" . magit-commit-create) |
| 971 | ("C" . magit-commit) | 1112 | ("C" . magit-commit) |
| 972 | ("b" . magit-blame))) | 1113 | ("b" . magit-blame))) |
| 1114 | @end group | ||
| 973 | @end lisp | 1115 | @end lisp |
| 974 | 1116 | ||
| 975 | @findex :continue, inside :repeat-map and :bind | 1117 | @findex :continue@r{, inside} :repeat-map@r{ and} :bind |
| 976 | Specifying @code{:continue} @emph{forces} setting the | 1118 | Specifying @code{:continue} @emph{forces} setting the |
| 977 | @code{repeat-map} property (just like @emph{not} specifying | 1119 | @code{repeat-map} property (just like @emph{not} specifying |
| 978 | @code{:exit}), so the above snippet is equivalent to: | 1120 | @code{:exit}), so the above snippet is equivalent to: |
| 979 | 1121 | ||
| 980 | @lisp | 1122 | @lisp |
| 1123 | @group | ||
| 981 | (use-package git-gutter+ | 1124 | (use-package git-gutter+ |
| 982 | :bind | 1125 | :bind |
| 983 | (:repeat-map my/git-gutter+-repeat-map | 1126 | (:repeat-map my/git-gutter+-repeat-map |
| @@ -990,10 +1133,12 @@ Specifying @code{:continue} @emph{forces} setting the | |||
| 990 | ("p" . git-gutter+-previous-hunk) | 1133 | ("p" . git-gutter+-previous-hunk) |
| 991 | ("s" . git-gutter+-stage-hunks) | 1134 | ("s" . git-gutter+-stage-hunks) |
| 992 | ("r" . git-gutter+-revert-hunk))) | 1135 | ("r" . git-gutter+-revert-hunk))) |
| 1136 | @end group | ||
| 993 | @end lisp | 1137 | @end lisp |
| 994 | 1138 | ||
| 995 | @node Displaying keybindings | 1139 | @node Displaying keybindings |
| 996 | @subsection Displaying personal keybinding | 1140 | @subsection Displaying personal keybindings |
| 1141 | @cindex display your keybindings | ||
| 997 | 1142 | ||
| 998 | @findex describe-personal-keybindings | 1143 | @findex describe-personal-keybindings |
| 999 | The @code{:bind} keyword uses the @code{bind-keys} macro from the | 1144 | The @code{:bind} keyword uses the @code{bind-keys} macro from the |
| @@ -1001,7 +1146,7 @@ The @code{:bind} keyword uses the @code{bind-keys} macro from the | |||
| 1001 | all keybindings you make, so that you can display them separately from | 1146 | all keybindings you make, so that you can display them separately from |
| 1002 | the default keybindings. | 1147 | the default keybindings. |
| 1003 | 1148 | ||
| 1004 | Use @w{@code{M-x describe-personal-keybindings}} to see all | 1149 | Use @w{@kbd{M-x describe-personal-keybindings}} to see all |
| 1005 | keybindings you've set using either the @code{:bind} keyword or the | 1150 | keybindings you've set using either the @code{:bind} keyword or the |
| 1006 | @code{bind-keys} macro. | 1151 | @code{bind-keys} macro. |
| 1007 | 1152 | ||
| @@ -1010,7 +1155,8 @@ keybindings you've set using either the @code{:bind} keyword or the | |||
| 1010 | 1155 | ||
| 1011 | @cindex hooks | 1156 | @cindex hooks |
| 1012 | @findex :hook | 1157 | @findex :hook |
| 1013 | The @code{:hook} keyword allows adding functions onto hooks. It takes | 1158 | The @code{:hook} keyword allows adding functions to hooks. It takes |
| 1159 | @c FIXME: The actual forms accepted by :hook are different, see below! | ||
| 1014 | one argument of the form @var{hooks}, specifying one or more functions | 1160 | one argument of the form @var{hooks}, specifying one or more functions |
| 1015 | to add to one or more hooks. For the purposes of @code{:hook}, the | 1161 | to add to one or more hooks. For the purposes of @code{:hook}, the |
| 1016 | name of hook variables should always exclude the @samp{-hook} suffix. | 1162 | name of hook variables should always exclude the @samp{-hook} suffix. |
| @@ -1021,17 +1167,21 @@ that sets up autoloads for @code{company-mode} from the @samp{company} | |||
| 1021 | package, and adds @samp{company-mode} to @code{prog-mode-hook}: | 1167 | package, and adds @samp{company-mode} to @code{prog-mode-hook}: |
| 1022 | 1168 | ||
| 1023 | @lisp | 1169 | @lisp |
| 1170 | @group | ||
| 1024 | (use-package company | 1171 | (use-package company |
| 1025 | :commands company-mode | 1172 | :commands company-mode |
| 1026 | :init | 1173 | :init |
| 1027 | (add-hook 'prog-mode-hook #'company-mode)) | 1174 | (add-hook 'prog-mode-hook #'company-mode)) |
| 1175 | @end group | ||
| 1028 | @end lisp | 1176 | @end lisp |
| 1029 | 1177 | ||
| 1030 | Using @code{:hook}, this can be simplified to: | 1178 | Using @code{:hook}, this can be simplified to: |
| 1031 | 1179 | ||
| 1032 | @lisp | 1180 | @lisp |
| 1181 | @group | ||
| 1033 | (use-package company | 1182 | (use-package company |
| 1034 | :hook (prog-mode . company-mode)) | 1183 | :hook (prog-mode . company-mode)) |
| 1184 | @end group | ||
| 1035 | @end lisp | 1185 | @end lisp |
| 1036 | 1186 | ||
| 1037 | Here, @code{:hook} will automatically set up autoloads for the | 1187 | Here, @code{:hook} will automatically set up autoloads for the |
| @@ -1044,8 +1194,10 @@ function you want to add is the same as the package name with | |||
| 1044 | simplify the above to the equivalent: | 1194 | simplify the above to the equivalent: |
| 1045 | 1195 | ||
| 1046 | @lisp | 1196 | @lisp |
| 1197 | @group | ||
| 1047 | (use-package company | 1198 | (use-package company |
| 1048 | :hook prog-mode) | 1199 | :hook prog-mode) |
| 1200 | @end group | ||
| 1049 | @end lisp | 1201 | @end lisp |
| 1050 | 1202 | ||
| 1051 | @cindex multiple hooks | 1203 | @cindex multiple hooks |
| @@ -1053,21 +1205,29 @@ You can also provide a list of hooks. When multiple hooks should be | |||
| 1053 | applied, the following examples are all equivalent: | 1205 | applied, the following examples are all equivalent: |
| 1054 | 1206 | ||
| 1055 | @lisp | 1207 | @lisp |
| 1208 | @group | ||
| 1056 | (use-package company | 1209 | (use-package company |
| 1057 | :hook (prog-mode text-mode)) | 1210 | :hook (prog-mode text-mode)) |
| 1211 | @end group | ||
| 1058 | 1212 | ||
| 1213 | @group | ||
| 1059 | (use-package company | 1214 | (use-package company |
| 1060 | :hook ((prog-mode text-mode) . company-mode)) | 1215 | :hook ((prog-mode text-mode) . company-mode)) |
| 1216 | @end group | ||
| 1061 | 1217 | ||
| 1218 | @group | ||
| 1062 | (use-package company | 1219 | (use-package company |
| 1063 | :hook ((prog-mode . company-mode) | 1220 | :hook ((prog-mode . company-mode) |
| 1064 | (text-mode . company-mode))) | 1221 | (text-mode . company-mode))) |
| 1222 | @end group | ||
| 1065 | 1223 | ||
| 1224 | @group | ||
| 1066 | (use-package company | 1225 | (use-package company |
| 1067 | :commands company-mode | 1226 | :commands company-mode |
| 1068 | :init | 1227 | :init |
| 1069 | (add-hook 'prog-mode-hook #'company-mode) | 1228 | (add-hook 'prog-mode-hook #'company-mode) |
| 1070 | (add-hook 'text-mode-hook #'company-mode)) | 1229 | (add-hook 'text-mode-hook #'company-mode)) |
| 1230 | @end group | ||
| 1071 | @end lisp | 1231 | @end lisp |
| 1072 | 1232 | ||
| 1073 | One common mistake when using @code{:hook} is to forget to omit the | 1233 | One common mistake when using @code{:hook} is to forget to omit the |
| @@ -1076,9 +1236,11 @@ automatically. Therefore, the following will not work, as it attempts | |||
| 1076 | to add a function to non-existent @code{prog-mode-hook-hook}: | 1236 | to add a function to non-existent @code{prog-mode-hook-hook}: |
| 1077 | 1237 | ||
| 1078 | @lisp | 1238 | @lisp |
| 1239 | @group | ||
| 1079 | ;; DOES NOT WORK | 1240 | ;; DOES NOT WORK |
| 1080 | (use-package ace-jump-mode | 1241 | (use-package ace-jump-mode |
| 1081 | :hook (prog-mode-hook . ace-jump-mode)) | 1242 | :hook (prog-mode-hook . ace-jump-mode)) |
| 1243 | @end group | ||
| 1082 | @end lisp | 1244 | @end lisp |
| 1083 | 1245 | ||
| 1084 | @vindex use-package-hook-name-suffix | 1246 | @vindex use-package-hook-name-suffix |
| @@ -1095,12 +1257,16 @@ implied by @code{:hook}. | |||
| 1095 | 1257 | ||
| 1096 | @node Modes and interpreters | 1258 | @node Modes and interpreters |
| 1097 | @section Modes and interpreters | 1259 | @section Modes and interpreters |
| 1260 | @cindex @code{auto-mode-alist} customization | ||
| 1261 | @cindex @code{interpreter-mode-alist} customization | ||
| 1262 | @cindex setting up major modes | ||
| 1098 | 1263 | ||
| 1099 | @findex :mode | 1264 | @findex :mode |
| 1100 | @findex :interpreter | 1265 | @findex :interpreter |
| 1101 | Similar to @code{:bind}, you can use @code{:mode} and | 1266 | Similar to @code{:bind}, you can use @code{:mode} and |
| 1102 | @code{:interpreter} to establish a deferred binding within the | 1267 | @code{:interpreter} to establish a deferred binding within the |
| 1103 | @code{auto-mode-alist} and @code{interpreter-mode-alist} variables. | 1268 | @code{auto-mode-alist} and @code{interpreter-mode-alist} variables |
| 1269 | (@pxref{Auto Major Mode,,, elisp, GNU Emacs Lisp Reference Manual}). | ||
| 1104 | The specifier to either keyword can be a cons cell, a list of cons | 1270 | The specifier to either keyword can be a cons cell, a list of cons |
| 1105 | cells, or a string or regexp. | 1271 | cells, or a string or regexp. |
| 1106 | 1272 | ||
| @@ -1112,51 +1278,63 @@ first line of the file (known as the ``shebang'') matches the string | |||
| 1112 | @code{"ruby"}: | 1278 | @code{"ruby"}: |
| 1113 | 1279 | ||
| 1114 | @lisp | 1280 | @lisp |
| 1281 | @group | ||
| 1115 | (use-package ruby-mode | 1282 | (use-package ruby-mode |
| 1116 | :mode "\\.rb\\'" | 1283 | :mode "\\.rb\\'" |
| 1117 | :interpreter "ruby") | 1284 | :interpreter "ruby") |
| 1285 | @end group | ||
| 1118 | @end lisp | 1286 | @end lisp |
| 1119 | 1287 | ||
| 1120 | The default @code{python-mode} configuration can be reproduced using | 1288 | The default @code{python-mode} configuration can be reproduced using |
| 1121 | the below declaration. Note that the package that should be loaded | 1289 | the declaration below. Note that the package that should be loaded |
| 1122 | differs from the mode name in this case, so we must use a cons: | 1290 | differs from the mode name in this case, so we must use a cons: |
| 1123 | 1291 | ||
| 1124 | @lisp | 1292 | @lisp |
| 1293 | @group | ||
| 1125 | ;; The package is "python" but the mode is "python-mode": | 1294 | ;; The package is "python" but the mode is "python-mode": |
| 1126 | (use-package python | 1295 | (use-package python |
| 1127 | :mode ("\\.py\\'" . python-mode) | 1296 | :mode ("\\.py\\'" . python-mode) |
| 1128 | :interpreter ("python" . python-mode)) | 1297 | :interpreter ("python" . python-mode)) |
| 1298 | @end group | ||
| 1129 | @end lisp | 1299 | @end lisp |
| 1130 | 1300 | ||
| 1131 | Both the @code{:mode} and @code{:interpreter} keywords also accept a | 1301 | Both the @code{:mode} and @code{:interpreter} keywords also accept a |
| 1132 | list of regexps: | 1302 | list of regexps: |
| 1133 | 1303 | ||
| 1134 | @lisp | 1304 | @lisp |
| 1305 | @group | ||
| 1135 | (use-package foo | 1306 | (use-package foo |
| 1136 | ;; Equivalent to "\\(ba[rz]\\)\\'": | 1307 | ;; Equivalent to "\\(ba[rz]\\)\\'": |
| 1137 | :mode ("\\.bar\\'" "\\.baz\\'") | 1308 | :mode ("\\.bar\\'" "\\.baz\\'") |
| 1138 | ;; Equivalent to "\\(foo[ab]\\)": | 1309 | ;; Equivalent to "\\(foo[ab]\\)": |
| 1139 | :interpreter ("fooa" "foob")) | 1310 | :interpreter ("fooa" "foob")) |
| 1311 | @end group | ||
| 1140 | @end lisp | 1312 | @end lisp |
| 1141 | 1313 | ||
| 1142 | @node Magic handlers | 1314 | @node Magic handlers |
| 1143 | @section Magic handlers | 1315 | @section Magic handlers |
| 1316 | @cindex @code{magic-mode-alist} customization | ||
| 1144 | 1317 | ||
| 1145 | @findex :magic | 1318 | @findex :magic |
| 1146 | @findex :magic-fallback | 1319 | @findex :magic-fallback |
| 1147 | Similar to @code{:mode} and @code{:interpreter}, you can also use | 1320 | Similar to @code{:mode} and @code{:interpreter}, you can also use |
| 1148 | @code{:magic} and @code{:magic-fallback} to cause certain function to | 1321 | @code{:magic} and @code{:magic-fallback} to cause certain function to |
| 1149 | be run if the beginning of a file matches a given regular expression. | 1322 | be run if the beginning of a file matches a given regular expression, |
| 1150 | The difference between @code{:magic} and @code{:magic-fallback}, is | 1323 | as if these regular expressions were added to @code{magic-mode-alist} |
| 1151 | that the latter has a lower priority than @code{:mode}. | 1324 | and @code{magic-fallback-mode-alist} (@pxref{Auto Major Mode,,, elisp, |
| 1325 | GNU Emacs Lisp Reference Manual}). The difference between | ||
| 1326 | @code{:magic} and @code{:magic-fallback}, is that the latter has a | ||
| 1327 | lower priority than @code{:mode}. | ||
| 1152 | 1328 | ||
| 1153 | Here is an example: | 1329 | Here is an example: |
| 1154 | 1330 | ||
| 1155 | @lisp | 1331 | @lisp |
| 1332 | @group | ||
| 1156 | (use-package pdf-tools | 1333 | (use-package pdf-tools |
| 1157 | :magic ("%PDF" . pdf-view-mode) | 1334 | :magic ("%PDF" . pdf-view-mode) |
| 1158 | :config | 1335 | :config |
| 1159 | (pdf-tools-install :no-query)) | 1336 | (pdf-tools-install :no-query)) |
| 1337 | @end group | ||
| 1160 | @end lisp | 1338 | @end lisp |
| 1161 | 1339 | ||
| 1162 | This registers an autoloaded command for @code{pdf-view-mode}, defers | 1340 | This registers an autoloaded command for @code{pdf-view-mode}, defers |
| @@ -1165,53 +1343,67 @@ beginning of a buffer matches the string @code{"%PDF"}. | |||
| 1165 | 1343 | ||
| 1166 | @node User options | 1344 | @node User options |
| 1167 | @section User options | 1345 | @section User options |
| 1346 | @cindex customization of variables | ||
| 1347 | @cindex variable customizations | ||
| 1348 | @cindex user options, setting | ||
| 1168 | 1349 | ||
| 1169 | @findex :custom | 1350 | @findex :custom |
| 1170 | In Emacs, you normally set customizable variables (user options) using | 1351 | In Emacs, you normally set customizable variables (user options) using |
| 1171 | the @code{M-x customize} interface (@pxref{Easy Customization,,, | 1352 | the @code{M-x customize} interface (@pxref{Easy Customization,,, |
| 1172 | emacs, GNU Emacs Manual}). We recommended this method for most users. | 1353 | emacs, GNU Emacs Manual}). We recommend this method for most users. |
| 1173 | However, it is also possible to set them in your @code{use-package} | 1354 | However, it is also possible to set them in your @code{use-package} |
| 1174 | declarations by using the @code{:custom} keyword. | 1355 | declarations by using the @code{:custom} keyword. |
| 1175 | 1356 | ||
| 1176 | @lisp | 1357 | @lisp |
| 1358 | @group | ||
| 1177 | (use-package comint | 1359 | (use-package comint |
| 1178 | :defer t | 1360 | :defer t |
| 1179 | :custom | 1361 | :custom |
| 1180 | (comint-buffer-maximum-size 20000 "Increase comint buffer size.") | 1362 | (comint-buffer-maximum-size 20000 "Increase comint buffer size.") |
| 1181 | (comint-prompt-read-only t "Make the prompt read only.")) | 1363 | (comint-prompt-read-only t "Make the prompt read only.")) |
| 1364 | @end group | ||
| 1182 | @end lisp | 1365 | @end lisp |
| 1183 | 1366 | ||
| 1184 | This is better than using @code{setq} in a @code{:config} block, as | 1367 | This is better than using @code{setq} in a @code{:config} block, as |
| 1185 | customizable variables might have some code associated with it that | 1368 | customizable variables might have some code associated with it that |
| 1186 | Emacs will execute when you assign values to them. In Emacs 29, there | 1369 | Emacs will execute when you assign values to them. (In Emacs 29 and |
| 1187 | is also the new @code{setopt} macro that does this for you. | 1370 | later, there is also the new @code{setopt} macro that does this for |
| 1188 | 1371 | you.) | |
| 1189 | Note that the values customized using this keyword are @emph{not} | 1372 | |
| 1190 | saved in the standard Emacs @code{custom-file}. You should therefore | 1373 | Note that the values customized using @code{:custom} are @emph{not} |
| 1191 | set each user option using either the @code{:custom} keyword @emph{or} | 1374 | saved in the standard Emacs @code{custom-file} (@pxref{Saving |
| 1192 | @w{@code{M-x customize-option}}, which will save customized values in | 1375 | Customizations,,, emacs, GNU Emacs Manual}). You should therefore set |
| 1193 | the Emacs @code{custom-file}. Do not use both for the same variable, | 1376 | each user option using either the @code{:custom} keyword @emph{or} |
| 1194 | as this risk having conflicting values in your use-package declaration | 1377 | @w{@kbd{M-x customize-option}} command; the latter will save |
| 1195 | and your @code{custom-file}. This can lead to problems that are both | 1378 | customized values in the Emacs @code{custom-file}. Do not use both |
| 1196 | tricky and tedious to debug. | 1379 | for the same variable, as this risks having conflicting values in your |
| 1380 | use-package declaration and your @code{custom-file}, which can lead to | ||
| 1381 | problems that are both tricky and tedious to debug. | ||
| 1197 | 1382 | ||
| 1198 | @node Faces | 1383 | @node Faces |
| 1199 | @section Faces | 1384 | @section Faces |
| 1385 | @cindex faces, setting | ||
| 1386 | @cindex customization of faces | ||
| 1200 | 1387 | ||
| 1201 | @findex :custom-face | 1388 | @findex :custom-face |
| 1202 | The @code{:custom-face} keyword allows customization of package custom | 1389 | The @code{:custom-face} keyword allows customization of package's |
| 1203 | faces. | 1390 | faces. Example: |
| 1204 | 1391 | ||
| 1205 | @lisp | 1392 | @lisp |
| 1393 | @group | ||
| 1206 | (use-package eruby-mode | 1394 | (use-package eruby-mode |
| 1207 | :custom-face | 1395 | :custom-face |
| 1208 | (eruby-standard-face ((t (:slant italic))))) | 1396 | (eruby-standard-face ((t (:slant italic))))) |
| 1397 | @end group | ||
| 1209 | 1398 | ||
| 1399 | @group | ||
| 1210 | (use-package example | 1400 | (use-package example |
| 1211 | :custom-face | 1401 | :custom-face |
| 1212 | (example-1-face ((t (:foreground "LightPink")))) | 1402 | (example-1-face ((t (:foreground "LightPink")))) |
| 1213 | (example-2-face ((t (:foreground "LightGreen"))) face-defspec-spec)) | 1403 | (example-2-face ((t (:foreground "LightGreen"))) face-defspec-spec)) |
| 1404 | @end group | ||
| 1214 | 1405 | ||
| 1406 | @group | ||
| 1215 | (use-package zenburn-theme | 1407 | (use-package zenburn-theme |
| 1216 | :preface | 1408 | :preface |
| 1217 | (setq my/zenburn-colors-alist | 1409 | (setq my/zenburn-colors-alist |
| @@ -1220,17 +1412,19 @@ faces. | |||
| 1220 | (region ((t (:background ,(alist-get my/zenburn-colors-alist 'cyan))))) | 1412 | (region ((t (:background ,(alist-get my/zenburn-colors-alist 'cyan))))) |
| 1221 | :config | 1413 | :config |
| 1222 | (load-theme 'zenburn t)) | 1414 | (load-theme 'zenburn t)) |
| 1415 | @end group | ||
| 1223 | @end lisp | 1416 | @end lisp |
| 1224 | 1417 | ||
| 1225 | @node Hiding minor modes | 1418 | @node Hiding minor modes |
| 1226 | @section Hiding minor modes with diminish and delight | 1419 | @section Hiding minor modes with diminish and delight |
| 1420 | @cindex hiding minor modes | ||
| 1227 | 1421 | ||
| 1228 | @code{use-package} supports the diminish and delight packages, both of | 1422 | @code{use-package} supports the @file{diminish} and @file{delight} |
| 1229 | which make it possible remove or change minor mode strings in your | 1423 | packages, both of which make it possible to remove or change minor mode |
| 1230 | mode-line. Which one to use is up to you, but you should normally | 1424 | strings in your mode-line. Which one to use is up to you, but you |
| 1231 | only use one or the other -- never both.@footnote{When in doubt, you | 1425 | should normally only use one or the other -- never both.@footnote{When |
| 1232 | might as well use diminish.} To use either of them, you must first | 1426 | in doubt, you might as well use @file{diminish}.} To use either of them, you |
| 1233 | install the corresponding package from @acronym{GNU ELPA}. | 1427 | must first install the corresponding package from @acronym{GNU} @acronym{ELPA}. |
| 1234 | 1428 | ||
| 1235 | @menu | 1429 | @menu |
| 1236 | * Diminish:: Hiding minor modes with Diminish. | 1430 | * Diminish:: Hiding minor modes with Diminish. |
| @@ -1241,61 +1435,72 @@ install the corresponding package from @acronym{GNU ELPA}. | |||
| 1241 | @subsection Diminish | 1435 | @subsection Diminish |
| 1242 | 1436 | ||
| 1243 | @findex :diminish | 1437 | @findex :diminish |
| 1244 | When diminish@footnote{The diminish package is installable from | 1438 | When diminish@footnote{The @file{diminish} package is installable from |
| 1245 | @acronym{GNU ELPA}.} is installed, you can use the @code{:diminish} | 1439 | @acronym{GNU} @acronym{ELPA}.} is installed, you can use the @code{:diminish} |
| 1246 | keyword. If diminish is not installed, the @code{:diminish} keyword | 1440 | keyword. If @file{diminish} is not installed, the @code{:diminish} keyword |
| 1247 | does nothing. | 1441 | does nothing. |
| 1248 | 1442 | ||
| 1249 | First, add the following declaration to the beginning of your init | 1443 | First, add the following declaration to the beginning of your init |
| 1250 | file. The optional @w{@code{:ensure t}} makes sure the package is | 1444 | file. |
| 1251 | installed if it isn't already (@pxref{Installing packages}). | ||
| 1252 | 1445 | ||
| 1253 | @lisp | 1446 | @lisp |
| 1254 | (use-package diminish :ensure t) | 1447 | (use-package diminish :ensure t) |
| 1255 | @end lisp | 1448 | @end lisp |
| 1256 | 1449 | ||
| 1257 | The @code{:diminish} keyword takes either a minor mode symbol, a cons | 1450 | @noindent |
| 1258 | of the symbol and its replacement string, or just a replacement | 1451 | The optional @w{@code{:ensure t}} makes sure the package is installed |
| 1259 | string, in which case the minor mode symbol is guessed to be the | 1452 | if it isn't already (@pxref{Installing packages}). |
| 1260 | package name with @samp{-mode} appended at the end: | 1453 | |
| 1454 | The @code{:diminish} keyword takes as its argument either a minor mode | ||
| 1455 | symbol, a cons of the symbol and its replacement string, or just a | ||
| 1456 | replacement string, in which case the minor mode symbol is guessed to | ||
| 1457 | be the package name with @samp{-mode} appended at the end: | ||
| 1261 | 1458 | ||
| 1262 | @lisp | 1459 | @lisp |
| 1460 | @group | ||
| 1263 | (use-package abbrev | 1461 | (use-package abbrev |
| 1264 | :diminish abbrev-mode | 1462 | :diminish abbrev-mode |
| 1265 | :config | 1463 | :config |
| 1266 | (if (file-exists-p abbrev-file-name) | 1464 | (if (file-exists-p abbrev-file-name) |
| 1267 | (quietly-read-abbrev-file))) | 1465 | (quietly-read-abbrev-file))) |
| 1466 | @end group | ||
| 1268 | @end lisp | 1467 | @end lisp |
| 1269 | 1468 | ||
| 1270 | @node Delight | 1469 | @node Delight |
| 1271 | @subsection Delight | 1470 | @subsection Delight |
| 1272 | 1471 | ||
| 1273 | @findex :delight | 1472 | @findex :delight |
| 1274 | When delight@footnote{The @samp{delight} package is installable from | 1473 | When @file{delight}@footnote{The @file{delight} package is installable from |
| 1275 | GNU ELPA.} is installed, you can use the @code{:delight} keyword. If | 1474 | @acronym{GNU} @acronym{ELPA}.} is installed, you can use the |
| 1276 | delight is not installed, the @code{:delight} keyword does nothing. | 1475 | @code{:delight} keyword. If @file{delight} is not installed, the |
| 1476 | @code{:delight} keyword does nothing. | ||
| 1277 | 1477 | ||
| 1278 | First, add the following declaration to the beginning of your init | 1478 | First, add the following declaration to the beginning of your init |
| 1279 | file. The optional @w{@code{:ensure t}} makes sure the package is | 1479 | file. |
| 1280 | installed if it isn't already (@pxref{Installing packages}). | ||
| 1281 | 1480 | ||
| 1282 | @lisp | 1481 | @lisp |
| 1283 | (use-package delight :ensure t) | 1482 | (use-package delight :ensure t) |
| 1284 | @end lisp | 1483 | @end lisp |
| 1285 | 1484 | ||
| 1286 | The @code{:delight} keyword takes a minor mode symbol, a replacement | 1485 | @noindent |
| 1287 | string, or quoted mode line data (in which case the minor mode symbol | 1486 | The optional @w{@code{:ensure t}} makes sure the package is installed |
| 1288 | is assumed to be the package name with @samp{-mode} appended at the | 1487 | if it isn't already (@pxref{Installing packages}). |
| 1289 | end), both of these, or several lists of both. @xref{Mode Line | 1488 | |
| 1290 | Data,,, elisp, GNU Emacs Lisp Reference Manual}. If no arguments are | 1489 | The @code{:delight} keyword takes as its argument a minor mode symbol, |
| 1291 | provided, the default mode name is hidden completely. | 1490 | a replacement string, or quoted mode line data (in which case the |
| 1491 | minor mode symbol is assumed to be the package name with @samp{-mode} | ||
| 1492 | appended at the end), both of these, or several lists of both. | ||
| 1493 | @xref{Mode Line Data,,, elisp, GNU Emacs Lisp Reference Manual}. If | ||
| 1494 | no arguments are provided, the default mode name is hidden completely. | ||
| 1292 | 1495 | ||
| 1293 | For example, the following hides everything for the @samp{foo-mode} | 1496 | For example, the following hides everything for the @samp{foo-mode} |
| 1294 | minor mode in the @samp{foo} package: | 1497 | minor mode in the @samp{foo} package: |
| 1295 | 1498 | ||
| 1296 | @lisp | 1499 | @lisp |
| 1500 | @group | ||
| 1297 | (use-package foo | 1501 | (use-package foo |
| 1298 | :delight) | 1502 | :delight) |
| 1503 | @end group | ||
| 1299 | @end lisp | 1504 | @end lisp |
| 1300 | 1505 | ||
| 1301 | If the mode name doesn't match the package name with @samp{-mode} | 1506 | If the mode name doesn't match the package name with @samp{-mode} |
| @@ -1303,28 +1508,35 @@ appended, provide a symbol instead. For example, the following hides | |||
| 1303 | @code{auto-revert-mode} from the mode line: | 1508 | @code{auto-revert-mode} from the mode line: |
| 1304 | 1509 | ||
| 1305 | @lisp | 1510 | @lisp |
| 1511 | @group | ||
| 1306 | ;; Don't show anything for auto-revert-mode, which doesn't match | 1512 | ;; Don't show anything for auto-revert-mode, which doesn't match |
| 1307 | ;; its package name. | 1513 | ;; its package name. |
| 1308 | (use-package autorevert | 1514 | (use-package autorevert |
| 1309 | :delight auto-revert-mode) | 1515 | :delight auto-revert-mode) |
| 1516 | @end group | ||
| 1310 | @end lisp | 1517 | @end lisp |
| 1311 | 1518 | ||
| 1312 | You can also run arbitrary Lisp code. For example, to replace | 1519 | You can also use arbitrary Lisp code as argument of @code{:delight}. |
| 1313 | @samp{foo-mode} with the value of the current buffer: | 1520 | For example, to replace @samp{foo-mode} with the value of the current |
| 1521 | buffer: | ||
| 1314 | 1522 | ||
| 1315 | @lisp | 1523 | @lisp |
| 1524 | @group | ||
| 1316 | (use-package foo | 1525 | (use-package foo |
| 1317 | :delight '(:eval buffer-file-name)) | 1526 | :delight '(:eval buffer-file-name)) |
| 1527 | @end group | ||
| 1318 | @end lisp | 1528 | @end lisp |
| 1319 | 1529 | ||
| 1320 | Here is an example of hiding several built-in minor modes: | 1530 | Here is an example of hiding several built-in minor modes: |
| 1321 | 1531 | ||
| 1322 | @lisp | 1532 | @lisp |
| 1533 | @group | ||
| 1323 | ;; Completely hide visual-line-mode and change auto-fill-mode to " AF". | 1534 | ;; Completely hide visual-line-mode and change auto-fill-mode to " AF". |
| 1324 | (use-package emacs | 1535 | (use-package emacs |
| 1325 | :delight | 1536 | :delight |
| 1326 | (auto-fill-function " AF") | 1537 | (auto-fill-function " AF") |
| 1327 | (visual-line-mode)) | 1538 | (visual-line-mode)) |
| 1539 | @end group | ||
| 1328 | @end lisp | 1540 | @end lisp |
| 1329 | 1541 | ||
| 1330 | @c ---------------------------------------------------------------------------- | 1542 | @c ---------------------------------------------------------------------------- |
| @@ -1334,7 +1546,7 @@ Here is an example of hiding several built-in minor modes: | |||
| 1334 | The standard Emacs package manager is documented in the Emacs manual | 1546 | The standard Emacs package manager is documented in the Emacs manual |
| 1335 | (@pxref{Package Installation,,, emacs, GNU Emacs Manual}). The | 1547 | (@pxref{Package Installation,,, emacs, GNU Emacs Manual}). The |
| 1336 | @code{use-package} macro provides the @code{:ensure} and @code{:pin} | 1548 | @code{use-package} macro provides the @code{:ensure} and @code{:pin} |
| 1337 | keywords, that interface with that package manager to automatically | 1549 | keywords that interface with that package manager to automatically |
| 1338 | install packages. This is particularly useful if you use your init | 1550 | install packages. This is particularly useful if you use your init |
| 1339 | file on more than one system. | 1551 | file on more than one system. |
| 1340 | 1552 | ||
| @@ -1346,6 +1558,7 @@ file on more than one system. | |||
| 1346 | 1558 | ||
| 1347 | @node Install package | 1559 | @node Install package |
| 1348 | @section Installing package | 1560 | @section Installing package |
| 1561 | @cindex installing packages from archives | ||
| 1349 | 1562 | ||
| 1350 | @findex :ensure | 1563 | @findex :ensure |
| 1351 | The @code{:ensure} keyword makes use-package ask the Emacs package | 1564 | The @code{:ensure} keyword makes use-package ask the Emacs package |
| @@ -1355,25 +1568,32 @@ system. | |||
| 1355 | For example: | 1568 | For example: |
| 1356 | 1569 | ||
| 1357 | @lisp | 1570 | @lisp |
| 1571 | @group | ||
| 1358 | (use-package magit | 1572 | (use-package magit |
| 1359 | :ensure t) | 1573 | :ensure t) |
| 1574 | @end group | ||
| 1360 | @end lisp | 1575 | @end lisp |
| 1361 | 1576 | ||
| 1362 | If you need to install a different package from the one named by | 1577 | If you need to install a different package from the one named by |
| 1363 | @code{use-package}, you can use a symbol: | 1578 | @code{use-package}, you can use a symbol: |
| 1364 | 1579 | ||
| 1365 | @lisp | 1580 | @lisp |
| 1581 | @group | ||
| 1366 | (use-package tex | 1582 | (use-package tex |
| 1367 | :ensure auctex) | 1583 | :ensure auctex) |
| 1584 | @end group | ||
| 1368 | @end lisp | 1585 | @end lisp |
| 1369 | 1586 | ||
| 1587 | @vindex use-package-always-ensure | ||
| 1370 | You can customize the user option @code{use-package-always-ensure} to | 1588 | You can customize the user option @code{use-package-always-ensure} to |
| 1371 | non-@code{nil} if you want this behavior to be global for all | 1589 | a non-@code{nil} value if you want this behavior to be global for all |
| 1372 | packages. | 1590 | packages: |
| 1373 | 1591 | ||
| 1374 | @lisp | 1592 | @lisp |
| 1593 | @group | ||
| 1375 | (require 'use-package-ensure) | 1594 | (require 'use-package-ensure) |
| 1376 | (setq use-package-always-ensure t) | 1595 | (setq use-package-always-ensure t) |
| 1596 | @end group | ||
| 1377 | @end lisp | 1597 | @end lisp |
| 1378 | 1598 | ||
| 1379 | @noindent | 1599 | @noindent |
| @@ -1382,23 +1602,27 @@ You can override the above setting for a single package by adding | |||
| 1382 | 1602 | ||
| 1383 | @node Pinning packages | 1603 | @node Pinning packages |
| 1384 | @section Pinning packages using @code{:pin} | 1604 | @section Pinning packages using @code{:pin} |
| 1605 | @cindex installing package from specific archive | ||
| 1606 | @cindex pinning a package to archive | ||
| 1385 | 1607 | ||
| 1386 | @findex :pin | 1608 | @findex :pin |
| 1387 | use-package can pin a package to a specific archive using the | 1609 | use-package can @dfn{pin} a package to a specific archive using the |
| 1388 | @code{:pin} keyword.@footnote{The @code{:pin} keyword has no effect on | 1610 | @code{:pin} keyword.@footnote{The @code{:pin} keyword has no effect on |
| 1389 | Emacs versions older than 24.4.} This allows you to mix and match | 1611 | Emacs versions older than 24.4.} This allows you to mix and match |
| 1390 | packages from different archives. The primary use-case for this is | 1612 | packages from different archives. The primary use-case for this is |
| 1391 | preferring to install packages from @acronym{GNU ELPA} or | 1613 | preferring to install packages from @acronym{GNU} @acronym{ELPA} or |
| 1392 | @acronym{NonGNU ELPA} (indicated by @code{gnu} and @code{nongnu}, | 1614 | @acronym{NonGNU} @acronym{ELPA} (indicated by @code{gnu} and @code{nongnu}, |
| 1393 | respectively), while installing specific packages from third-party | 1615 | respectively), while installing specific packages from third-party |
| 1394 | archives. | 1616 | archives. |
| 1395 | 1617 | ||
| 1396 | For example: | 1618 | For example: |
| 1397 | 1619 | ||
| 1398 | @lisp | 1620 | @lisp |
| 1621 | @group | ||
| 1399 | (use-package company | 1622 | (use-package company |
| 1400 | :ensure t | 1623 | :ensure t |
| 1401 | :pin gnu) ; GNU ELPA | 1624 | :pin gnu) ; GNU ELPA |
| 1625 | @end group | ||
| 1402 | @end lisp | 1626 | @end lisp |
| 1403 | 1627 | ||
| 1404 | @vindex use-package-always-pin | 1628 | @vindex use-package-always-pin |
| @@ -1410,6 +1634,7 @@ strongly encourage you to customize @code{use-package-always-pin} to | |||
| 1410 | package that has been specifically marked for release by its | 1634 | package that has been specifically marked for release by its |
| 1411 | developer, and not a development snapshot. | 1635 | developer, and not a development snapshot. |
| 1412 | 1636 | ||
| 1637 | @cindex manual update of packages | ||
| 1413 | @c FIXME: This needs clarifying. AFAIK, :ensure does not update packages. | 1638 | @c FIXME: This needs clarifying. AFAIK, :ensure does not update packages. |
| 1414 | If you want to manually keep a package updated and ignore upstream | 1639 | If you want to manually keep a package updated and ignore upstream |
| 1415 | updates, you can pin it to @samp{manual}. This will work as long as | 1640 | updates, you can pin it to @samp{manual}. This will work as long as |
| @@ -1419,10 +1644,12 @@ you have not customized a repository to use that name in the | |||
| 1419 | Example: | 1644 | Example: |
| 1420 | 1645 | ||
| 1421 | @lisp | 1646 | @lisp |
| 1647 | @group | ||
| 1422 | (use-package org | 1648 | (use-package org |
| 1423 | :ensure t | 1649 | :ensure t |
| 1424 | ;; ignore org-mode from upstream and use a manually installed version | 1650 | ;; ignore org-mode from upstream and use a manually installed version |
| 1425 | :pin manual) | 1651 | :pin manual) |
| 1652 | @end group | ||
| 1426 | @end lisp | 1653 | @end lisp |
| 1427 | 1654 | ||
| 1428 | @code{use-package} signals an error if you try to pin a package to an | 1655 | @code{use-package} signals an error if you try to pin a package to an |
| @@ -1431,10 +1658,13 @@ from the special @samp{manual} archive). | |||
| 1431 | 1658 | ||
| 1432 | @node Other package managers | 1659 | @node Other package managers |
| 1433 | @section Non-standard package managers | 1660 | @section Non-standard package managers |
| 1661 | @cindex non-standard package managers | ||
| 1662 | @cindex package managers, other than @file{package.el} | ||
| 1663 | @cindex installing using non-standard package managers | ||
| 1434 | 1664 | ||
| 1435 | By default, use-package assumes that you are using the built-in | 1665 | By default, use-package assumes that you are using the Emacs built-in |
| 1436 | @code{package.el} package manager. We expect that most users will | 1666 | @file{package.el} package manager. We expect that most users will |
| 1437 | find that it is more than capable enough, even for advanced use cases. | 1667 | find that it is capable enough, even for advanced use cases. |
| 1438 | 1668 | ||
| 1439 | @vindex use-package-ensure-function | 1669 | @vindex use-package-ensure-function |
| 1440 | However, some users might prefer to use a third-party package manager | 1670 | However, some users might prefer to use a third-party package manager |
| @@ -1450,12 +1680,13 @@ them directly to the developers of that package manager. | |||
| 1450 | @c ---------------------------------------------------------------------------- | 1680 | @c ---------------------------------------------------------------------------- |
| 1451 | @node Byte-compiling | 1681 | @node Byte-compiling |
| 1452 | @chapter Byte-compiling your init file | 1682 | @chapter Byte-compiling your init file |
| 1683 | @cindex byte-compiling your init file | ||
| 1453 | 1684 | ||
| 1454 | Some users might want to byte-compile their init file to make Emacs | 1685 | Some users might want to byte-compile their init file to make Emacs |
| 1455 | startup even faster. This is not recommended in most cases, as the | 1686 | startup faster. This is not recommended in most cases, as the |
| 1456 | speed-up is often too small to be worth it, and can lead to confusion | 1687 | speed-up is often too small to be worth it, and can lead to confusion |
| 1457 | if the byte-compiled files are out-of-date. If you still want to do | 1688 | if the byte-compiled files are out-of-date. If you still want to do |
| 1458 | it, read on. | 1689 | it, this chapter explains how to do that. |
| 1459 | 1690 | ||
| 1460 | @code{use-package} always loads every library that it can while a file | 1691 | @code{use-package} always loads every library that it can while a file |
| 1461 | is being byte-compiled. This helps silence spurious warnings about | 1692 | is being byte-compiled. This helps silence spurious warnings about |
| @@ -1463,23 +1694,27 @@ unknown variables and functions. | |||
| 1463 | 1694 | ||
| 1464 | @findex :defines | 1695 | @findex :defines |
| 1465 | @findex :functions | 1696 | @findex :functions |
| 1697 | @cindex silence byte-compilation warnings | ||
| 1466 | However, there are times when this is just not enough. For those | 1698 | However, there are times when this is just not enough. For those |
| 1467 | times, use the @code{:defines} and @code{:functions} keywords to | 1699 | times, use the @code{:defines} and @code{:functions} keywords to |
| 1468 | introduce dummy variable and function declarations solely for the sake | 1700 | introduce dummy variable and function declarations solely for the sake |
| 1469 | of silencing byte-compiler warnings. For example: | 1701 | of silencing byte-compiler warnings. For example: |
| 1470 | 1702 | ||
| 1471 | @lisp | 1703 | @lisp |
| 1704 | @group | ||
| 1472 | (use-package texinfo | 1705 | (use-package texinfo |
| 1473 | :defines texinfo-section-list | 1706 | :defines texinfo-section-list |
| 1474 | :commands texinfo-mode | 1707 | :commands texinfo-mode |
| 1475 | :init | 1708 | :init |
| 1476 | (add-to-list 'auto-mode-alist '("\\.texi$" . texinfo-mode))) | 1709 | (add-to-list 'auto-mode-alist '("\\.texi$" . texinfo-mode))) |
| 1710 | @end group | ||
| 1477 | @end lisp | 1711 | @end lisp |
| 1478 | 1712 | ||
| 1479 | If you need to silence a missing function warning, you can use | 1713 | If you need to silence a missing function warning, you can use |
| 1480 | @code{:functions}: | 1714 | @code{:functions}: |
| 1481 | 1715 | ||
| 1482 | @lisp | 1716 | @lisp |
| 1717 | @group | ||
| 1483 | (use-package ruby-mode | 1718 | (use-package ruby-mode |
| 1484 | :mode "\\.rb\\'" | 1719 | :mode "\\.rb\\'" |
| 1485 | :interpreter "ruby" | 1720 | :interpreter "ruby" |
| @@ -1488,12 +1723,14 @@ If you need to silence a missing function warning, you can use | |||
| 1488 | (defun my-ruby-mode-hook () | 1723 | (defun my-ruby-mode-hook () |
| 1489 | (require 'inf-ruby) | 1724 | (require 'inf-ruby) |
| 1490 | (inf-ruby-keys)) | 1725 | (inf-ruby-keys)) |
| 1726 | @end group | ||
| 1491 | 1727 | ||
| 1492 | (add-hook 'ruby-mode-hook 'my-ruby-mode-hook)) | 1728 | (add-hook 'ruby-mode-hook 'my-ruby-mode-hook)) |
| 1493 | @end lisp | 1729 | @end lisp |
| 1494 | 1730 | ||
| 1495 | @findex :no-require | 1731 | @findex :no-require |
| 1496 | @cindex prevent a package from loading at compile-time | 1732 | @cindex prevent a package from loading at compile-time |
| 1733 | @cindex package loading at byte-compilation time, prevent | ||
| 1497 | Normally, @code{use-package} will load each package at compile time | 1734 | Normally, @code{use-package} will load each package at compile time |
| 1498 | before compiling the configuration, to ensure that any necessary | 1735 | before compiling the configuration, to ensure that any necessary |
| 1499 | symbols are in scope to satisfy the byte-compiler. At times this can | 1736 | symbols are in scope to satisfy the byte-compiler. At times this can |
| @@ -1503,21 +1740,23 @@ configuration to the @code{eval-after-load} hook. In such cases, use | |||
| 1503 | the @code{:no-require} keyword: | 1740 | the @code{:no-require} keyword: |
| 1504 | 1741 | ||
| 1505 | @lisp | 1742 | @lisp |
| 1743 | @group | ||
| 1506 | (use-package foo | 1744 | (use-package foo |
| 1507 | :no-require t | 1745 | :no-require t |
| 1508 | :config | 1746 | :config |
| 1509 | (message "Evaluate this immediately after loading `foo'")) | 1747 | (message "Evaluate this immediately after loading `foo'")) |
| 1748 | @end group | ||
| 1510 | @end lisp | 1749 | @end lisp |
| 1511 | 1750 | ||
| 1512 | @c ---------------------------------------------------------------------------- | 1751 | @c ---------------------------------------------------------------------------- |
| 1513 | @node Troubleshooting | 1752 | @node Troubleshooting |
| 1514 | @chapter Troubleshooting | 1753 | @chapter Troubleshooting |
| 1515 | 1754 | ||
| 1516 | @cindex troubleshooting | 1755 | @cindex troubleshooting use-package |
| 1517 | @cindex debugging | 1756 | @cindex debugging use-package |
| 1518 | If an error occurs while initializing or configuring a package, this | 1757 | If an error occurs while initializing or configuring a package, this |
| 1519 | will not stop your Emacs from loading. Instead, @code{use-package} | 1758 | will not stop your Emacs from loading. Instead, @code{use-package} |
| 1520 | captures the error and reports it in a special @code{*Warnings*} popup | 1759 | captures the error and reports it in a special @file{*Warnings*} popup |
| 1521 | buffer, so that you can debug the situation in an otherwise functional | 1760 | buffer, so that you can debug the situation in an otherwise functional |
| 1522 | Emacs. | 1761 | Emacs. |
| 1523 | 1762 | ||
| @@ -1528,11 +1767,13 @@ that flag, add the following to your init file (these options are | |||
| 1528 | documented below): | 1767 | documented below): |
| 1529 | 1768 | ||
| 1530 | @lisp | 1769 | @lisp |
| 1770 | @group | ||
| 1531 | (when init-file-debug | 1771 | (when init-file-debug |
| 1532 | (setq use-package-verbose t | 1772 | (setq use-package-verbose t |
| 1533 | use-package-expand-minimally nil | 1773 | use-package-expand-minimally nil |
| 1534 | use-package-compute-statistics t | 1774 | use-package-compute-statistics t |
| 1535 | debug-on-error t)) | 1775 | debug-on-error t)) |
| 1776 | @end group | ||
| 1536 | @end lisp | 1777 | @end lisp |
| 1537 | 1778 | ||
| 1538 | @cindex reporting bugs | 1779 | @cindex reporting bugs |
| @@ -1552,6 +1793,8 @@ their output in any bugs you file for use-package. | |||
| 1552 | 1793 | ||
| 1553 | @node Troubleshooting Options | 1794 | @node Troubleshooting Options |
| 1554 | @section Options that help when troubleshooting | 1795 | @section Options that help when troubleshooting |
| 1796 | @cindex options for troubleshooting | ||
| 1797 | @cindex troubleshooting, options that help | ||
| 1555 | 1798 | ||
| 1556 | @vindex use-package-expand-minimally | 1799 | @vindex use-package-expand-minimally |
| 1557 | By default, use-package will attempts to catch and report errors that | 1800 | By default, use-package will attempts to catch and report errors that |
| @@ -1568,9 +1811,10 @@ the error object (as generated by @code{condition-case}). For | |||
| 1568 | example: | 1811 | example: |
| 1569 | 1812 | ||
| 1570 | @lisp | 1813 | @lisp |
| 1814 | @group | ||
| 1571 | (use-package example | 1815 | (use-package example |
| 1572 | ;; Note that errors are never trapped in the preface, since doing so would | 1816 | ;; Note that errors are never trapped in the preface, since |
| 1573 | ;; hide definitions from the byte-compiler. | 1817 | ;; doing so would hide definitions from the byte-compiler. |
| 1574 | :preface (message "I'm here at byte-compile and load time") | 1818 | :preface (message "I'm here at byte-compile and load time") |
| 1575 | :init (message "I'm always here at startup") | 1819 | :init (message "I'm always here at startup") |
| 1576 | :config | 1820 | :config |
| @@ -1580,20 +1824,23 @@ example: | |||
| 1580 | :no-require t | 1824 | :no-require t |
| 1581 | :catch (lambda (keyword err) | 1825 | :catch (lambda (keyword err) |
| 1582 | (message (error-message-string err)))) | 1826 | (message (error-message-string err)))) |
| 1827 | @end group | ||
| 1583 | @end lisp | 1828 | @end lisp |
| 1584 | 1829 | ||
| 1585 | Evaluating the above form will print these messages: | 1830 | Evaluating the above form will print these messages: |
| 1586 | 1831 | ||
| 1587 | @verbatim | 1832 | @verbatim |
| 1588 | I’m here at byte-compile and load time | 1833 | I'm here at byte-compile and load time |
| 1589 | I’m always here at startup | 1834 | I'm always here at startup |
| 1590 | Configuring package example... | 1835 | Configuring package example... |
| 1591 | I’m always here after the package is loaded | 1836 | I'm always here after the package is loaded |
| 1592 | oops | 1837 | oops |
| 1593 | @end verbatim | 1838 | @end verbatim |
| 1594 | 1839 | ||
| 1595 | @node Gathering Statistics | 1840 | @node Gathering Statistics |
| 1596 | @section Gathering Statistics | 1841 | @section Gathering Statistics |
| 1842 | @cindex gathering use-package statistics | ||
| 1843 | @cindex usage statistics for use-package | ||
| 1597 | 1844 | ||
| 1598 | @vindex use-package-verbose | 1845 | @vindex use-package-verbose |
| 1599 | When a package is loaded, and if you have @code{use-package-verbose} | 1846 | When a package is loaded, and if you have @code{use-package-verbose} |
| @@ -1616,21 +1863,21 @@ buffer displayed is a tabulated list. To sort rows based on a | |||
| 1616 | particular column, move point to it and type @kbd{S}, or click the | 1863 | particular column, move point to it and type @kbd{S}, or click the |
| 1617 | column name at the top of the buffer on graphical displays. | 1864 | column name at the top of the buffer on graphical displays. |
| 1618 | 1865 | ||
| 1619 | @cindex use-package-reset-statistics | 1866 | @findex use-package-reset-statistics |
| 1620 | To reset all statistics that use-package has gathered for the current | 1867 | To reset all statistics that use-package has gathered for the current |
| 1621 | Emacs invocation, run the command @kbd{M-x use-package-reset-statistics}. | 1868 | Emacs invocation, run the command @kbd{M-x use-package-reset-statistics}. |
| 1622 | 1869 | ||
| 1623 | Note that, if you are setting @code{use-package-compute-statistics} | 1870 | Note that if you are setting @code{use-package-compute-statistics} |
| 1624 | directly in your init file, and not with @code{customize}, you must do | 1871 | directly in your init file, and not with @code{customize}, you must do |
| 1625 | this after loading @code{use-package}, but before any | 1872 | this after loading @code{use-package}, but before any |
| 1626 | @code{use-package} forms. | 1873 | @code{use-package} forms. |
| 1627 | 1874 | ||
| 1628 | @node Disabling a package | 1875 | @node Disabling a package |
| 1629 | @section Disabling a package | 1876 | @section Disabling a package |
| 1630 | |||
| 1631 | @cindex disable package | 1877 | @cindex disable package |
| 1878 | |||
| 1632 | @findex :disabled | 1879 | @findex :disabled |
| 1633 | The @code{:disabled} keyword inhibits loading a package, and all it's | 1880 | The @code{:disabled} keyword inhibits loading a package, and all its |
| 1634 | customizations. It is equivalent to commenting out or deleting the | 1881 | customizations. It is equivalent to commenting out or deleting the |
| 1635 | definition. | 1882 | definition. |
| 1636 | 1883 | ||
| @@ -1641,8 +1888,10 @@ you're not currently using. | |||
| 1641 | This example disables the @samp{foo} package: | 1888 | This example disables the @samp{foo} package: |
| 1642 | 1889 | ||
| 1643 | @lisp | 1890 | @lisp |
| 1891 | @group | ||
| 1644 | (use-package foo | 1892 | (use-package foo |
| 1645 | :disabled) | 1893 | :disabled) |
| 1894 | @end group | ||
| 1646 | @end lisp | 1895 | @end lisp |
| 1647 | 1896 | ||
| 1648 | When byte-compiling your init file, use-package omits disabled | 1897 | When byte-compiling your init file, use-package omits disabled |
| @@ -1652,6 +1901,8 @@ faster. | |||
| 1652 | @c ---------------------------------------------------------------------------- | 1901 | @c ---------------------------------------------------------------------------- |
| 1653 | @node Keyword extensions | 1902 | @node Keyword extensions |
| 1654 | @appendix Keyword extensions | 1903 | @appendix Keyword extensions |
| 1904 | @cindex keyword extension | ||
| 1905 | @cindex extending use-package keywords | ||
| 1655 | 1906 | ||
| 1656 | use-package is based on an extensible framework that makes it easy for | 1907 | use-package is based on an extensible framework that makes it easy for |
| 1657 | package authors to add new keywords, or modify the behavior of | 1908 | package authors to add new keywords, or modify the behavior of |
| @@ -1666,7 +1917,7 @@ be optionally enabled. | |||
| 1666 | @end menu | 1917 | @end menu |
| 1667 | 1918 | ||
| 1668 | @node use-package-ensure-system-package | 1919 | @node use-package-ensure-system-package |
| 1669 | @section :use-package-ensure-system-package | 1920 | @appendixsec :use-package-ensure-system-package |
| 1670 | 1921 | ||
| 1671 | @findex :ensure-system-package | 1922 | @findex :ensure-system-package |
| 1672 | The @code{:ensure-system-package} keyword allows you to ensure certain | 1923 | The @code{:ensure-system-package} keyword allows you to ensure certain |
| @@ -1688,14 +1939,16 @@ Now you can use the @code{:ensure-system-package} keyword. | |||
| 1688 | Here's an example usage: | 1939 | Here's an example usage: |
| 1689 | 1940 | ||
| 1690 | @lisp | 1941 | @lisp |
| 1942 | @group | ||
| 1691 | (use-package foo | 1943 | (use-package foo |
| 1692 | :ensure-system-package foo) | 1944 | :ensure-system-package foo) |
| 1945 | @end group | ||
| 1693 | @end lisp | 1946 | @end lisp |
| 1694 | 1947 | ||
| 1695 | This will expect a global binary package to exist called @code{foo}. | 1948 | This will expect a global binary package to exist called @code{foo}. |
| 1696 | If it does not, it will use your system package manager to attempt an | 1949 | If it does not, it will use your system package manager to attempt an |
| 1697 | install of a binary by the same name asynchronously. This requires | 1950 | install of a binary by the same name asynchronously. This requires |
| 1698 | the GNU ELPA package | 1951 | the @acronym{GNU} @acronym{ELPA} package |
| 1699 | @uref{https://gitlab.com/jabranham/system-packages,@samp{system-packages}}, | 1952 | @uref{https://gitlab.com/jabranham/system-packages,@samp{system-packages}}, |
| 1700 | so for this to work you must install that first. | 1953 | so for this to work you must install that first. |
| 1701 | 1954 | ||
| @@ -1703,8 +1956,10 @@ One way of making sure it is installed is with @code{use-package} | |||
| 1703 | together with @code{:ensure}. | 1956 | together with @code{:ensure}. |
| 1704 | 1957 | ||
| 1705 | @lisp | 1958 | @lisp |
| 1959 | @group | ||
| 1706 | (use-package system-packages | 1960 | (use-package system-packages |
| 1707 | :ensure t) | 1961 | :ensure t) |
| 1962 | @end group | ||
| 1708 | @end lisp | 1963 | @end lisp |
| 1709 | 1964 | ||
| 1710 | For example, on a @code{Debian GNU/Linux} system, this would call | 1965 | For example, on a @code{Debian GNU/Linux} system, this would call |
| @@ -1714,9 +1969,11 @@ If the package is named differently than the binary, you can use a | |||
| 1714 | cons in the form of @code{(binary . package-name)}. For example: | 1969 | cons in the form of @code{(binary . package-name)}. For example: |
| 1715 | 1970 | ||
| 1716 | @lisp | 1971 | @lisp |
| 1972 | @group | ||
| 1717 | (use-package foo | 1973 | (use-package foo |
| 1718 | :ensure-system-package | 1974 | :ensure-system-package |
| 1719 | (foocmd . foo)) | 1975 | (foocmd . foo)) |
| 1976 | @end group | ||
| 1720 | @end lisp | 1977 | @end lisp |
| 1721 | 1978 | ||
| 1722 | On a @code{Debian GNU/Linux} system, this would call @code{apt install | 1979 | On a @code{Debian GNU/Linux} system, this would call @code{apt install |
| @@ -1725,36 +1982,42 @@ foo} if Emacs could not locate the executable | |||
| 1725 | @code{executable-find} function, which is what @samp{system-packages} | 1982 | @code{executable-find} function, which is what @samp{system-packages} |
| 1726 | uses internally.} | 1983 | uses internally.} |
| 1727 | 1984 | ||
| 1728 | @code{:ensure-system-package} can also take a cons where its | 1985 | @code{:ensure-system-package} can also take a cons where the |
| 1729 | @code{cdr} is a string that will get called by | 1986 | @code{cdr} is a string that will get called by |
| 1730 | @code{(async-shell-command)} to install if it isn't found. This does | 1987 | @code{(async-shell-command)} to install if it isn't found. This does |
| 1731 | not depend upon any external package. | 1988 | not depend on any external package. |
| 1732 | 1989 | ||
| 1733 | @lisp | 1990 | @lisp |
| 1991 | @group | ||
| 1734 | (use-package tern | 1992 | (use-package tern |
| 1735 | :ensure-system-package (tern . "npm i -g tern")) | 1993 | :ensure-system-package (tern . "npm i -g tern")) |
| 1994 | @end group | ||
| 1736 | @end lisp | 1995 | @end lisp |
| 1737 | 1996 | ||
| 1738 | To install several packages, you can pass in a list of conses: | 1997 | To install several packages, you can pass in a list of conses: |
| 1739 | 1998 | ||
| 1740 | @lisp | 1999 | @lisp |
| 2000 | @group | ||
| 1741 | (use-package ruby-mode | 2001 | (use-package ruby-mode |
| 1742 | :ensure-system-package | 2002 | :ensure-system-package |
| 1743 | ((rubocop . "gem install rubocop") | 2003 | ((rubocop . "gem install rubocop") |
| 1744 | (ruby-lint . "gem install ruby-lint") | 2004 | (ruby-lint . "gem install ruby-lint") |
| 1745 | (ripper-tags . "gem install ripper-tags") | 2005 | (ripper-tags . "gem install ripper-tags") |
| 1746 | (pry . "gem install pry"))) | 2006 | (pry . "gem install pry"))) |
| 2007 | @end group | ||
| 1747 | @end lisp | 2008 | @end lisp |
| 1748 | 2009 | ||
| 1749 | Finally, in case the package dependency does not provide a global | 2010 | Finally, in case the package dependency does not provide a global |
| 1750 | executable, you can ensure packages exist by checking the presence of a | 2011 | executable, you can ensure that packages exist by checking the |
| 1751 | file path by providing a string like so: | 2012 | presence of a file by providing a string like so: |
| 1752 | 2013 | ||
| 1753 | @lisp | 2014 | @lisp |
| 2015 | @group | ||
| 1754 | (use-package dash-at-point | 2016 | (use-package dash-at-point |
| 1755 | :if (eq system-type 'darwin) | 2017 | :if (eq system-type 'darwin) |
| 1756 | :ensure-system-package | 2018 | :ensure-system-package |
| 1757 | ("/Applications/Dash.app" . "brew cask install dash")) | 2019 | ("/Applications/Dash.app" . "brew cask install dash")) |
| 2020 | @end group | ||
| 1758 | @end lisp | 2021 | @end lisp |
| 1759 | 2022 | ||
| 1760 | @code{:ensure-system-package} will use @code{system-packages-install} | 2023 | @code{:ensure-system-package} will use @code{system-packages-install} |
| @@ -1768,7 +2031,8 @@ commands. Custom commands should include the call to sudo in the | |||
| 1768 | command if needed. | 2031 | command if needed. |
| 1769 | 2032 | ||
| 1770 | @node Creating an extension | 2033 | @node Creating an extension |
| 1771 | @section How to create an extension keyword | 2034 | @appendixsec How to create an extension keyword |
| 2035 | @cindex extension keywords | ||
| 1772 | 2036 | ||
| 1773 | This section describes how to create a new keyword. | 2037 | This section describes how to create a new keyword. |
| 1774 | 2038 | ||
| @@ -1794,6 +2058,7 @@ Define a normalizer for your keyword by defining a function named | |||
| 1794 | after the keyword, for example: | 2058 | after the keyword, for example: |
| 1795 | 2059 | ||
| 1796 | @lisp | 2060 | @lisp |
| 2061 | @group | ||
| 1797 | (defun use-package-normalize/:pin (name-symbol keyword args) | 2062 | (defun use-package-normalize/:pin (name-symbol keyword args) |
| 1798 | (use-package-only-one (symbol-name keyword) args | 2063 | (use-package-only-one (symbol-name keyword) args |
| 1799 | (lambda (label arg) | 2064 | (lambda (label arg) |
| @@ -1803,6 +2068,7 @@ after the keyword, for example: | |||
| 1803 | (t | 2068 | (t |
| 1804 | (use-package-error | 2069 | (use-package-error |
| 1805 | ":pin wants an archive name (a string)")))))) | 2070 | ":pin wants an archive name (a string)")))))) |
| 2071 | @end group | ||
| 1806 | @end lisp | 2072 | @end lisp |
| 1807 | 2073 | ||
| 1808 | @item | 2074 | @item |
| @@ -1810,13 +2076,13 @@ Create a handler. | |||
| 1810 | 2076 | ||
| 1811 | Once you have a normalizer, you must create a handler for the keyword. | 2077 | Once you have a normalizer, you must create a handler for the keyword. |
| 1812 | 2078 | ||
| 1813 | Handlers can affect the handling of keywords in two ways. First, it | 2079 | Handlers can affect the handling of keywords in two ways. First, they |
| 1814 | can modify the @code{state} plist before recursively processing the | 2080 | can modify the @code{state} plist before recursively processing the |
| 1815 | remaining keywords, to influence keywords that pay attention to the | 2081 | remaining keywords, to influence keywords that pay attention to the |
| 1816 | state (one example is the state keyword @code{:deferred}, not to be | 2082 | state (one example is the state keyword @code{:deferred}, not to be |
| 1817 | confused with the @code{use-package} keyword @code{:defer}). Then, | 2083 | confused with the @code{use-package} keyword @code{:defer}). Then, |
| 1818 | once the remaining keywords have been handled and their resulting | 2084 | once the remaining keywords have been handled and their resulting |
| 1819 | forms returned, the handler may manipulate, extend, or just ignore | 2085 | forms returned, the handlers may manipulate, extend, or just ignore |
| 1820 | those forms. | 2086 | those forms. |
| 1821 | 2087 | ||
| 1822 | The task of each handler is to return a @emph{list of forms} | 2088 | The task of each handler is to return a @emph{list of forms} |
| @@ -1830,6 +2096,7 @@ minimum code necessary is emitted as the result of a | |||
| 1830 | This is an example handler: | 2096 | This is an example handler: |
| 1831 | 2097 | ||
| 1832 | @lisp | 2098 | @lisp |
| 2099 | @group | ||
| 1833 | (defun use-package-handler/:pin (name-symbol keyword archive-name rest state) | 2100 | (defun use-package-handler/:pin (name-symbol keyword archive-name rest state) |
| 1834 | (let ((body (use-package-process-keywords name-symbol rest state))) | 2101 | (let ((body (use-package-process-keywords name-symbol rest state))) |
| 1835 | ;; This happens at macro expansion time, not when the expanded code is | 2102 | ;; This happens at macro expansion time, not when the expanded code is |
| @@ -1841,16 +2108,17 @@ This is an example handler: | |||
| 1841 | body | 2108 | body |
| 1842 | `((push '(,name-symbol . ,archive-name) | 2109 | `((push '(,name-symbol . ,archive-name) |
| 1843 | package-pinned-packages)))))) | 2110 | package-pinned-packages)))))) |
| 2111 | @end group | ||
| 1844 | @end lisp | 2112 | @end lisp |
| 1845 | 2113 | ||
| 1846 | @item | 2114 | @item |
| 1847 | Test it. | 2115 | Test it. |
| 1848 | 2116 | ||
| 1849 | After the keyword has been inserted into @code{use-package-keywords}, | 2117 | After the keyword has been inserted into @code{use-package-keywords}, |
| 1850 | and a normalizer and a handler defined, you can now test it by seeing | 2118 | and a normalizer and a handler has been defined, you can now test the |
| 1851 | how usages of the keyword will expand. For this, use @code{M-x | 2119 | keyword by seeing how usages of the keyword will expand. For this, |
| 1852 | pp-macroexpand-last-sexp} with the cursor set immediately after the | 2120 | use @w{@kbd{M-x pp-macroexpand-last-sexp}} with the cursor set |
| 1853 | @code{(use-package ...)} expression. | 2121 | immediately after the @code{(use-package @dots{})} expression. |
| 1854 | @end enumerate | 2122 | @end enumerate |
| 1855 | 2123 | ||
| 1856 | @c ---------------------------------------------------------------------------- | 2124 | @c ---------------------------------------------------------------------------- |