Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/waymondo/frog-jump-buffer
The fastest buffer-jumping Emacs lisp package around
https://github.com/waymondo/frog-jump-buffer
Last synced: 3 months ago
JSON representation
The fastest buffer-jumping Emacs lisp package around
- Host: GitHub
- URL: https://github.com/waymondo/frog-jump-buffer
- Owner: waymondo
- Created: 2019-03-18T21:01:24.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2022-11-14T01:46:10.000Z (almost 2 years ago)
- Last Synced: 2024-04-28T01:30:00.588Z (7 months ago)
- Language: Emacs Lisp
- Size: 5.67 MB
- Stars: 151
- Watchers: 6
- Forks: 5
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
## Frog Jump Buffer
### Description
`frog-jump-buffer` is the fastest buffer-jumping Emacs lisp package
around. It is the spiritual successor to
[`ace-jump-buffer`](https://github.com/waymondo/ace-jump-buffer) and is
powered by [`avy`](https://github.com/abo-abo/avy) via
[`frog-menu`](https://github.com/clemera/frog-menu). Just like
`ace-jump-buffer`, it allows you to hop to any Emacs buffer in 2-3 key
strokes.![example](example.gif)
### Installation
You can install it from [MELPA](http://melpa.org/) with `M-x package-install` or here’s a basic `use-package` declaration:
```emacs-lisp
(use-package frog-jump-buffer :ensure t)
```### Usage
#### `(frog-jump-buffer)`
This is the main entry-point. Bind it to your preferred key-binding.
It opens the `frog-menu` buffer selector. The buffers appear in order
of most recent display or selection.Selecting the `avy` character next to a buffer switches to that
buffer.Use `0` to toggle between opening in the same window or
`(other-window)`.The numbers `1` through `6` will cycle through the default buffer filters:
- `1`: show all buffers in the `(buffer-list)`
- `2`: filter buffers to the same mode as `current-buffer`
- `3`: filter buffers to only buffers represented by files
- `4`: show buffers from `recentf`, which can include killed buffers
- `5`: filter buffers to the same project as `current-buffer` (requires
[`projectiile`](https://github.com/bbatsov/projectile) to be installed)
- `6`: filter buffers to similarly named buffers. (i.e. if `(current-buffer)` is `frog.html`, show
`frog.css`, `*magit: frog*`, etc.)### Variables
#### `frog-jump-buffer-ignore-buffers`
This is a list of regexps of buffer names to ignore or buffer-matching
filter functions to use. If you want to cut down on the noise of unimportant buffers, you will
want to configure this. Here’s an example:```emacs-lisp
(dolist (regexp '("TAGS" "^\\*Compile-log" "-debug\\*$" "^\\:" "errors\\*$" "^\\*Backtrace" "-ls\\*$"
"stderr\\*$" "^\\*Flymake" "^\\*vc" "^\\*Warnings" "^\\*eldoc" "\\^*Shell Command"))
(push regexp frog-jump-buffer-ignore-buffers))
```#### `frog-jump-buffer-max-buffers`
This is the maximum number of buffers to show in the `frog-menu`. The
default is 12.#### `frog-jump-buffer-default-filter`
This is the default filter to use when invoking `frog-jump-buffer`. Shows all buffers by default. If
you would like to include recently killed buffers by default, you might want to set this to
`frog-jump-buffer-filter-recentf`.#### `frog-jump-buffer-include-current-buffer`
Set to `nil` to remove the current buffer from always being the first menu option. This is handy if
you would prefer `ESC` to be your menu dismissal command.#### `frog-jump-buffer-posframe-parameters`
Explicit frame parameters to be used by the posframe `frog-jump-buffer` creates.
#### `frog-jump-buffer-posframe-handler`
The posframe handler that `frog-jump-buffer` should use. Defaults to `(point)` being the bottom left
point of the posframe.#### `frog-jump-buffer-default-filters-capital-letters`
Set to a non-nil value to use capital letters instead of numbers for the default filter actions
instead of numbers.#### `frog-jump-buffer-use-default-filter-actions`
Set to `nil` to only use the filter actions defined in `frog-jump-buffer-filter-actions`.
#### `frog-jump-buffer-filter-actions`
This is an empty list available for adding user defined buffer filter actions to be available during
`frog-jump-buffer`.### `frog-jump-buffer-project-package`
Set the project package to use. Defaults to the popular `projectile` if it is installed. You can
set it to `project` if you have Emacs 28+ installed, or this will be the default if `projectile` is
not available.### Custom Filter Actions
You can add your own custom filter actions. Each action is a list of the form `(KEY DESCRIPTION FILTER-FUNCTION)`. Each filter function receives a buffer as an argument and should return a non-nil
value if that buffer should be considered display-worthy in `frog-menu-buffer`.Example usage:
```emacs-lisp
(defun frog-jump-buffer-filter-special-buffers (buffer)
(with-current-buffer buffer
(-any? #'derived-mode-p '(comint-mode magit-mode inf-ruby-mode rg-mode compilation-mode))))(setq frog-jump-buffer-filter-actions
'(("7" "[special]" frog-jump-buffer-filter-special-buffers)))
```If you would like to call a function that uses a specific filter
function by default, you can do so by defining a function like this:```emacs-lisp
(defun frog-jump-buffer-same-project ()
(interactive)
(let ((frog-jump-buffer-current-filter-function #'frog-jump-buffer-filter-same-project))
(frog-jump-buffer)))
```See `frog-menu-buffer.el` for more details.
### all-the-icons-ivy integration
To opt into experimental support for icons via `all-the-icons-ivy`, install that package and enable
the defcustom variable:``` emacs-lisp
(setq frog-jump-buffer-use-all-the-icons-ivy t)
```An icon (which represents the file type) will be inserted in front of the buffer name, such that it
is easier to spot the desired buffer to jump to. Here is a screenshot:![withIcon](withIcon.png)