Ответ 1
Я смог исправить эту проблему, запустив emacs в режиме демона. https://www.emacswiki.org/emacs/EmacsAsDaemon
в каталоге с параметром default.nix:
nix-shell .
emacs --daemon
emacsclient -c -a emacs
Я делаю свою разработку в оболочке Nix (создаю файл default.nix в своем корневом каталоге проекта и запускаю nix-shell .
, чтобы предоставить мне оболочку с доступом к зависимостям проекта).
Spacemacs - это мой главный редактор, но когда я пытаюсь запустить версию GUI через emacs &
, у меня нет доступа к программам в моей nix-оболочке (например, если я был в проекте Ruby on Rails и Ruby был объявлен как зависимость в моем default.nix
, у меня не было бы выделения синтаксиса в Spacemacs, потому что GUI-версия Emacs не видит зависимости от Nix-оболочки). Если я запустил :!which ruby
, он даже не может найти команду which
.
Сейчас я запускаю spacemacs через emacs -nw
и просто использую его с консоли, но мне бы очень хотелось иметь возможность использовать редактор графического интерфейса и получать все доступные цвета, а не ограничиваться теми, которые выглядят красиво в режиме 256 цветов. Для меня также быстрее переключаться между терминалом и редактором, чем между панелями tmux или терминальными разделителями, чтобы добраться до моего редактора CLI.
with import <nixpkgs> {}; {
cannyFreeRadicalEnv = stdenv.mkDerivation rec {
name = "rails-project-env";
version = "0.1";
src = ./.;
buildInputs = [
stdenv
ruby_2_2_2
bundler
zlib
postgresql94
sqlite
zsh
git
nodejs-0_12
];
};
}
Я смог исправить эту проблему, запустив emacs в режиме демона. https://www.emacswiki.org/emacs/EmacsAsDaemon
в каталоге с параметром default.nix:
nix-shell .
emacs --daemon
emacsclient -c -a emacs
Вы можете запустить свой графический интерфейс Emacs как
setsid nix-shell . --command "emacs" &> /dev/null
Также см. обсуждение nix-shell
интеграция до flycheck
и ghc-mode
.
Совет: вы можете использовать псевдоним для этого в ваших .zshrc или .bashrc
run-nix-emacs () {
setsid nix-shell . --command "emacs" &> /dev/null
}
alias ne='run-nix-emacs'
Я рекомендую этот nix-shell.el. Мой форк этого предоставляет несколько примеров конфигурации. Хотя интеграция direnv с Emacs работает, она очень медленная. Не то, чтобы это быстрее, но это происходит, когда вы выполняете Mx nix-shell-activ и вы контролируете время задержки. Это становится импортом, если, например, у вас есть shell.nix в вашем каталоге org для исходных блоков org в многоязычной среде и вы не всегда хотите задержку direnv при открытии файла org. Mario nix-shell.el должен быть более широко известен. Вот где я это обнаружил.