Giter VIP home page Giter VIP logo

spacemacs's Introduction

Made with Spacemacs GPLv3 Software Twitter

Spacemacs

philosophy | for whom? | screenshots | documentation | contribute | achievements | FAQ

Gitter Discord elisp state Donate Merchandise Recommend it


Quick Start

If you don't have an existing Emacs setup and want to run Spacemacs as your configuration, and if you have all prerequisites installed, you can install Spacemacs with one line:

  • shell:

    git clone https://github.com/syl20bnr/spacemacs $HOME/.emacs.d
  • Windows PowerShell:

    git clone https://github.com/syl20bnr/spacemacs $HOME/.emacs.d

    If HOME is not set in environment or in registry:

    git clone https://github.com/syl20bnr/spacemacs $env:APPDATA/.emacs.d

If you do have an existing Emacs configuration, look at the full installation instructions for other options.

Introduction

Spacemacs is a new way of experiencing Emacs -- it's a sophisticated and polished set-up, focused on ergonomics, mnemonics and consistency.

Just clone and launch it, then press the space bar to explore the interactive list of carefully-chosen key bindings. You can also press the home buffer's [?] button for some great first key bindings to try.

Spacemacs can be used naturally by both Emacs and Vim users -- you can even mix the two editing styles. Being able to quickly switch between input styles, makes Spacemacs a great tool for pair-programming.

Spacemacs is currently in beta, and any contributions are very welcome.

spacemacs_python

Features

  • Great documentation: access the Spacemacs documentation with SPC h SPC.
  • Beautiful GUI: you'll love the distraction free UI and its functional mode-line.
  • Excellent ergonomics: all the key bindings are accessible by pressing the SPC or Alt-m.
  • Mnemonic key bindings: commands have mnemonic prefixes like SPC b for all the buffer commands or SPC p for the project commands.
  • Batteries included: discover hundreds of ready-to-use packages nicely organized in configuration layers following a set of conventions .

Documentation

Comprehensive documentation is available for each layer by pressing SPC h SPC.

You can also check the general documentation, quick start guide and the FAQ.

Getting Help

If you need help, ask your questions in the Gitter Chat and a member of the community will help you out.

If you prefer IRC, connect to the Gitter Chat IRC server and join the #syl20bnr/spacemacs channel.

Last but not least there are a lot of high class tutorials available on YouTube:

Prerequisites

  1. A package manager if the OS doesn't have one already.

  2. Spacemacs is an extension of a popular text editor called Emacs. So you'll need Emacs installed first.

    Spacemacs requires Emacs 27.1 or above. The development version of Emacs is not officially supported, but it should nevertheless be expected to work.

  3. git is required to download and update Spacemacs.

  4. Tar, in particular GNU Tar, is required to install and update Emacs packages used by Spacemacs.

  5. (Optional) The default font used by Spacemacs is Source Code Pro. You may customize your own font settings and choose another font. If you want to use this default font, it must be installed.

    Spacemacs also uses fallback fonts to ensure certain Unicode symbols it uses symbols appear correctly. The fonts used are determined by the OS:

    If the mode-line doesn't look similar to the picture at the top of this page, make sure you have the correct fallback font installed.

  6. (Optional) Various commands in Spacemacs needs one of the following line searching program:

    Grep is very slow but it's widely available on most systems and is used as an fallback option.

    We strongly recommend ripgrep over other line searching programs, for its blazing fast speed. The following subsections helps you to install it.

Linux

  1. Most Linux distribution ships a package manager already and if this is the case you are all set for this step.

    If it doesn't, you may need to build the softwares mentioned below from their sources.

  2. In most distributions, Emacs is installed via an emacs package from the package manager.

    N.B. DO not install XEmacs because it's not supported by Spacemacs. XEmacs is an old fork of Emacs with various subtle differences.

    N.B. Some Linux distributions support only Emacs versions older than 27.1. In this case you should build it from source instead.

  3. Very likely Git is already installed on your system. Otherwise, you should be able to install git from your system's package manager.

  4. Very likely Tar is already installed on your system. Otherwise, you should be able to install tar from your system's package manager.

  5. (Optional) If Nerd Fonts and Nanum Gothic are available from your distribution's package manager, you should install it there.

    Otherwise, the generic way to install it is:

    1. Download the latest pre-built TTF font from https://github.com/adobe-fonts/source-code-pro/releases/latest and https://fonts.google.com/specimen/Nanum+Gothic.

    2. Extract the archive and move the font files to ~/.fonts.

    3. Refresh font cache with:

    fc-cache -fv
  6. (Optional) If your distribution is listed here, follow the instructions. Otherwise, you can download its pre-built binary or build it from source.

macOS

  1. The most popular package manager on macOS is Homebrew, to install it:

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  2. Several options exist for installing Emacs on macOS:

    1. Emacs Plus features additional functionalities over base Emacs.

      brew tap d12frosted/emacs-plus
      
      # install latest stable release, with Spacemacs icon and native compilation
      brew install emacs-plus --with-spacemacs-icon --with-native-comp
    2. Emacs Mac Port adds native GUI support to Emacs 28. And the full list of features is available here.

      brew tap railwaycat/emacsmacport
      brew install emacs-mac
    3. Emacs for Mac OS X is the binary build of GNU Emacs, without any extra feature.

      brew install --cask emacs
  3. To install git:

    brew install git
  4. macOS ships with BSD Tar, but there are reports of weird issues so we require GNU Tar instead.

    brew install gnu-tar
  5. (Optional) To install Source Code Pro Font:

    brew tap homebrew/cask-fonts
    brew install --cask font-source-code-pro

    Arial Unicode MS is shipped with macOS v10.5 and later so you don't need to install it manually.

  6. (Optional) You can install ripgrep via Homebrew:

    brew install ripgrep

Windows

  1. We recommend Scoop as the package manager for Windows users. You can install it via PowerShell:

    Set-ExecutionPolicy RemoteSigned -Scope CurrentUser # Optional: Needed to run a remote script the first time
    irm get.scoop.sh | iex
  2. Emacs can be installed in PowerShell:

    scoop bucket add extras
    scoop install emacs
  3. To install git in PowerShell:

    scoop bucket add main
    scoop install git
  4. Windows 10 build 17063 and later ships with BSD Tar, but it's required to install GNU Tar instead to avoid possible issues. Alternatively, if you are running an earlier version of Windows, Tar isn't installed. In either case, you can install GNU Tar via:

    scoop bucket add main
    scoop install tar
  5. To install Source Code Pro Font in PowerShell:

    scoop bucket add KnotUntied_scoop-fonts https://github.com/KnotUntied/scoop-fonts
    scoop install sourcecodepro

    MS Gothic and Lucida Sans Unicode are shipped with Windows 2003 and later so you don't need to install it manually.

  6. (Optional) You can install ripgrep in PowerShell:

    scoop bucket add main
    scoop install ripgrep

Install

Default Install

  1. The default installation downloads Spacemacs to the .emacs.d directory in your HOME directory.

    But in the case of Windows, HOME is not set out-of-box. We recommend you to set it as an environment variable, with the same value as environment variable HOMEPATH, which usually looks like C:\Users\<username>.

  2. Since Spacemacs will now be downloaded at $HOME/.emacs.d, if it already exists it'll be overridden.

    Also, if you have either $HOME/.emacs.el or $HOME/.emacs, they will appear before Spacemacs in Emacs's initialization steps. Thus they must be renamed in order for Spacemacs to load correctly.

    To backup/rename the aforementioned files/directory, in shell:

    [ -d $HOME/.emacs.d ] && mv $HOME/.emacs.d $HOME/.emacs.d.bak
    [ -f $HOME/.emacs.el ] && mv $HOME/.emacs.el .emacs.el.bak
    [ -f $HOME/.emacs ] && mv $HOME/.emacs $HOME/.emacs.bak

    or in PowerShell:

    if( TestPath -Path $HOME/.emacs.d )
    {
        Rename-Item $HOME/.emacs.d $HOME/.emacs.d.bak
    }
    if( TestPath -Path $HOME/.emacs.el )
    {
        Rename-Item $HOME/.emacs.el $HOME/.emacs.el.bak
    }
    if( TestPath -Path $HOME/.emacs )
    {
        Rename-Item $HOME/.emacs $HOME/.emacs.bak
    }
  3. Now clone this repository with Git. The following work for both shell and PowerShell:

    git clone https://github.com/syl20bnr/spacemacs $HOME/.emacs.d

    In case you have a limited internet connection or limited speed:

    git clone --depth 1 https://github.com/syl20bnr/spacemacs ~/.emacs.d
  4. Now you can launch Emacs and Spacemacs will be loaded.

Alternative Install Location

To install Spacemacs in a different location, we first need to introduce how Spacemacs is loaded:

When Emacs is started, it looks for the init file in a deterministic way. The default installation exploits it by occupying $HOME/.emacs.d/init.el and let Emacs use it as its init file.

In other word, in default installation, Emacs find and load $HOME/.emacs.d/init.el, which is then responsible to load other files in $HOME/.emacs.d.

If you want to install Spacemacs to a different location, you need to make sure it's loaded by Emacs in one of its init file.

For example, if you've cloned Spacemacs to $HOME/Spacemacs, and if you use $HOME/.emacs.el as Emacs init file, then the following lines in $HOME/.emacs.el:

;; load Spacemacs's initialization file, "~" is equivalent to "$HOME"
(load-file "~/Spacemacs/init.el")

First Launch and Configuration

  1. After cloning Spacemacs, the first time when you launch Emacs, Spacemacs will automatically install the essential packages it requires. This step is the bootstrap.

  2. Once the bootstrap packages are installed, Spacemacs checks whether you have an customization file $HOME/.spacemacs, known as dotspacemacs:

    • If it already exists, Spacemacs loads it as the configuration.
    • Otherwise, you need to answer a few questions and Spacemacs will generate the dotspacemacs file for you.

    If you are new to Emacs and/or Spacemacs, it's fine to just accept the default choices. They can be changed in the dotspacemacs file later.

  3. Spacemacs will download and install remaining packages it will require, according to your dotspacemacs. When the all the packages have been installed, restart Emacs to complete the installation.

  4. dotspacemacs is the configuration file for Spacemacs, it's self explanatory and is written in Emacs Lisp. Read general documentation and quick start guide for more information.

  5. In case you want to store your dotspacemacs at another location, say under $HOME/.spacemacs.d:

    • First set the environment variable SPACEMACSDIR to $HOME/.spacemacs.d.
    • Move $HOME/.spacemacs to $HOME/.spacemacs.d/init.el.

    In other word, set SPACEMACSDIR to the parent directory of your dotspacemacs, and move dotspacemacs to the said directory.

Spacemacs logo

For Linux users, create spacemacs.desktop in ~/.local/share/applications/ using this .desktop file as a reference. Change the Name parameter to Name=Spacemacs and the Icon parameter to Icon=/PATH/TO/EMACSD/core/banners/img/spacemacs.png where PATH/TO/EMACSD is the path to your .emacs.d directory, by default ~/.emacs.d.

For macOS users, you need to download the .icns version of the logo and simply change the logo on the Dock.

Notes

  • Depending on the installed version of GnuTLS, securely installing Emacs packages may fail. It may also fail if you have a bad internet environment. In either case it is possible to install packages using emacs --insecure. However be aware that this means your packages will be transferred using HTTP, use at your own risk.

  • (Windows) If the following error occurs after starting Emacs:

    The directory ~/.emacs.d/server is unsafe
    

    Fix it by changing the owner of the directory ~/.emacs.d/server:

    • From Properties select the Tab “Security”,
    • Select the button “Advanced”,
    • Select the Tab “Owner”
    • Change the owner to your account name

    Source: Stack Overflow

  • (Windows) The period (dot) before a file or folder name means that it's a hidden file or folder. To show hidden files and folders:

    • Press the Windows key
    • Type File explorer options
    • Select the View tab at the top
    • Check Show hidden files, folders and drives
    • Click OK

Update

Spacemacs relies solely on a rolling update scheme based on the latest changes available. To update Spacemacs, simply pull the latest changes from the develop branch:

  1. Close Emacs and update the git repository:

    git pull --rebase
  2. Restart Emacs to complete the upgrade.

After updating Spacemacs, you should also check if any updates are available for your packages. On the Spacemacs Home Buffer SPC b h, click (press RET) on the [Update Packages] button, or use the convenient keybinding SPC f e U

Upgrading from the deprecated master branch

If you are still on the old master branch (i.e., if git branch --show-current shows master instead of develop), you need to upgrade to develop first.

Quotes

Quote by ashnur:

«I feel that spacemacs is an aircraft carrier and I am playing table tennis
on the deck as a freerider.»

Quote by deuill:

«I LOVE SPACEMACS AND MAGIT

 That is all»

Contributions

Spacemacs is a community-driven project, it needs you to keep it up to date and to propose great and useful configurations for all the things!

Before contributing, be sure to consult the contribution guidelines and conventions.

Communities

Spacemacs Everywhere

Once you've learned the Spacemacs key bindings, you can use them in other IDEs/tools, thanks to the following projects:

  • Intellimacs - Spacemacs' like key bindings for IntelliJ platform
  • Spaceclipse - Spacemacs’ like key bindings for Eclipse
  • SpaceVim - A community-driven modular vim distribution
  • VSpaceCode - Spacemacs’ like key bindings for Visual Studio Code

License

The license is GPLv3 for all parts specific to Spacemacs, this includes:

  • the initialization and core files
  • all the layer files
  • the documentation

For the packages shipped in this repository, you can refer to the files header.

Spacemacs logo by Nasser Alshammari released under a Creative Commons Attribution-ShareAlike 4.0 International License.

Supporting Spacemacs

The best way to support Spacemacs is to contribute to it either by reporting bugs, helping the community on the Gitter Chat or sending pull requests.

You can show your love for the project by getting cool Spacemacs t-shirts, mugs and more in the Spacemacs Shop.

If you want to show your support financially, then you can contribute to Bountysource, or buy a drink for the maintainer by clicking on the Paypal badge.

If you used Spacemacs in a project, and you want to show that fact, you can use the Spacemacs badge: Built with Spacemacs

  • For Markdown:

    [![Built with Spacemacs](https://cdn.rawgit.com/syl20bnr/spacemacs/442d025779da2f62fc86c2082703697714db6514/assets/spacemacs-badge.svg)](https://develop.spacemacs.org)
  • For HTML:

    <a href="https://develop.spacemacs.org"><img alt="Built with Spacemacs" src="https://cdn.rawgit.com/syl20bnr/spacemacs/442d025779da2f62fc86c2082703697714db6514/assets/spacemacs-badge.svg" /></a>
  • For Org-mode:

    [[https://develop.spacemacs.org][file:https://cdn.rawgit.com/syl20bnr/spacemacs/442d025779da2f62fc86c2082703697714db6514/assets/spacemacs-badge.svg]]
    

Thank you!

spacemacs's People

Contributors

bcc32 avatar bmag avatar cestdiego avatar cpaulik avatar d12frosted avatar dalanicolai avatar danielwuz avatar deb0ch avatar duianto avatar emacspace avatar jaremko avatar justbur avatar lebensterben avatar miciah avatar nixmaniack avatar person808 avatar punassuming avatar robbyoconnor avatar sdwolfz avatar smile13241324 avatar spacemacsbot avatar streakycobra avatar sunlin7 avatar swaroopch avatar syl20bnr avatar thanhvg avatar thebb avatar trishume avatar tuhdo avatar yyoncho avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

spacemacs's Issues

Sometimes powerline does not load

Some types of file opening don't load the powerline after startup. I think this is caused by over-zealous lazy loading. This only happens for certain file types, which leads me to suspect it is something to do with less-fancy major modes not trying to modify the modeline and thus not calling the hooks that lazy-load powerline.

It happens when loading files in any way and for certain types including: directories, .plist files, some other things I don't remember.

Reproducible Steps

  • Start spacemacs
  • Open a directory with emacsclient (or any other method)
  • Modeline is blank

If this is due to lazy loading, this could potentially be fixed by not lazy-loading powerline. This makes sense since when would you ever start emacs and do a bunch of actions where you want none of them to have a powerline?

Error Messages

Note in the second message it mentions some flycheck-mode thing being void. This makes me suspect it is a lazy loading problem, and that this issue happens for any file type that flycheck does not support.

This is this error I get in messages after startup:

Eager macro-expansion failure: (error "Autoloading failed to define function defpowerline")
Error: (file-error "Cannot open load file" "no such file or directory" "powerline")
Error: (file-error "Cannot open load file" "no such file or directory" "tex-site")

And then this error after loading one of the aforementioned file types:

Error during redisplay: (eval (let* ((active (powerline-selected-window-active)) (line-face (if active (quote mode-line) (quote mode-line-inactive))) (face1 (if active (quote powerline-active1) (quote powerline-inactive1))) (face2 (if active (quote powerline-active2) (quote powerline-inactive2))) (state-face (if active (spacemacs/current-state-face) face2)) (flycheckp (and spacemacs-mode-line-flycheckp (symbolp flycheck-mode) (symbol-value flycheck-mode) (or flycheck-current-errors (eq (quote running) flycheck-last-status-change)))) (vc-face (if (or flycheckp spacemacs-mode-line-minor-modesp) face1 line-face)) (separator-left (intern (format "powerline-%s-%s" powerline-default-separator (car powerline-default-separator-dir)))) (separator-right (intern (format "powerline-%s-%s" powerline-default-separator (cdr powerline-default-separator-dir)))) (lhs (append (list (powerline-raw (spacemacs/window-number) state-face)) (if anzu--state (list (funcall separator-right state-face face1) (powerline-raw (anzu--update-mode-line) face1) (funcall separator-right face1 line-face)) (list (funcall separator-right state-face line-face))) (list (powerline-raw "%*" line-face (quote l)) (powerline-buffer-size line-face (quote l)) (powerline-buffer-id line-face (quote l)) (powerline-raw " " line-face) (funcall separator-left line-face face1) (powerline-major-mode face1 (quote l)) (powerline-raw " " face1) (funcall separator-right face1 line-face)) (if flycheckp (list (powerline-raw " " line-face) (powerline-raw (spacemacs//custom-flycheck-lighter error) (quote spacemacs-mode-line-error-face)) (powerline-raw (spacemacs//custom-flycheck-lighter warning) (quote spacemacs-mode-line-warning-face)) (powerline-raw (spacemacs//custom-flycheck-lighter info) (quote spacemacs-mode-line-info-face)))) (if (and flycheckp spacemacs-mode-line-minor-modesp) (list (funcall separator-left line-face face1) (powerline-raw "  " face1) (funcall separator-right face1 line-face))) (if spacemacs-mode-line-minor-modesp (list (powerline-minor-modes line-face (quote l)) (powerline-raw mode-line-process line-face (quote l)) (powerline-raw " " line-face))) (if (or flycheckp spacemacs-mode-line-minor-modesp) (list (funcall separator-left (if vc-face line-face face1) vc-face))) (list (powerline-vc vc-face) (powerline-raw " " vc-face) (funcall separator-right vc-face face2)))) (rhs (list (funcall separator-right face2 face1) (powerline-raw " " face1) (powerline-raw "%l:%2c" face1 (quote r)) (funcall separator-left face1 line-face) (powerline-raw " " line-face) (powerline-raw "%p" line-face (quote r)) (powerline-chamfer-left line-face face1) (let ((progress (format-mode-line "%p"))) (if (string-match "%" progress) (powerline-hud state-face face1)))))) (concat (powerline-render lhs) (powerline-fill face2 (powerline-width rhs)) (powerline-render rhs)))) signaled (void-variable flycheck-mode)

helm-spacemacs

Make sources for helm to quickly access various part of Spacemacs (ie. an init function in a given layer)

Consideration for reduced number of default packages

I was using Vim for 6 years before I tried Evil, and had finally gotten in the hang of using Emacs with multiple require 'init-packages until I found this repo. I really like the way you set up extensions and packages, in addition to having a call to an init function on each package load, which is very reminiscent to how I hacked Vundle to load some autoload functions based on the package name loaded.

One question I had was whether you ever considered refactoring some of the package definitions into separate contribution layers for some advanced features and languages. I know you can add a package name to a variable to not load it, but I have about 40 packages in that variable, (mostly language packages I do not use). The idea being that you basically have a bare bones emacs environment to still have a decent experience and then maybe make a spacemacs-advanced contribution layer that loads everything else (it can even be set as default).

Anzu mode displays in all windows in all frames

The anzu-mode thing in the powerline appears in all windows, even ones that aren't being searched. I love the addition of anzu-mode and it is great, but this is kinda annoying.

It's visually distracting to have all my emacs windows and frames leap into motion with 10 different Anzu mode things changing all at once while I'm searching.

I might fix this out myself in a day or two once I get a better project-tree setup going. Currently the main downgrade from my previous editor (Sublime Text) is that I really don't like neotree. But after that I'll work on fixing up little things like this.

Move to using a git flow

Right now everything is going into master (which I depend on with my work machine!) so stability is at risk. I propose moving to nvie's incredibly popular flow (which there's even tooling around).

So this repository should have a develop branch that is the very latest version. master is your latest stable version. When you want to add things you create feature/{FEATURE-NAME} and pull request it into develop. This is just touching on the subject though, I'd recommend reading that blog post I linked above.

Then we could implement semver so releases can be associated with a meaningful version. This allows users to stick at versions if they need to and only upgrade when desired. It should be more stable for day to day use and will allow you to write up release / upgrade notes when a new version is done.

Develop spacemacs function to update spacemacs

For people following a certain branch, we need a function that will update spacemacs, this should both update the repo to the latest checkout, but also update all extension level submodules.

Perhaps also integrate this in startup, so in addition to adding packages, we also update submodules. The latest switch for nerd-commenter as an extension was missed in my setup when I just did a git pull

Add support for Emacs 24.4

Issue to track progress toward a fill support of Emacs 24.4.

  • OS X: Homebrew build with flag --with-x:
    • minibuffer takes more space (more vertical lines)
    • subword displays a lighter
    • mode-line colors from solarized are not accurate in the inactive buffers
    • deletion of orphan package seems broken

Missing deferred package in Emacs 24.4

After updating my spacemacs to b50bda33ea2506acc374159c0df7e6cc7090a9ddh today, after the first launch it went through an orphan package deletion cycle where it says it deleted 11 packages, which it didn't list. I don't think there should have been that many orphaned packages, it might have been a bit overzealous.

Now on startup I get a warnings buffer opening up with the following error (yes it is repeated 3 times):

Warning (emacs): Unable to activate package `concurrent'.
Required package `deferred-0.3.1' is unavailable
Warning (emacs): Unable to activate package `concurrent'.
Required package `deferred-0.3.1' is unavailable
Warning (emacs): Unable to activate package `concurrent'.
Required package `deferred-0.3.1' is unavailable

I suspect the orphan deleter might have deleted the deferred package even though concurrent depends on it.

Popwin causes helm buffer display error in neotree window


This bug causes neotree-rename-node and neotree-create-node fail for those who use helm as completion system.


Step to reproduce:

  1. open a neotree window with <leader key> f t
  2. in neotree window, M-x helm-mini. An error message should display:
Window too small for splitting

This is caused by line 1608 in spacemacs/packages.el,

(push '("^\*helm.+\*$" :regexp t  :position bottom) popwin:special-display-config)

Not sure what we use popwin with helm for. Is it possible to remove helm from popwin?

[Emacs 24.4] Improve fullscreen support

In Emacs 24.4 there are 2 functions to toggle the frame fullscreen:

  • toggle-frame-fullscreen removes window manager decoration (no title bar, no taskbar on windows)
  • toggle-frame-maximized respects window manager decoration (regular maximize)

On windows, it is not natural to hide the decorations.

2 possibilities for the behavior of dotspacemas-fullscreen-at-startup:

  • dependending on the window system we dispatch to toggle-frame-fullscreen or toggle-frame-maximized (say the latter for Windows only)
  • specific symbol value for the variable:
    • nil, with-decoration, without-decoration
    • nil, fullscreen, maximized

Need your feedback.

"S" binding conflict

Getting this on startup under OS X, emacs 24.3:

Warning (initialization): An error occurred while loading `/Users/cc/.emacs.d/init.el':

error: Key sequence S c starts with non-prefix key S

You have evil-leader setting "S" to shell command, and then later using it as a prefix for another command.

Theme cycling fails with void definition

Symbol's function definition is void: spacemacs/cycle-spacemacs-theme

I haven't nailed down a cause, yet, just something I noticed. I'll let you know if I find anything out.

Makefile for dependencies

Makefile or alike in order to easily fetch the dependencies required by some modes (ie. aspell for Flyspell)

  • Flyspell --> aspell
  • Pylookup --> run make
  • Flycheck Python --> flake8
  • Python test runner --> nose, nose-fixes

...

Try to put custom variables in ~/.spacemacs

Try to put this automatically generated configuration stuff in ~/.spacemacs:

(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)

Orphan package problem?

OSX, emacs 24.3... After a fresh install of spacemacs with no .spacemacs I get this in the spacemacs buffer:

Loading.........................................................OK!
Found 23 orphan package(s) to delete...
--> deleting async... [1/23]Ready!
[126 packages loaded in 3.255s]

and this in the Warnings buffer:

Warning (initialization): An error occurred while loading `/Users/cc/.emacs.d/init.el':

Wrong type argument: arrayp, ([cl-struct-package-desc async (20141001 151) Asynchronous processing in Emacs nil nil nil /Users/cc/.emacs.d/elpa/async-20141001.151 nil nil])

To ensure normal operation, you should investigate and remove the cause of the error in your initialization file.  Start Emacs with the `--debug-init' option to view a complete error backtrace.

and here's the stack trace, apologies for the truncation:

Debugger entered--Lisp error: (wrong-type-argument arrayp ([cl-struct-package-desc async (20141001 $
aref(([cl-struct-package-desc async (20141001 151) "Asynchronous processing in Emacs" nil nil nil$
(package-version-join (aref (cdr (assq package package-alist)) 0))
contribsys/get-package-version(async)
(package-delete (symbol-name orphan) (contribsys/get-package-version orphan))
(while --dolist-tail-- (setq orphan (car --dolist-tail--)) (setq deleted-count (1+ deleted-count)$
(let ((--dolist-tail-- orphans) orphan) (while --dolist-tail-- (setq orphan (car --dolist-tail--)$
(progn (spacemacs/append-to-buffer "OK!\n") (spacemacs/append-to-buffer (format "Found %s orphan $
 (if orphans (progn (spacemacs/append-to-buffer "OK!\n") (spacemacs/append-to-buffer (format"Foun$
(let* ((dependencies (contribsys/get-package-dependencies)) (implicit-packages (contribsys/get-im$
contribsys/delete-orphan-packages()
(if (not (spacemacs/emacs-version-ok)) nil (defconst user-home-directory (expand-file-name (conca$ 
eval-buffer(#<buffer  *load*> nil "/Users/cc/.emacs.d/init.el" nil t)  ; Reading at buffer positi$      

Neotree improvements or replacement

Discussion started with issue #28.

we have 2 possibilities:

  • we mode it to be usable (proper key bindings, remove mode-line, toggle on and off with automatic focus, make it play nice with window numbering and golden-ratio)
  • we replace it

I lack knowledge for sidebar things since I don't use them (I use ido and helm projectile) so any proposal is welcome.

Add more installation documentation

It might just be my being a complete emacs beginner, but it isn't clear to me what to do after the git clone step of the installation. It's also possible that this is a regression and the package installation code just broke, but it seems more likely that I just don't understand how to install the package list.

I'm left with an emacs that looks like the first screenshot in the readme: no evil, no powerline, no fanciness of any kind. I have a feeling that the next step is to install all the required packages, but it isn't clear if there is a good way to do this.

Looking through the source I found the spacemacs-packages definition that looks like it provides the list of required packages to some code, but there doesn't seem to be any other references to this anywhere else in the project. Are new users supposed to map some kind of installation routine over this list in a lisp repl?

I feel like there's one step missing from the installation section of the readme. If I figure out what it is I'll submit a PR to add it to the Readme, but until then I'll just leave this issue here.

@syl20bnr

Projectile won't index some repos

After upgrading to v0.2.0 I'm a problem with projectile where projectile won't find the files in some repos. I think the pattern might be repos that I've visited while my emacs was in a borked state, so it might have something to do with caching.

On some repos when I do either a find in project or a helm find, the only files that show up are the ones I've opened in emacs. When I search for any other file, even the exact names of files I know exist, nothing comes up.

This only seems to happen on repos I've visited in emacs within the last little while, i'm not sure what the exact time period is. If I open a project I haven't touched in a long time projectile works fine.

I'll keep looking into this, I think it has something to do with the caching.

Key binding discussion

If we are concerned about ergonomics, what do you all think about adjusting some of the keybindings to less intensive keys?

I know with Vim when I got in that mind set, I remapped ; to : to save on pressing the shift. What about changing helm-M-x to SPC ; in the same vein? I have a hard time pressing all 3 keys.

In general, I think it would be good to remap bindings to 3 or less keys. The yank ring for example is typically tied to the y key. Why not SPC s y instead of the current SPC k i l?

I know that I can change everything on my side, but I am asking on a crowd level.

Also, has anyone seen what @tpope has done with unimpaired-vim, where he maps most movement specific keybindings to [ or ] + key? This extends the bracket key usage in Vim to multiple different aspects. For example next or previous error is ]l or [l respectively (referencing the listwin). Would a change away from using SPC for everything be frowned on, as I was thinking of trying to port over some of those features.

Merge packages and extensions

This task depends on #110 because we need to retain backward compatibility with the current layers format.
The idea is to have only one list per configuration layer to declare all the packages and extensions.
This list will have convenient properties like:

  • :type with possible values melpa, melpa-stable, el-get or quelpa or even submodule (although we definitely don't want them).
  • :step with values pre or post to control the loading time.
  • :disabled t to mark a package as not activated by default (useful to be able to incorporate contrib layers with only one package in spacemacs layer).

Creation of spacemacs specific Elisp snippets

Was thinking about this, but how about making some spacemacs framework specific snippets to help to standardize creation of the package and init and config functions for the contribution layers?

Swap to evil-nerd-commenter

I found the built in comment system slightly lacking, evil-nerd-commenter seems far more powerful and mimics Vim functionality. It seems to handle multi line comments such as this far better too:

/**
 * Something.
 *
 * @param {String} name Blah
 */

It will complete the asterisks for you when using <M-j>.

Symbolicly linking directories into contrib does not work

I have my personal overlay within my dotfiles respository, I keep that in my home directory because it's used by multiple applications. I have tried using ln -s ~/dotfiles/emacs/Wolfy87 ~/.emacs.d/contrib/Wolfy87 but it doesn't pick any of my configuration up.

If I copy the directory in it works fine though. I'm running Arch Linux with Emacs 24.4. I'll see if I can work it out too, I'd really like to help maintain this project as I think I'm going to be using it a lot.

Project Grep Buffer Filled With Cruft

When using projectile grep (SPC p g) it creates a grep buffer that includes a 10 line find grep pipeline, which means you can't see any results unless you scroll down. That brings me to the second problem: the buffer isn't focused by default, so you have to switch to it before you can scroll down.

Ideally the find command should be hidden and the buffer should be selected by default. I'll try to fix this myself if this is something that you never use.

Here's the cruft that is printed, except the one long line wraps into around 20 lines:

-*- mode: grep; default-directory: "~/Box/Dev/Projects/MacRanger/" -*-
Grep started at Fri Oct 24 20:52:11

find . -type d \( -path \*/.eunit -o -path \*/.git -o -path \*/.hg -o -path \*/.fslckout -o -path \*/.bzr -o -path \*/_darcs -o -path \*/.tox -o -path \*/.svn -o -path \*/build -o -path \*/SCCS -o -path \*/RCS -o -path \*/CVS -o -path \*/MCVS -o -path \*/_MTN -o -path \*/\{arch\} \) -prune -o \! -type d \( -name TAGS -o -name .\#\* -o -name \*.beam -o -name \*.vee -o -name \*.jam -o -name \*.o -o -name \*\~ -o -name \*.bin -o -name \*.lbin -o -name \*.so -o -name \*.a -o -name \*.ln -o -name \*.blg -o -name \*.bbl -o -name \*.elc -o -name \*.lof -o -name \*.glo -o -name \*.idx -o -name \*.lot -o -name \*.fmt -o -name \*.tfm -o -name \*.class -o -name \*.fas -o -name \*.lib -o -name \*.mem -o -name \*.x86f -o -name \*.sparcf -o -name \*.dfsl -o -name \*.pfsl -o -name \*.d64fsl -o -name \*.p64fsl -o -name \*.lx64fsl -o -name \*.lx32fsl -o -name \*.dx64fsl -o -name \*.dx32fsl -o -name \*.fx64fsl -o -name \*.fx32fsl -o -name \*.sx64fsl -o -name \*.sx32fsl -o -name \*.wx64fsl -o -name \*.wx32fsl -o -name \*.fasl -o -name \*.ufsl -o -name \*.fsl -o -name \*.dxl -o -name \*.lo -o -name \*.la -o -name \*.gmo -o -name \*.mo -o -name \*.toc -o -name \*.aux -o -name \*.cp -o -name \*.fn -o -name \*.ky -o -name \*.pg -o -name \*.tp -o -name \*.vr -o -name \*.cps -o -name \*.fns -o -name \*.kys -o -name \*.pgs -o -name \*.tps -o -name \*.vrs -o -name \*.pyc -o -name \*.pyo \) -prune -o  -type f \( -iname \* -o -iname .\* \) -exec grep -i -nH -e resize {} +

Multiple things don't work on Windows

I apologize for what is probably an unhelpfully broad issue, but I installed spacemacs on Windows (by moving my .emacs.d and replacing it with this repo) and basically nothing seems to work as "advertised" in the README. Some of the obvious problems:

  • evil-mode doesn't seem to be on and I can't get to normal mode. ESC doesn't take me to normal mode. Neither does fd.
  • Adding (evil-mode t) to the dotspacemacs/config function in my ~/.spacemacs does not cause evil-mode to work when I start Emacs either.
  • After I turn on evil-mode with M-x evil-mode, none of the bindings in the README work. fd still does not leave insert mode. SPC does not work as a leader, which means none of the other bindings work either. They don't work even if I replace SPC with the evil-leader default of \.
  • C-j etc. don't work when I bring up helm-M-x.
  • Possibly related, but I'm not sure: Spacemacs says "Found 16 new package(s) to install" every time I start emacs up, which I've done several times today. Surely there aren't actually 16 new packages every time?
  • powerline doesn't seem to work. I get a normal emacs modeline.

But there is evidence that parts of spacemacs do work:

  • The color scheme is solarized, as expected.
  • I get the cute little Ⓗ in the modeline.
  • The expected packages do seem to be installed and operational. I can bring up Helm and turn evil-mode on without having to install those packages myself.

But still, none of the fancy things and helpful bindings in the README seem to work at all. Help! What am I missing here?

Errors running in terminal emacs

I'm running emacs 24.4 in Terminal.app on OS X 10.9 (Mavericks). I've run into a series of issues that seem to be related to calling functions not available in terminal mode, starting with this appearing in the Warnings buffer:

Symbol's function definition is void: tool-bar-mode

That's from line 52 of spacemacs/config.el. I changed it to the following which seems to resolve the issue:

(if (functionp 'tool-bar-mode) (tool-bar-mode 0))

Same error on line 56 with scroll-bar-mode, similar fix applied.

That gets me as far as fetching and installing packages, but then this appears:

Symbol's function definition is void: define-fringe-bitmap

That one seemed a bit more involved so I did not attempt a fix.

python package not found

There's at least one marmalade only package listed in packages.el: python

since the removal of marmalade, install fails.

Responsive mode-line

Spend some time making the mode-line responsive to graphical UI and terminals.

Split README.md

First step to improve the documentation is to have a straight to the point readme + wiki pages.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.