X-Git-Url: https://code.delx.au/gnu-emacs-elpa/blobdiff_plain/0ddafcfb4a683097a7cc4db9830b25bb16d8bd99..e8db6cc6f717f5ebd92e17abb1c7931324b29fd8:/README.md diff --git a/README.md b/README.md index f34b2abf7..e19fb5a54 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,20 @@ +

License GPL 3 +MELPA +MELPA Stable

+ + # emacs-async `async.el` is a module for doing asynchronous processing in Emacs. # Install +## Install dired-async + Add to your `.emacs.el`: - (when (require 'dired-aux) - (require 'dired-async)) + (autoload 'dired-async-mode "dired-async.el" nil t) + (dired-async-mode 1) This will allow you to run asynchronously the dired commands for copying, renaming and symlinking. @@ -16,8 +23,28 @@ to copy, rename etc... asynchronously from [helm](https://github.com/emacs-helm/ Note that with [helm](https://github.com/emacs-helm/helm) you can disable this by running the copy, rename etc... commands with a prefix argument. -If you don't want to make dired/helm asynchronous, you can either -disable this with `dired-async-be-async` or just load `async.el`. +If you don't want to make dired/helm asynchronous disable it with `dired-async-mode`. + +### Debian and Ubuntu + +Users of Debian 9 or later or Ubuntu 16.04 or later may simply `apt-get install elpa-async`. + +## Enable asynchronous compilation of your (M)elpa packages + +By default emacs package.el compile packages in its running emacs session. +This is not a problem when installing a new package (which is not actually loaded in current emacs) +but it may create errors and bad compilation when upgrading a package (old version of package is already loaded +and running in current emacs). +You can remedy to this by allowing async to compile your packages asynchronously, +(helm and magit actually do this by default, +so if you are using these packages they will compile asynchronously) +to do this, add to your init file: + + (async-bytecomp-package-mode 1) + + +You can control which packages will compile async with `async-bytecomp-allowed-packages`. +Set it to `'(all)` to be sure you will compile all packages asynchronously. # Usage @@ -26,7 +53,7 @@ The interface is intended to be very easy to use: ## async-start async-start START-FUNC FINISH-FUNC - + Execute START-FUNC (often a lambda) in a subordinate Emacs process. When done, the return value is passed to FINISH-FUNC. Example: @@ -40,7 +67,7 @@ done, the return value is passed to FINISH-FUNC. Example: ;; What to do when it finishes (lambda (result) (message "Async process done, result should be 222: %s" result))) - + If FINISH-FUNC is `nil` or missing, a future is returned that can be inspected using `async-get`, blocking until the value is ready. Example: @@ -57,7 +84,7 @@ using `async-get`, blocking until the value is ready. Example: (async-get proc))) If you don't want to use a callback, and you don't care about any return value -form the child process, pass the `'ignore` symbol as the second argument (if +from the child process, pass the `'ignore` symbol as the second argument (if you don't, and never call `async-get`, it will leave ``*emacs*`` process buffers hanging around): @@ -74,17 +101,18 @@ however, as an argument to `async-ready` or `async-wait`. ## async-start-process async-start-process NAME PROGRAM FINISH-FUNC &rest PROGRAM-ARGS - + Start the executable PROGRAM asynchronously. See `async-start`. PROGRAM is passed PROGRAM-ARGS, calling FINISH-FUNC with the process object when done. If FINISH-FUNC is `nil`, the future object will return the process object when -the program is finished. +the program is finished. Set DEFAULT-DIRECTORY to change PROGRAM's current +working directory. ## async-get async-get FUTURE - -Get the value from an asynchronously function when it is ready. FUTURE is + +Get the value from an asynchronously called function when it is ready. FUTURE is returned by `async-start` or `async-start-process` when its FINISH-FUNC is `nil`. @@ -92,7 +120,7 @@ returned by `async-start` or `async-start-process` when its FINISH-FUNC is async-ready FUTURE -Query a FUTURE to see if the ready is ready -- i.e., if no blocking +Query a FUTURE to see if its function's value is ready -- i.e., if no blocking would result from a call to `async-get` on that FUTURE. ## async-wait