Commit graph

39 commits

Author SHA1 Message Date
Miciah Masters
e8cdaac8d3 Unique defvar for each ts full-hint toggle
Instead of using a single variable for all transient states' full-hint
toggle functions, define a unique variable for each toggle function so that
toggling the full hint for one transient state does not affect the others.

* CHANGELOG.develop: Add an entry for this change.
* layers/+spacemacs/spacemacs-defaults/keybindings.el
(spacemacs--window-manipulation-ts-full-hint-toggle): New variable.
(spacemacs//window-manipulation-ts-toggle-hint)
(spacemacs//window-manipulation-ts-hint): Replace
spacemacs--ts-full-hint-toggle with
spacemacs--window-manipulation-ts-full-hint-toggle.
* layers/+spacemacs/spacemacs-layouts/config.el
(spacemacs--ts-full-hint-toggle): Delete variable.
(spacemacs--layouts-ts-full-hint-toggle)
(spacemacs--workspaces-ts-full-hint-toggle): New variables.
* layers/+spacemacs/spacemacs-layouts/funcs.el
(spacemacs//layouts-ts-toggle-hint, spacemacs//layouts-ts-hint): Replace
spacemacs--ts-full-hint-toggle with spacemacs--layouts-ts-full-hint-toggle.
(spacemacs//workspaces-ts-toggle-hint, spacemacs//workspaces-ts-hint):
Replace spacemacs--ts-full-hint-toggle with
spacemacs--workspaces-ts-full-hint-toggle.
2019-10-13 10:09:42 +02:00
Miciah Masters
7be37a2aed Use truth values for spacemacs--ts-full-hint
Use nil and t instead of 0 and 1 for spacemacs--ts-full-hint values.

* layers/+spacemacs/spacemacs-layouts/config.el
(spacemacs--ts-full-hint-toggle): Define with an initial value of nil.
* layers/+spacemacs/spacemacs-defaults/keybindings.el
(spacemacs//window-manipulation-ts-toggle-hint)
(spacemacs//window-manipulation-ts-hint):
* layers/+spacemacs/spacemacs-layouts/funcs.el
(spacemacs//layouts-ts-toggle-hint, spacemacs//layouts-ts-hint)
(spacemacs//workspaces-ts-toggle-hint, spacemacs//workspaces-ts-hint):
Replace (logxor ... 1) and (equal 1 ...) with (not ...) and a simple truth
check.
2019-10-13 10:09:42 +02:00
Gia Thanh Vuong
d6bbc257d0 layout layer: add more persistant actions to switch layout
helm-projectile-recent and project search
___
2019-09-15 21:40:34 +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
duianto
1554bdda9f Remove new layout confirmation question 2019-06-17 13:23:17 +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
Miciah Masters
25ac434e83 Only disable eyebrowse advice if it exists
Fix issue #11207.

Only try to disable eyebrowse's advice on rename-buffer if we can find that
advice.  If eyebrowse is older than version 0.7.6 (2017-11-22), the advice
will not exist, and attempting to delete it will cause an error:

    ad-disable-advice: rename-buffer is not advised

* layers/+spacemacs/spacemacs-layouts/funcs.el
(spacemacs//activate-persp-mode): Only disable the
eyebrowse-fixup-window-configs advice for rename-buffer if the advice
exists.
2018-08-28 21:57:27 +01: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
Codruț Constantin Gușoi
31264ffc84 Fixes errors when restoring a perspective
The function ends up being called with an argument due to the before advice.
2018-07-04 01:17:28 +03:00
Benjamin Reynolds
594fdc8f05 Rename spacemacs/mplist-get functions to be more descriptive
* spacemacs/mplist-get -> spacemacs/mplist-get-values
* spacemacs/plist-get -> spacemacs/mplist-get-value
* refactor spacemacs/mplist-get-value to be defined in terms of mplist-get-values

Ref #10803 See [comment]

[comment]: https://github.com/syl20bnr/spacemacs/pull/10803#issuecomment-395292606
2018-06-14 00:15:49 -04:00
syl20bnr
a417d05cd0 layouts: be sure spaceline is loaded before restoring layouts
fixes #10849
2018-06-11 11:53:20 -04:00
John Soo
0068e1978b spacemacs-layouts: fix projectile-switch-project-action
Fix #10177
2018-01-28 22:59:09 -05:00
Muneeb Shaikh
89933acbde spacemacs-layouts: fix creation of perspective with ivy
Fix #10240
2018-01-24 09:41:07 -05:00
Bruno Tavares
035fc2a648 Regression fix: Allow new project perspectives
Before the commit 4b111f7701 it was possible to create new perspectives from projects not available on the list.

It would be possible to provide a path to a project that has not been open previously by emacs, and have the perspective created. Now that a match is required, it is not possible anymore, as the path provided is not one of the possible matches on the list.

This commit changes the behavior back to allow accessing projects that have not been visited before. Without this change, one needs to open a specific project first, using `C-x C-e` or `SPC f f` and then switch to the layout.
2018-01-22 23:36:11 -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
syl20bnr
326965d4ce Happy New Year 2018! 2018-01-04 02:00:25 -05:00
bmag
cc1970ce44 move layouts: minor refactor 2017-10-21 16:12:41 +03: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
Eivind Fonn
d4b004433c Fix layout name generation 2017-05-25 13:51:26 +02:00
bmag
6fd0d2573b New dotvariable: auto-generate layout names
If dotspacemacs-auto-generate-layout-names is non-nil, and the user
tries to open a layout in a position that doesn't yet have a layout,
then create a new layout with an automatically generated name.
2017-05-25 13:40:28 +02:00
d12frosted
c8296e507b don't show warning on layout key clashes 2017-05-24 13:09:17 +02:00
deb0ch
8226f0070f do not filter for alternating buffers 2017-03-24 22:29:52 +03:00
syl20bnr
fb27ede558 Bump year in copyright headers
Happy New Year 2017!
2017-01-05 23:08:17 -05: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
duianto
98b5a2be4f
three words spellchecked
"horizonatl", swapped "a" and "t", resulting in: "horizontal"

"porpertized", swapped "o" and "r" , resulting in: "propertized"
"containg", added "in", resulting in: "containing"
2016-09-23 10:51:19 +03: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
d12frosted
97147993a6 remove old custom layout on override
For example, creating new custom layout `["e" . "Name"]` clashes with
`["e" . "Spacemacs"]`. After override `SPC l o` should not show both of
them, but only the override.
2016-07-05 00:23:16 -04:00
bmag
50bd692e98 Layouts: gui/terminal frames should have different workspaces
Use two different sets of workspaces for each perspective - one
set for graphical frames, and one set for terminal frames.
This is required because workspaces from graphical frames are not
compatible for use in terminal frames.
2016-05-11 20:46:53 -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
5d84473fca layouts: update arity for persp-before-switch-functions
The hooked functions must take 2 parameters, I just ignored the
second one as well. Not sure of the implication but it seems to work.
2016-04-12 22:09:19 -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
944960daf8 Move eyebrowse to spacemacs-layouts layer and add documentation
Add toggle capability with ? for workspaces transient state
Remove the variable eyebrowse-display-help
2016-03-20 21:48:06 -04:00