From a17a6036dd4549514c7cecc7cdd93a571bf57ece Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Fri, 9 Dec 2022 04:15:32 +0100 Subject: [PATCH] Add conditional loading examples to use-package manual * doc/misc/use-package.texi (Conditional loading): Expand section with examples. Resolves https://github.com/jwiegley/use-package/issues/693 --- doc/misc/use-package.texi | 51 ++++++++++++++++++++++++++++++++++----- 1 file changed, 45 insertions(+), 6 deletions(-) diff --git a/doc/misc/use-package.texi b/doc/misc/use-package.texi index 2e1747fa78d..5e8af41d5e6 100644 --- a/doc/misc/use-package.texi +++ b/doc/misc/use-package.texi @@ -394,22 +394,61 @@ is provided as an alias for @code{:if}. Finally, the @code{:unless} keyword is the inverse of @code{:if}, such that @w{@code{:unless foo}} means the same thing as @w{@code{:if (not foo)}}. -For example, if you only want @samp{foo} in graphical Emacs sessions, -you could use the following: +For example, if you only want to load @samp{foo} in graphical Emacs +sessions, you could use the following: @lisp (use-package foo :if (display-graphic-p)) @end lisp -Another common use case is to make it conditional on the operating -system: +@subheading Some common use cases + +Here are some common cases for conditional loading, and how to achieve +them. + +@itemize + +@item Operating system + +This example loads a package only on GNU/Linux. See the +@code{system-type} docstring for other valid values. @lisp -(use-package foo - :if (memq window-system '(mac ns))) +:if (eq system-type 'gnu/linux) @end lisp +@item Window system + +This example loads a package only on macOS and X. See the +@code{window-system} docstring for valid values. + +@lisp +:if (memq window-system '(ns x)) +@end lisp + +@item Installed package + +This example loads a package only when the @samp{foo} package is +installed. + +@lisp +:if (package-installed-p 'foo) +@end lisp + +@item Libraries in @code{load-path} + +This example loads a package only when @file{foo.el} is available in +your @code{load-path} (for example, if you installed that file +manually): + +@lisp +:if (locate-library "foo.el") +@end lisp +@end itemize + +@subheading Making conditional loading affect @code{:preface} and @code{:ensure} + @cindex conditional loading before @code{:preface} or @code{:ensure} If you need to conditionalize a use-package form so that the condition occurs before even @code{:ensure} or @code{:preface}, use @code{when} -- 2.39.2