Почему проект 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 я думаю:

Глобальное включение режима также влияет на буферы, которые впоследствии создаются при посещении файлов, и на буферы, которые используют основной режим, отличный от основного режима; но он не обнаруживает создание нового буфера в фундаментальном режиме. Источник

Не уверен, что это связано, но вот как я понял это и надеюсь, что это поможет любому, кто испытывает такое же замешательство, как и я.