After some profiling, it turns out map-put and map-delete are 5-7x
slower (more on Emacs 25) than delq, setf/alist-get and add-to-list for
small lists (under 250 items), which is exactly how I've been using
them.
The only caveat is alist-get's signature is different on Emacs 25, thus
a polyfill is necessary in core-lib.
+ High vslot = unlikely to be replaced by other popups.
+ Make it large; backtraces are important!
+ Don't allow ESC to close it. It must be done manually, with q or zx
Now accepts a flat plist of all its former parameters, including new
:parameters and :actions properties to increase your control over the
fate of your windows.
The old usage of set-popup-rule! is deprecated and may not work right!
The :ui popup module has also seen a major refactor to improve
efficiency and load times.
Sorry! This is the last "big" change before 2.1!
+ :popup -> set-popup-rule!
+ :popups -> set-popup-rules!
+ :company-backend -> set-company-backend!
+ :evil-state -> set-evil-initial-state!
I am slowly phasing out the setting system (def-setting! and set!),
starting with these.
What are autodefs? These are functions that are always defined, whether
or not their respective modules are enabled. However, when their modules
are disabled, they are replaced with macros that no-op and don't
waste time evaluating their arguments.
The old set! function will still work, for a while.
This prevents void-variable +popup-buffer-mode-map errors that occur in
some hard to reproduce scenarios.
Also ensures that window-persistent-parameters is being restored when
+popup-mode is disabled.
load!'s first argument is no longer a symbol (that will cause
void-variable errors now) to save on unnecessary interning and simplify
compile-time logic. It accepts any valid form that evaluates to a string
now.
If you use load!, you need to change its argument to a string!
e.g. (load! +my-module) => (load! "+my-module")
(autosave . CDR)
This parameter determines what to do with modified buffers in closing
popup windows. CDR can be a t, 'ignore, a function or nil.
+ If t, no prompts. Just save them automatically (if they're
file-visiting buffers).
+ If 'ignore, no prompts, no saving. Just silently kill it.
+ If nil (the default), prompt the user what to do if the buffer is
file-visiting and modified.
+ If a function, the return value must return one of the other values.
It takes two arguments: the popup window and buffer.