Почему проект Emacs C-c p undefined?
Я новичок в Emacs. Я установил снаряда.
Когда я делаю C-c p
, он говорит:
C-c p is undefined
Интересно, что не так?
Ниже представлен мой файл ~/.emacs
.
(require 'package)
(add-to-list 'package-archives
'("melpa" . "http://melpa.milkbox.net/packages/") t)
(package-initialize)
(defvar required-packages
'(
projectile
) "a list of packages to ensure are installed at launch.")
(require 'cl)
; method to check if all packages are installed
(defun packages-installed-p ()
(loop for p in required-packages
when (not (package-installed-p p)) do (return nil)
finally (return t)))
; if not all packages are installed, check one by one and install the missing ones.
(unless (packages-installed-p)
; check for new packages (package versions)
(message "%s" "Emacs is now refreshing its package database...")
(package-refresh-contents)
(message "%s" " done.")
; install the missing packages
(dolist (p required-packages)
(when (not (package-installed-p p))
(package-install p))))
(require 'projectile)
(projectile-global-mode)
Edit
Мой файл .projectile
-/venv
-*.pyc
-*.pyc~
-.git
-.gitignore
-.DS_Store
Изменить 2
C-h v
для projectile-keymap-prefix
, как показано ниже:
projectile-keymap-prefix is a variable defined in `projectile.el'.
Its value is "^Cp"
Documentation:
Projectile keymap prefix.
You can customize this variable
Изменить 3
Я использую OS X 10.10.4. Я запускаю emacs из командной строки $emacs
. Я установил Emacs, используя следующие команды:
brew install emacs --with-cocoa
И, в первый раз (когда я запускаю emacs). Если do M-x
, я не получаю project-switch-project
, скорее получаю project-switch-to-buffer
. После переключения буфера я могу переключить проект.
Ответы
Ответ 1
Теперь вам нужно явно включить его и установить префикс. Шаги для включения Projectile с префиксом Cc Cp
:
(projectile-mode +1)
(define-key projectile-mode-map (kbd "C-c C-p") 'projectile-command-map)
Это изменилось пару раз в 2018 году. Борис использовал Cc p
в качестве лидера по умолчанию, а затем изменил его на Cc Cp
чтобы он соответствовал соглашениям о связывании клавиш emacs (об этом упоминается в пуле № 2). Но теперь он полностью удален, так что вы должны установить его самостоятельно.
Ответ 2
Вам нужно вручную активировать режим сна в файле ~/.emacs
:
(projectile-mode 1)
Ответ 3
Префикс клавиатуры по умолчанию для стандартного снаряда определяется переменной projectile-keymap-prefix
. Вы можете использовать C-h v
, чтобы увидеть значение этой переменной. Если не установлено или не указано ^Cp
, вы можете использовать следующий код, чтобы установить его на C-c p
(setq projectile-keymap-prefix (kbd "C-c p"))
или любые другие привязки клавиш, как вам нравится.
Ответ 4
Недавно я столкнулся с подобной проблемой, что projectile-global-mode
не работает так, как раньше, после того, как я прикрепил пакет projectile
к стабильному архиву melpa, который был версии v0.14.0
.
Способ, которым projectile-global-mode
действовал раньше, заключается в том, что при включении привязки клавиш доступны из любого буфера, но теперь я не могу заставить его работать, когда на заставке (которая находится в фундаментальном режиме) после запуска emacs, как Менно Смитс указывает в комментарии.
Ради любопытства я git bisect
историю исходного кода снаряда, чтобы выяснить, какой коммит вносит это изменение поведения и, наконец, получить его, который больше не использует define-globalized-minor-mode
для определения глобального минорного режима, но определяет projectile-mode
как глобальный по умолчанию с (define-minor-mode xxxxxx :global t)
, разницу можно было бы узнать из документа define-globalized-minor-mode
я думаю:
Глобальное включение режима также влияет на буферы, которые впоследствии создаются при посещении файлов, и на буферы, которые используют основной режим, отличный от основного режима; но он не обнаруживает создание нового буфера в фундаментальном режиме. Источник
Не уверен, что это связано, но вот как я понял это и надеюсь, что это поможет любому, кто испытывает такое же замешательство, как и я.