Como posso evitar que o python.el que vem com o Emacs 23 seja carregado?

7

Eu uso o python-mode.el em vez de python.el para o trabalho em python, e todas as minhas personalizações dependem dele. No entanto, periodicamente, por algum motivo, o python.el que vem com o Emacs23 será magicamente carregado e, de repente, toda a minha configuração simplesmente sai pela janela.

Como posso evitar isso? Neste momento, eu tenho este código no meu .emacs:

(if featurep 'python)
    (unload-feature 'python))

Isso parece reduzir as ocorrências disso, mas às vezes eu abro um arquivo python - na mesma sessão! - e vai ter o python.el python-mode em vez da versão python-mode.el. E ainda, o próximo buffer ainda tem o modo antigo.

Isso está rapidamente me deixando louco!

    
por Chris R 13.02.2010 / 00:07

5 respostas

8

Tudo depende de como você configurou seus .emacs.

Por padrão, a função 'python-mode está associada ao pacote python.el . Você precisa mudar isso com o seguinte:

(autoload 'python-mode "python-mode" "Python Mode." t)

Isso pressupõe que o python-mode package já está no seu load-path . Você também precisa ter certeza de que o que está acima aconteça no seu .emacs antes que qualquer coisa faça com que o python.el seja carregado.

Estas outras duas linhas provavelmente não são necessárias, mas não atrapalham:

(add-to-list 'auto-mode-alist '("\.py\'" . python-mode))
(add-to-list 'interpreter-mode-alist '("python" . python-mode))

Se isso não funcionar, precisaremos de mais informações.

Outra alternativa é substituir as funções que são carregadas automaticamente a partir de python.el , que no Emacs 23.1 são as seguintes:

(defun run-python (&rest args) nil)
(defun python-mode (&rest args) nil)
(defun jython-mode (&rest args) nil)
(defun python-shell (&rest args) nil)

Se você definir aqueles em seus .emacs, então os carregamentos automáticos que o Emacs configura não terão efeito. Você terá que carregar python-mode.el manualmente (já que o autoload para python-mode não precisa ser executado (porque você definiu essa função)). Carregue o python-mode.el com:

(load "/path/to/python-mode.el")
    
por 13.02.2010 / 03:11
2

Se isso acontecer novamente, sinaliza um bug em python-mode.el também. Python-mode.el - esse é o meu empreendimento - deve ser projetado de uma forma, python.el não perturba, mesmo se carregado.

No caso, por favor, faça uma entrada no bug-tracker .

    
por 22.04.2012 / 18:38
1

Você deve conseguir simplesmente remover python.el (e talvez o .elc? Essa ainda é a extensão do arquivo compilado)

    
por 13.02.2010 / 00:35
1

Uma coisa boa é inspecionar a depedência do carregamento de arquivos por meio do load-history variable. Procure os cons (require . python) nele. Esses contras serão associados a um arquivo carregado. este pode ajudar a entender as depedências de carga e modificar o seqüência de carregamento dos diferentes modos python.

Para ter certeza de que você nunca carregará python.el e python.elc, livre-se dele nos arquivos de instalação do emacs. E adicione isso ao seu arquivo init:

(autoload 'python-mode "python-mode")

Mas se você não puder fazer isso porque algum outro pacote depende disso, você pode tentar colocar o seguinte no seu arquivo init. Ele carrega o python-mode.el após o python.el e sobrescreve suas definições:

(require 'python) (require 'python-mode)

Eu experimentei o mesmo problema. Mesmo que eu tivesse um bom (require 'python-mode) form no meu init.el e sem carga requisito para python.el. No meu caso, python.el continuou sendo carregado após python-mode.el que cancelou minhas configurações. Foi devido a semântica / wisent / python.el que tenta carregar python.el.

    
por 12.11.2015 / 15:39
0

o link a seguir também pode ser relevante.

link

eu uso o modo python e, apesar do código recomendado acima em meus .emacs, eu ainda tinha que fazer coisas como ...

M-x py-pdbtrack-toggle-stack-tracking  ; followed by..
M-x python-pdbtrack-toggle-stack-tracking

... para desativar um recurso.

o culpado foi a dependência wisent-python.el python.el que causou o re-carregamento de alguns defs variáveis comuns. Eu comentei o (exigem 'python nil t) como eu já definir manualmente o caminho de inclusão que ele (o código que requer este arquivo) configura de qualquer maneira.

    
por 17.07.2011 / 18:24

Tags