Commit graph

54 commits

Author SHA1 Message Date
Robert O'Connor
82ba73a1c0
update copyright to 2020 2020-09-23 21:25:01 +02:00
Thanh Vuong
b071baf256 [layout] fix persp-mode integration with helm v3.3
Helm v3.3 no longer uses ido to get buffer list. So the change perp-mode makes
to ido won't affect helm anymore. Hence helm buffer list commands such as
helm-mini and helm-buffer-list will shows all buffers regardless of current
layout. Also `SPC l l` crashes with new helm.

This PR fixes them. We use the new helm variable helm-buffer-list-reorder-fn
to filter buffers. Because we compose this value users are still able to
customize this variable.
2020-06-07 18:14:24 +02:00
CeleritasCelery
6fa6b66b75 Add functions to make variables layout local 2020-05-11 14:49:02 +02:00
Maximilian Wolff
463bbd5361
[layouts] Bind e to select a layout position dynamically 2020-03-31 21:31:50 +02:00
Gia Thanh Vuong
a4459dd283
Layout transient state: make jump-to-last-layout exit state when done 2020-02-26 20:35:11 +01:00
Magnus Therning
3496f0c1f2 [persp][helm][ivy] project perspective and open dired
Add key bindings to the `SPC p l` persp switch project prompt:
- helm `C-d`
- ivy `d` in the `M-o` actions list

They create a new perspective with the project name
and open a dired buffer at the project root.

The suggestion to also add it to ivy was provided by nixmaniack.
2020-01-19 12:13:46 +01:00
duianto
6440e2d5d7 TS formatting: workspaces & layouts
Remove empty lines:
- Two in the Layouts Transients State.
- Three in the Workspaces Transient State.

In the Layouts Transient State:

Move the navigation keys:
[n/C-l]    next layout
[N/p/C-h]  prev layout
closer to the top, to match the order in the Workspaces Transient State.

Change to a more generic description, without mentioning the other
completion name.
From: [l] layout w/helm/ivy
To:   [l] another layout

Shorten the descriptions:
From: [w] workspaces transient state
To:   [w] workspaces TS
and
From: [t] show a buffer without adding it to current layout
To:   [t] show buffer w/o adding to layout

Indicate what's being added:
From: [A] add all from layout
To:   [A] add all buffers from layout

In the Workspaces Transient State:

Rename "create" to "clone, because it's more descriptive and the
docstring for the variable "eyebrowse-new-workspace" says:
"nil: Clone last workspace."
From: [c/C] create workspace
To:   [c/C] clone workspace

Add "TS" to the description to indicate that it switches to the Layouts
Transient State and then it will match "workspaces TS" in the Layouts
Transient State.
From: [l] layouts
To:   [l] layouts TS

Instead of sorting "[l] layouts TS" alphabetically by it's key letter,
move it to the bottom of the "Go to" column. This has two benefits:
- The workspaces navigation keys are grouped together, without having
"[l] layouts TS" in the middle.
- And "[l] layouts TS" will be the last entry in the "Go to" column.
This matches the location of "[w] workspaces TS" in the Layouts
Transient State.

Change to a more generic description, without mentioning the other
completion name.
From: [w] workspace w/helm/ivy
To:   [w] another workspace
2019-09-13 23:57:33 +02:00
duianto
dccef21e97 Workspaces TS: Add single win workspace key
Updated the Workspaces Transient State "SPC l w".

Added a new key: "[s/S] single win workspace" to the Actions column.

It creates a new workspace with a single window, that shows the
Spacemacs home buffer.

Moved the existing key: "[c/C] create workspace" to the Actions column.
2019-09-10 22:24:27 +02:00
Thanh Vuong
0e9866efce spacemacs-layout layer: limit commmands to work within layouts
Add options to restrict some functions to current layout's buffers

Thanks smile13241324 and duianto for suggestions and fixing typos
2019-08-12 21:41:12 +02:00
Thanh Vuong
7bc23b895f Layout layer: counsel-projectile: requires fix
Guard :requires against ivy not projectile. projectile is already owned by
buil-in spacemacs-project layer, so it's always t.

This prevents install of ivy, counsel, swiper and counsel-projectile
packages regardless of helm layer
2019-07-28 16:45:53 +02:00
Miciah Masters
322528ca8d spacemacs-layouts: Fix adding buffers to new persp
Delete the hook that commit 9fcf8c898d added
to persp-created-functions, and change spacemacs/ivy-spacemacs-layouts,
spacemacs/helm-perspectives, spacemacs/helm-persp-switch-project, and
spacemacs/ivy-persp-switch-project to achieve the intended goal of adding
the desired buffers after creating a new perspective.

Change spacemacs/helm-persp-switch-project and
spacemacs/ivy-persp-switch-project as follows: If the user selects a
project but then quits without selecting a file or buffer, the new
perspective is now immediately killed.  Otherwise, if the perspective did
not already exist, any buffers that belong to the selected project are
added to the perspective.

Add the following actions to spacemacs/ivy-spacemacs-layouts and
spacemacs/helm-perspectives:

* Create a new perspective with the Spacemacs home buffer (default action).
* Create a new perspective with the buffers that belong to the current
  buffer's project.
* Create a new perspective with the buffers that belong to the current
  perspective (i.e., make a copy of the current perspective).

This commit resolves the problem reported in
9fcf8c898d (commitcomment-33343455).

This commit also fixes a problem with the default action for
spacemacs/ivy-spacemacs-layouts and spacemacs/helm-perspectives.  According to
commit 7b931a9f5b, the default action is supposed
to display the home buffer if the action creates a new perspective, which was
determined by checking whether the perspective was missing from the list of
perspectives _before_ switching.  However, commit
eb7ca651fe changed this logic so it was checking
whether the perspective was missing from the list of perspectives _after_
switching.  This commit restores the correct logic.

* CHANGELOG.develop: Update.
* layers/+completion/ivy/funcs.el (spacemacs/ivy-spacemacs-layouts): Add
"Copy Current Layout" and "Create Project Layout" actions to the docstring.
Use spacemacs//create-persp-with-home-buffer for the default action.
* layers/+completion/ivy/packages.el (ivy/post-init-persp-mode): Add
actions for spacemacs//create-persp-with-current-project-buffers and
persp-copy.
* layers/+spacemacs/spacemacs-layouts/funcs.el
(spacemacs||switch-layout): New macro.  Switch to the named perspective,
and initialize it using the provided forms if the perspective is new.
(spacemacs//create-persp-with-current-project-buffers): New function.
Create a new perspective with the current project's buffers.
(spacemacs||switch-project-persp): New macro.  Switch to the named
perspective, and evaluate the provided forms with
projectile-after-switch-project-hook bound with a hook that adds the
current project's buffers to the perspective.  If the user quits during the
evaluation of the forms, kill the perspective.
(spacemacs//create-persp-with-home-buffer): New function.  Switch to the
named perspective, and go to the Spacemacs home buffer if the perspective
is new.
(spacemacs/helm-perspectives): Use spacemacs//create-persp-with-home-buffer
for the default action.  Add actions for
spacemacs//create-persp-with-current-project-buffers and persp-copy.
(spacemacs//helm-persp-switch-project-action): New function.  Switch to the
named perspective and call projectile-switch-project-by-name, using the new
spacemacs||switch-project-persp macro.  Bind helm-quit-hook with a hook
that kills the new perspective if the user quits
projectile-switch-project-by-name.
(spacemacs/helm-persp-switch-project): Use
spacemacs//helm-persp-switch-project-action.
(spacemacs//ivy-persp-switch-project-action): New function.  Switch to the
named perspective and call counsel-projectile-switch-project-action with a
hook to add the project's buffers to the new perspective.
(spacemacs/ivy-persp-switch-project): Delete advice for
counsel-projectile-switch-project-action.  Use
spacemacs//ivy-persp-switch-project-action instead.
(spacemacs//add-project-buffers-to-persp): Deleted.
* layers/+spacemacs/spacemacs-layouts/packages.el
(spacemacs-layouts/init-persp-mode): Don't add a hook to
persp-created-functions.
2019-05-13 17:11:27 +02:00
Miciah Masters
9fcf8c898d spacemacs-layouts: Add project buffers to new persp
Fix issue #11282.

When a new perspective (layout) is created and we are in a Projectile
project, add all buffers belonging to that project to the perspective.

* layers/+spacemacs/spacemacs-layouts/funcs.el
(spacemacs//add-project-buffers-to-persp): Add new function.
* layers/+spacemacs/spacemacs-layouts/packages.el
(spacemacs-layouts/init-persp-mode): Add
spacemacs//add-project-buffers-to-persp to persp-created-functions.
2019-04-24 19:31:26 +02:00
duianto
f8ed4739fe Load helm before read-file-name and completing-read
Fixes helm not being loaded before calls to:
read-file-name and completing-read.

These are some commands that call either of those two functions:
spacemacs/rename-current-buffer-file (SPC f R)

In a Treemacs window:
treemacs-add-project-to-workspace (C-c C-p a)

In a Magit buffer:
magit-checkout (b b)

Thanks Miciah for a more elegant solution.

This commit also reverts:
Fix helm loading for layouts transient state #11705
because it's not needed anymore.

And the previously commented out transient hook minibuffer-setup-hook (it
doesn't seem to ever have been used) is removed because:
- It loads helm after a command is called that uses helm (instead of before)
- (spacemacs|hide-lighter helm-mode) has previously been moved to the
helm/init-helm :config section.
2019-04-03 21:27:08 +02:00
duianto
3de7081950 Cleanup which-key names
Moved:
- ("ai" "irc") to both the `erc` and `rcirc` layers. They don't have to be
  renamed until the layers are loaded.

- ("ay" "ipython notebook") to the `ipython-notebook` layer.

- ("p$" "projects/shell")
  ("'"  "open shell")
  ("as" "shells")
  to the `shell` layer.

- The commands with keybindings from spacemacs-bootstrap/packages.el to
  spacemacs-defaults/keybindings.el.

Removed:
- ("gd" "diff") it seems to be an old group name, there's no `SPC g d` group at
  the moment.

- ("Re" "elisp") and ("Rp" "pcre") because they have moved to:
  ("xr" "regular expressions")
  ("xre" "elisp")
  ("xrp" "pcre")

- ("xm" "move") seems to be an old move text group, the current keybindings are
  `SPC x J` and `SPC x K` which opens the Move Text Transient State.

- ("b" "persp-buffers") because `SPC b` is also renamed as ("b" "buffers") which
  is more general and not persp-mode specific.
2019-02-18 14:35:00 -05:00
deb0ch
b7dedb9bd6 layouts layer: fix helm loading 2019-01-20 16:24:11 +02:00
Miciah Masters
31f4c2a005 Advise rename-buffer when persp-mode activated
Before this commit, spacemacs-layouts/init-eyebrowse advised rename-buffer
with spacemacs//fixup-window-config.  However, this advice causes problems
if persp-mode is not activated when a function tries to rename a buffer.

In particular, Spacemacs's CI uses Emacs's batch mode to run
spacemacs/publish-doc, which uses rename-buffer.  In batch mode, persp-mode
is not activated, and consequently spacemacs/publish-doc was failing:

    Publishing file /home/travis/.emacs.d/news/news01.org using ‘org-html-publish-to-html’
    Skipping check for new version (reason: dotfile)
    Wrong type argument: hash-table-p, nil
    Warning (emacs): recentf mode: Wrong type argument: hash-table-p, nil
    spacemacs/publish-doc failed

In order to avoid problems, this commit moves the advising of rename-buffer
from spacemacs-layouts/init-eyebrowse to spacemacs//activate-persp-mode.

* layers/+spacemacs/spacemacs-layouts/packages.el
(spacemacs-layouts/init-eyebrowse): Move advice from here...
* layers/+spacemacs/spacemacs-layouts/funcs.el
(spacemacs//activate-persp-mode): ...to here.
2018-08-23 10:29:37 +01:00
Miciah
4972855231 Fix updating buffer names in window configurations
Eyebrowse stores window configurations for workspaces in frame properties.
These window configurations reference buffers by name, which means that
these references must be updated when a buffer is renamed.  To this end,
eyebrowse advises rename-buffer.

Spacemacs integrates eyebrowse with persp-mode by saving the eyebrowse
workspaces for a perspective as a parameter for that perspective so that
Spacemacs can restore a perspective's workspaces when switching to that
perspective.  However, eyebrowse's advice for rename-buffer fails to update
inactive workspaces, for which the window configurations are stored in
perspective parameters and not frame properties.

This commit disables eyebrowse's advice and adds perspective-aware advice
to update buffer references in workspace window configurations.

* layers/+spacemacs/spacemacs-layouts/funcs.el
(spacemacs//fixup-window-configs): New.
* layers/+spacemacs/spacemacs-layouts/packages.el
(spacemacs-layouts/init-eyebrowse): Remove eyebrowse-fixup-window-configs
advice for rename-buffer and advise with spacemacs//fixup-window-configs
instead.
2018-08-21 23:27:31 +03:00
Miciah Masters
6058921a02 layouts: Add free buffers to current layout
This fixes issue #5776.

* layers/+spacemacs/spacemacs-layouts/packages.el
(spacemacs-layouts/init-persp-mode):
Set persp-add-buffer-on-after-change-major-mode to 'free.
2018-08-09 22:43:11 +01:00
syl20bnr
a417d05cd0 layouts: be sure spaceline is loaded before restoring layouts
fixes #10849
2018-06-11 11:53:20 -04:00
syl20bnr
ebe4c60264 Revert "Defer packages by default using use-package-always-defer"
This reverts commit 29c78ce841 and all other fixes
that have been made afterwards.

The motivation is that use-package is seen by many as a replacement for
`require`. Is use-package always defer the loading of packages then is breaks
this use case, this does not respect POLA so even if it was making Spacemacs
loading faster (up to 3s faster on some startup on my machine) we just cannot
use it, it would be irresponsible. Spacemacs should be easy to use, loading
performance will come with time but it is not a priority.
2018-03-03 23:40:10 -05:00
syl20bnr
29c78ce841 Defer packages by default using use-package-always-defer
Warning now `:defer t` is implied, to force a package to load `:demand t` is
now necessary.
2018-02-27 23:32:52 -05:00
Muneeb Shaikh
6c476a3bd1 spacemacs-layouts: fix S/ivy-persp-switch-project
Fix #10177

counsel-projectile has updated custom actions mechanism[1] and
counsel-projectile-switch-project-actions is no more defined

Also,
 - moved counsel-projectile into spacemacs-layouts from ivy layer as
 perspective/layout based project switching depends on it instead of swiper
 - removed swiper from spacemacs-layouts

[1] a4e9a34d7f
2018-01-19 22:57:27 -05:00
Tad Fisher
4b111f7701 spacemacs-layouts: Use counsel-projectile-switch-project-action
Use `counsel-projectile-switch-project-action` instead of
`projectile-switch-project-by-name`, to match the additional actions available
via `counsel-projectile-switch-project` (SPC p p).
2018-01-18 01:16:58 -05:00
Steven Allen
60f11d8afc Fix using eyebrowse without persp-mode 2018-01-17 23:43:36 -05:00
syl20bnr
326965d4ce Happy New Year 2018! 2018-01-04 02:00:25 -05:00
Linus Pettersson
cb8b577fe1 Add functionality to move layouts in layout list 2017-10-21 16:04:13 +03:00
Ruslan Kamashev
a7e30bfcb4 Fix typo (issue #9655) 2017-09-29 12:47:35 +03:00
syl20bnr
3bce69aba1 Fix warnings about unrecognized keys without helm or ivy layers
In perspective transient state. b and l keys in the docstring have no
corresponding functions declared whenever both helm and ivy layers are not
used.

Add two private variables to fix the issue:
- spacemacs--persp-display-buffers-func
- spacemacs--persp-display-perspectives-func

These variables are set to the correct functions by the helm and ivy layers via
a use-package hook.

Default is `ignore` function so b and l does nothing if both helm and ivy layers
are not used, TODO: we should find a better default function.
2017-09-26 00:10:00 -04:00
duianto
e7f6475658 Workspaces transient state: create workspace keys
Problem:
Creating a new workspace from the workspaces transient state, requires that one
first looks for the next available workspace number, and then presses that
number key.

Solution:
Add the keys: `c` and `C` to create a new workspace. Lowercase exits the state
and uppercase keeps it open.

Notes:
This matches the behaviour of 0..9, which exits the state, and C-0..C-9, which
keeps it open.

This is the last key/command, from the C-c C-w eyebrowse key bindings, that was
missing from the workspaces transient state.
2017-06-18 19:12:49 +02:00
deb0ch
0dbfbd40ed bindings: improve buffers listing bindings
- bind spacemacs-layouts/non-restricted-buffer-list to SPC b B instead
of SPC B b
- rename buffer listing functions in which-key to be more explicit

PR title:

bindings: non-restricted-buffer-list-* to SPC B b instead of SPC B b

PR message:

I don't know what was the thought behind this, but `spacemacs-layouts/non-restricted-buffers-list-*` was alone in its `SPC B` prefix and `SPC b B` was almost free, only used in one layer that I would be surprised if it was widely used (`ibuffer`).

I also renamed buffers listing functions in `which-key` to be clearer for the user. Indeed, I find that names like `helm-mini` are pretty obscure and kind of defeat the purpose of `which-key` and `spacemacs-layouts-non-restricted-buffer-list-blah` was so long that it couldn't even be displayed.

Now the user can choose between `list-buffers` or `global-list-buffers` for listing buffers.
2017-06-12 12:46:35 +02:00
Don March
ac1168b6af Fix terminal RET and TAB in layouts/workspaces transient state
* Make RET and TAB (C-m and C-i) perform the same actions as <return>
  and <tab> so the maps work in the terminal.
* Catch <return> in workspaces transient state so that it exits without
  executing a command (like already done for layouts).
* Add "workspace w/helm/ivy" to docstring, mirroring the layouts
  docstring.
2017-05-24 14:05:15 +02:00
Pawan Dubey
83553a54da Move load layout from file option from Go To to Actions
and change doc string.
2017-05-24 12:55:35 +02:00
syl20bnr
6d2f66852c terraform: rename layer var. to terraform-auto-format-on-save, set it to nil
Set it to nil by default.
2017-04-12 00:04:38 -04:00
Leonard
806b39ca7a Fix #7644
persp-mode sets initial-buffer-choice to #[nil "�\207" [persp-special-last-buffer] 1] unless persp-is-ibc-as-f-supported is set to nil
2017-04-11 23:52:58 -04:00
deb0ch
8226f0070f do not filter for alternating buffers 2017-03-24 22:29:52 +03:00
syl20bnr
3072e72773 Replace use-package :diminish by spacemacs|hide-lighter 2017-02-13 08:38:37 -05:00
d12frosted
1a5579db6f
unify transient states
- use `..` for listing
- use 2 spaces between groups
- use 1 space between key binding and action
2017-01-31 18:27:01 +02:00
syl20bnr
fb27ede558 Bump year in copyright headers
Happy New Year 2017!
2017-01-05 23:08:17 -05:00
Bryan Gilbert
b515253026 move helm specific layout transient state keybindings to helm layer 2016-10-23 19:44:35 +02:00
bmag
0e1491c434 Make ivy restrict buffers to layout
Also create separate non-restricted-buffer-list (`SPC B b`) for helm and
ivy.
2016-10-17 13:45:43 +02:00
bmag
f9c74e2b58 Synchronise load/save of workspaces and layouts
Update current layout's workspaces before saving layouts to file (fixes
7214).
Load current layout's workspaces after loading layouts from file, if it's
one of the loaded layouts (fixes 6979).
2016-10-03 00:23:15 -04:00
Abdo Roig-Maranges
68becc5597 layouts: persp-mode changed variable to enable ido-hooks
Since persp-mode 2.5 the way to enable ido hooks changed again. Without
tihs, SPC b b lists all buffers instead of persp-local ones.
2016-09-20 20:09:22 +02:00
Abdo Roig-Maranges
a52422e653 layouts: fix B b b not restricting to layout-local buffers
This fixes two issues regarding layouts.

1. Since Bad-ptr/persp-mode.el@e950bf15, persp-mode requires setting
persp-hook-up-emacs-buffer-completion in order to install the hooks for
ido & friends. This variable is nil by default, making SPB b b not
restrict to layout-local buffers.

2. The function spacemacs-layouts/non-restricted-buffer-list removes a
hook and re-adds it later. This makes the assumption that the hook was
already present. If it was not (due to 1) then SPC B b changes global
state by adding that hook. Instead, just let-bind the hook variable
for the scope we need it changed.

This explains and partially fixes #5788 and #6266. It does not fix the
dependency on ido-mode. If ido-mode is excluded, persp-mode will not
install the hook for ido, and SPB b b will still be unrestricted.
2016-08-22 15:00:59 +02:00
syl20bnr
8f45a94095 ivy: perspective -> persp-mode and layout
Fix wrong package name.
Replace `perspective` words by `layout`
2016-05-31 23:39:47 -04:00
Christoph Paulik
67aeb73655 Defer loading of persp mode until after user-config
fix #3881
2016-05-05 13:01:47 +02:00
bmag
2a669648aa layouts: don't double activate persp-mode
If persp-mode is already activated, don't re-activate it. Should fix bug
where running dotspacemacs/sync-configuration-layers (SPC-f-e-R) resets
all the layouts.
2016-05-01 11:14:32 -04:00
bmag
cf3068e4ef layouts: persp-activated-hook -> persp-activated-functions
persp-mode has renamed persp-activated-hook to
persp-activated-functions, so we gotta update the hook.
2016-04-29 23:01:48 -04:00
syl20bnr
859f28473b layouts: use MELPA version of persp-mode 2016-04-12 22:05:24 -04:00
syl20bnr
c4d9ca8fba spacemacs layouts and workspaces tweaks
- add `l` to workspace transient state to go back to layout transient
  state
- remove erroneous `l` and `h` keys on layouts transient state
- unique documentation toggle for layouts and workspaces
- reformat and sort transient states documentation
2016-03-30 14:29:55 -04:00
syl20bnr
dd14afaf26 workspaces: new workspace clones the current one
Fixes #5566
2016-03-25 10:37:03 -04:00