Как выполнить оболочку django из Emacs?

В некотором смысле, станд.:: карта является деревом (она требуется, чтобы иметь те же рабочие характеристики как сбалансированное двоичное дерево), но она не представляет другой древовидной функциональности. Вероятное обоснование позади не включая реальную древовидную структуру данных было, вероятно, просто вопросом не включая все в stl. stl можно посмотреть как платформа для использования в реализации собственных алгоритмов и структур данных.

В целом, если существует основная функциональность библиотеки, которую Вы хотите, это не находится в stl, фиксация должна посмотреть ПОВЫШЕНИЕ .

Иначе, существует набор из библиотеки там , в зависимости от потребностей Вашего дерева.

11
задан Ryszard Szopa 7 September 2009 в 15:16
поделиться

4 ответа

Это не будет работать в оболочке ? Мне только что удалось запустить сеанс оболочки django в emacs.

Нажмите Mx shell , а затем запустите оболочку python внутри этого сеанса оболочки bash, например:

 M-x shell

оболочка порождается

prompt> cd path/to/my/django/directory
prompt> python manage.py shell
Python 2.6.1 (r261:67515, Jul  7 2009, 23:51:51) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>

, и она должна вызвать оболочку django, как если бы вы работали в голом терминале, но это еще один буфер в Emacs.

Что касается интеграции (отправка кода в оболочку для оценки и т. д.), похоже, вы сможете найти то, что ищете, внизу страницы здесь (Emacs Wiki для python.el) . Там много информации о том, как заставить iPython работать с python.el, и вы, возможно, сможете получить это для запуска вашей оболочки django, изменив код там или в python.el.

0
ответ дан 3 December 2019 в 08:56
поделиться

Использование ansi-term заставит ipython завершить работу с табуляцией, однако обратите внимание, что это переназначит все сочетания клавиш Cx [...] на Cc [... ] .

Если вам это нравится, вы можете легко создать для него привязку клавиш, поместив это в свой .emacs:

(defun start-my-ipython-term ()
  (interactive)
  (ansi-term "/usr/bin/ipython"))
(global-set-key (kbd "<your keybinding here>") 'start-my-ipython-term)
1
ответ дан 3 December 2019 в 08:56
поделиться

Хорошо, я сегодня взломал это сам. По большей части это копирование и вставка из py-shell из python-mode.el .

(defun django-shell (&optional argprompt)
  (interactive "P")
  ;; Set the default shell if not already set
  (labels ((read-django-project-dir 
    (prompt dir)
    (let* ((dir (read-directory-name prompt dir))
           (manage (expand-file-name (concat dir "manage.py"))))
      (if (file-exists-p manage)
          (expand-file-name dir)
        (progn
          (message "%s is not a Django project directory" manage)
          (sleep-for .5)
          (read-django-project-dir prompt dir))))))
(let* ((dir (read-django-project-dir 
         "project directory: " 
         default-directory))
       (project-name (first 
              (remove-if (lambda (s) (or (string= "src" s) (string= "" s))) 
                 (reverse (split-string dir "/")))))
       (buffer-name (format "django-%s" project-name))
       (manage (concat dir "manage.py")))
  (cd dir)
  (if (not (equal (buffer-name) buffer-name))
      (switch-to-buffer-other-window
       (apply 'make-comint buffer-name manage nil '("shell")))
    (apply 'make-comint buffer-name manage nil '("shell")))
  (make-local-variable 'comint-prompt-regexp)
  (setq comint-prompt-regexp (concat py-shell-input-prompt-1-regexp "\\|"
                     py-shell-input-prompt-2-regexp "\\|"
                     "^([Pp]db) "))
  (add-hook 'comint-output-filter-functions
        'py-comint-output-filter-function)
  ;; pdbtrack

  (add-hook 'comint-output-filter-functions 'py-pdbtrack-track-stack-file)
  (setq py-pdbtrack-do-tracking-p t)
  (set-syntax-table py-mode-syntax-table)
  (use-local-map py-shell-map)
  (run-hooks 'py-shell-hook))))
8
ответ дан 3 December 2019 в 08:56
поделиться

Я просто создал заменяющий сценарий оболочки ipython.

Я использую python-mode.el и ipython.el; связанный фрагмент .emacs.el выглядит следующим образом:

(setq ipython-command "/Users/japhy/bin/smart_ipython")
(require 'ipython)

;; fix completion for ipython 0.10
(setq ipython-completion-command-string
      "print(';'.join(__IP.Completer.all_completions('%s'))) #PYTHON-MODE SILENT\n")

где сценарий smart_ipython выглядит так:

#!/bin/sh
set -e

/bin/echo -n "Select Django project/dir, or press enter for plain ipython: "

read selection
case $selection in
    '') exec ipython ;;
    project) cd /Users/japhy/Projekty/some/project/dir ;;
    # other often used projects go here
    *) cd $selection ;;
esac
exec python manage.py shell
1
ответ дан 3 December 2019 в 08:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: