This tool is inspired by article : Global interactive Emacs functions. It provides an idea to run Emacs functions outside of Emacs.
So I try to use this idea to wrtie a tool like lauchbar or Alfred. It can help user to quickly lauch app or run work flow.
I’m using it to replace the lauchbar.
Notice : I have refactored the code to remove the choose dependency and make an Emacs frame for filtering and previewing candidates. The design logic is significantly different. The origin code in this branch.
This tool has some pros and cons, and I think if you have the following needs, you can try to use it :
- you don’t want to pay for other tools like lauchbar or Alfred.
- you wish some function in Emacs could run out of Emacs.
- You’re familiar with Emacs, there are some plugins, and custom functions that you want to reuse.
- You don’t want to learn a new language or workflow of a new software
- …
- free: Whether Lauchbar or Alfred, you need to pay for it to use it comfortably and efficiently. Just need
Emacsand some open source software that you can use for free. - consistency: You can use the same features inside or outside of Emacs and have a similar experience.
- Simple Configuration: If you are familiar with Emacs, you can easily configure it with emacs-lisp without having to relearn the language and process of other tools.
- Scalability: You can write your own interactive functions and plug them into the tool, or use the Emacs plugins developed by others to extract the interaction functions and plug them into the tool.
- Not powerful for now: Obviously, the tool is not as powerful as lauchbar or Alfred. At the moment, it is only useful for my own needs. I will continue to improve according to my needs, and anyone is welcome to help improve it.
- Can’t perfectly support all Emacs interactive functions: There are currently some Emacs interaction functions that cannot be run outside of Emacs, such as
execute-extended-command. I don’t have the train of thought to support it yet.
- clone the project in your own emacs configuration files directory, like:
git clone git@github.com:ginqi7/global-interactive-emacs.git ~/.emacs.d/lisp/global-interactive-emacs- add the path to ‘load-path’
(add-to-list 'load-path (expand-file-name "~/.emacs.d/lisp/d/lisp/global-interactive-emacs"))
(add-to-list 'load-path (expand-file-name "~/.emacs.d/lisp/d/lisp/global-interactive-emacs/plugins"))
I split different functions into different plugins, you can choose by your needs.
(require 'global-interactive-emacs-frame)
(require 'global-interactive-emacs)
(require 'global-interactive-run-app)
(require 'global-interactive-kill-app)
(require 'global-interactive-password)