Commit Graph

89 Commits

Author SHA1 Message Date
77e4cc4d58 💥 Remove :feature category
:feature was a "catch-all" category. Many of its modules fit better in
other categories, so they've been moved:

- feature/debugger -> tools/debugger
- feature/evil -> editor/evil
- feature/eval -> tools/eval
- feature/lookup -> tools/lookup
- feature/snippets -> editor/snippets
- feature/file-templates -> editor/file-templates
- feature/workspaces -> ui/workspaces

More potential changes in the future:

- A new :term category for terminal emulation modules (eshell, term and
  vterm).
- A new :os category for modules dedicated to os-specific functionality.
  The :tools macos module would fit here, but so would modules for nixos
  and arch.
- A new :services category for web-service integration, like wakatime,
  twitter, elfeed, gist and pastebin services.
2019-04-24 18:16:04 -04:00
4daa9271a0 Introduce general.el & rewrite map!
+ Now uses an overriding keymap for leader keys, so that it is always
  available, even outside of normal/visual states. In insert/emacs
  states, or in sessions where evil is absent, an alternative prefix is
  used for leader/localleader keys. See these variables:
  + doom-leader-prefix
  + doom-leader-alt-prefix
  + doom-localleader-prefix
  + doom-localleader-alt-prefix
+ Keybinds now support alternative prefixes through the new :alt-prefix
  property. This is useful for non-evil users and non-normal evil
  states. By default, this is M-SPC (leader) and M-SPC m (localleader).
+ Removed +evil-commands flag from config/default (moved to
  feature/evil/+commands.el).
+ config/default/+bindings.el has been split into
  config/default/+{evil,emacs}-bindings.el, which one is loaded depends
  on whether evil is present or not. The latter is blank, but will soon
  be populated with a keybinding scheme for non-evil users (perhaps
  inspired by #641).
+ The define-key! macro has been replaced; it is now an alias for
  general-def.
+ Added unmap! as an alias for general-unbind.
+ The following modifier key conventions are now enforced for
  consistency, across all OSes:
    alt/option      = meta
    windows/command = super
  It used to be
    alt/option      = alt
    windows/command = meta
  Many of the default keybinds have been updated to reflect this switch,
  but it is likely to affect personal meta/super keybinds!

The map! macro has also been rewritten to use general-define-key. Here
is what has been changed:

+ map! no longer works with characters, e.g. (map! ?x #'do-something) is
  no longer supported. Keys must be kbd-able strings like "C-c x" or
  vectors like [?C-c ?x].
+ The :map and :map* properties are now the same thing. If specified
  keymaps aren't defined when binding keys, it is automatically
  deferred.
+ The way you bind local keybinds has changed:

    ;; Don't do this
    (map! :l "a" #'func-a
          :l "b" #'func-b)
    ;; Do this
    (map! :map 'local "a" #'func-a
                      "b" #'func-b)

+ map! now supports the following new blocks:
  + (:if COND THEN-FORM ELSE-FORM...)
  + (:alt-prefix PREFIX KEYS...) -- this prefix will be used for
    non-normal evil states. Equivalent to :non-normal-prefix in general.
+ The way you declare a which-key label for a prefix key has changed:

    ;; before
    (map! :desc "label" :prefix "a" ...)
    ;; now
    (map! :prefix ("a" . "label") ...)

+ It used to be that map! supported binding a key to a key sequence,
  like so:

    (map! "a" [?x])  ; pressing a is like pressing x

  This functionality was removed *temporarily* while I figure out the
  implementation.

Addresses: #448, #814, #860
Mentioned in: #940
2018-12-22 04:14:43 -05:00
0312f8656a completion/helm: remove +helm-global-prompt
This could hide helpful prompt text.

Addresses #923
2018-10-03 00:02:01 -04:00
394633b5d8 Leave lifecycle management of helm buffers to helm
Could cause buffer processes to get killed, inadvertently.
2018-10-01 19:58:23 -04:00
5ef94de541 Minor refactor, reformat & comment revision 2018-09-18 21:39:54 -04:00
86d51dd056 Add +doom-dashboard-mode to swiper-font-lock-exclude
It breaks the dashboard
2018-09-09 09:58:22 -04:00
7d3ffdff06 Remove third line in section headers
This is truly important stuff. We've saved many lives with this update.
2018-09-09 09:58:19 -04:00
48c77b1126 Move helm-css-scss package to lang/web/+css 2018-09-09 09:58:18 -04:00
36bdf7782b completion/helm: don't hide minibuffer input line
Some helm sources don't display input in the headerline, despite
helm-echo-input-in-header-line's value, making your input invisible.
2018-08-31 23:44:21 +02:00
9eee22e3fc completion/helm: redesign keybindings
A more vim-friendly (and spacemacs-friendly) keybinding scheme.

May address #829
2018-08-24 01:47:44 +02:00
619ac43017 completion/helm: unbind <left>/<right> #829
Disables special behavior on <left>/<right> and <M-left>/<M-right>,
which are strange.
2018-08-24 01:08:39 +02:00
627aae436d completion/helm: add helm-ff-fuzzy-matching
Also resorts the fuzzy-match variable list.
2018-08-24 01:07:55 +02:00
ee73d6c9af Minor reformatting & comment tweaks 2018-08-21 03:34:39 +02:00
154b3c331b helm: remap find-library -> helm-locate-library
Is superior to find-library
2018-08-21 02:56:54 +02:00
c69543fecc Fix helm not cooperating with other popups
Like the compilation window
2018-08-15 23:32:53 +02:00
11b8ee55a1 Use helm-do-ag instead of helm-ag #805
Fixes project search matching against the leading file name.

And ensures modeline remains disabled.
2018-08-15 21:19:59 +02:00
90fa4a8c37 Add helm-ag-fuzzy-match support 2018-08-13 21:47:55 +02:00
5714ff423a Fix evil jumplist after jumping to ag match
helm-ag would formerly add multiple entries to the jump list. It now
only adds one, and recenters the window when jumping to an ag match.
2018-08-13 21:47:55 +02:00
b0c71c2492 Add +helm/workspace-mini command & bind to SPC b b
+ Rename +helm/persp-buffer-list to +helm/workspace-buffer-list
+ Silence compiler warnings when feature/workspaces is disabled
+ Throw error if feature/workspaces is disabled and these commands are
  called.
2018-08-13 03:47:30 +02:00
3b4fd56cac Force helm posframe to respect min-(width|height)
And enable solaire-mode if available, and unused in origin buffer (to
make it easier to see posframe over non-solaire-mode buffers).
2018-08-11 01:59:37 +02:00
7a216692e8 Don't modify helm-echo-input-in-header-line
This variable isn't reliable; some sources change it, making it
difficult to see our input.
2018-08-10 19:31:22 +02:00
3d363d4cb1 completion/helm: refactor posframe support (again) 2018-08-07 14:42:58 +02:00
85e837e06a Fix wrong-type-arg: integerp by posframe
Due to destructive advice.

Fixes #787
2018-08-07 12:57:21 +02:00
d5363a5a2e Fix recursive helm error in helm-buffers-list 2018-08-06 11:56:50 +02:00
2aaea3a0d5 Use helpful for helm-apropos 2018-08-06 00:31:24 +02:00
b56404f0ce Correct docstring for +helm-project-search-engines
Re:git-grep/grep fallback
2018-08-06 00:31:24 +02:00
bd0b7d2341 Remove wgrep from completion/helm (unused package) 2018-08-06 00:31:24 +02:00
d04efc9774 helm-imenu: don't autojump to symbol at point 2018-08-06 00:31:23 +02:00
9c11ee9eef Fix workspace-restricted helm-buffers-list
Now SPC b b and SPC b B can both enjoy the power of helm-buffers-list,
while the former is restricted to the buffers in the current workspace.
2018-08-06 00:31:23 +02:00
0cfd35cfc0 Refactor how helm mode-line is hidden 2018-08-06 00:31:22 +02:00
41697e4e6e Move helm posframe up slightly
And display input line in posframe.
2018-08-06 00:31:22 +02:00
ca6afcf3c7 Add +helm-posframe-border-width option
Controls posframe's internal-border-width
2018-08-06 00:31:18 +02:00
a9357bb467 completion/helm: use hide-mode-line-mode 2018-08-05 00:39:54 +02:00
860dff3e63 completion/helm: refactor posframe config 2018-08-05 00:39:54 +02:00
7f5e778b0c Replace helm-swoop with swiper-helm
Swiper is superior. The downside is it pulls in ivy as a dependency, but
that is acceptable considering how small it is.
2018-08-04 19:54:54 +02:00
b180aceaa8 completion/helm: fix 'n refactor +fuzzy flag
Didn't properly disable fuzzy search when +fuzzy flag was absent.
2018-08-04 18:42:38 +02:00
2c956593cf completion/helm: don't index HOME
Invoke helm-find-files instead
2018-08-04 16:00:11 +02:00
fb233bd37d completion/helm: fix evil keybinds in helm
Evil-mode was disabled in the minibuffer due to odd behavior, causing
all helm's evilified keybinds to be inaccessible.
2018-07-30 03:43:43 +02:00
5aef36951d Goto file keybind in helm-ag-edit buffers 2018-07-29 17:41:59 +02:00
e865526c75 Add +(helm|ivy)-project-search-engines variables
This allows you to control what search engines for project-search
commands (bound to SPC / p) to try, and in what order. If you didn't
want to use ripgrep, for instance, remove 'rg from these variables, or
move it to the end of the list.
2018-07-23 00:06:47 +02:00
afa1fe3fc5 Phase out meta keybinds in helm+evil integration
We want to generally avoid meta. M-RET is an exception, and is commonly
used as an "alternate open" key.
2018-06-25 15:45:24 +02:00
f6dc6ac74e Refactor out map.el usage
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.
2018-06-23 19:53:54 +02:00
6808c46b58 💥 Change set-popup-rule! usage
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!
2018-06-18 02:34:16 +02:00
ce86fa0557 helm-swoop: always split below current window 2018-06-17 17:19:33 +02:00
f8625a62ac Lazy-load helm-projectile 2018-06-16 15:05:08 +02:00
4122ff4314 Reformat helm package configs 2018-06-16 15:04:27 +02:00
44363cae40 General, minor refactor & revision
Across the board. All the boards.
2018-06-16 12:26:58 +02:00
cdcc4eec5d Refactor +helm*replace-prompt
In case +helm-global-prompt is nil, which will effectively disable this
advice.
2018-06-15 22:10:40 +02:00
d8b1e469bc Introduce autodefs to replace some settings
+ :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.
2018-06-15 03:42:01 +02:00
1e81a35461 Minimize dependence on map!
This is in preparation for general.el integration coming in 2.1.1. It is
very likely that map! will change (and even more, be split into several
macros). Not much, but change none-the-less. Specifically, the state
keywords (e.g. :nvi, :n, :i) will be removed in favor of a :state
property that takes a list, e.g. (normal visual insert).

In any case, both map! and general are also relatively expensive
compared to define-key and evil-define-key* (and the new define-key!
macro), so use that when we can.

This also means changes to either API won't affect Doom's modules in the
long term.
2018-06-03 15:46:00 +02:00