Вопрос

Я объединил режим ORG с Lisp-режимом для достижения красивого складывания кода в Emacs для кода LISP: Lisp-Orgi-ModeОтказ В основном я использую «;» вместо «*» как главный персонаж. Для комментариев я просто положил место до «;», делая это '; Так что это не считается заголовком ...

Тем не менее, делать то же самое с Python-Mode не работает ..., вероятно, потому что символ «#», используемый Python Comments, препятствует настройкам режима ORG ...

Кто-нибудь удалось успешно объединить функционал? Я знаю, что люди имеют комбинированный режим Python с режимом Outline (связь), но OULILE-MODE не так хорош, как режим ORG ...

Редактировать: приятно работать Наброски-магия: python-magic.el

Это было полезно?

Решение

я использую Hideshow-org. (и небольшое введение здесь) Для этой цели, и я думаю, что это работает действительно, действительно хорошо.

Это некоторые дополнительные, но полезные фрагменты:

(dolist (hook (list 'c-mode-common-hook
            'emacs-lisp-mode-hook
            'java-mode-hook
            'lisp-mode-hook
            'perl-mode-hook
            'sh-mode-hook))
  (add-hook hook 'my-hideshow-hook))

(defun my-hideshow-hook ()
  "thisandthat."
  (interactive)
  (progn (require 'hideshow-org)
     (global-set-key (kbd "C-c h") 'hs-org/minor-mode)
     (hs-org/minor-mode)))

(defadvice goto-line (after expand-after-goto-line activate compile)
  "hideshow-expand affected block when using goto-line in a collapsed buffer"
  (save-excursion
    (hs-show-block)))

Другие советы

Хорошо, я получил контура - Mine-Mode, работающий красиво с следующим наброском - Regexp: «[ T] * # | [ T] + (Class | Def | Если | Elif | else | в то время как | Для | попробуйте | кроме | с ) "Теперь я получаю складную код с помощью как линейки Python Syntax, так и строки комментариев в качестве заголовков.
Было бы возможно адаптировать ваш код для использования вкладки, чтобы вызовать «indent-for-tab-command), и если нечего делать, вызовите« Наброски »?

Python-Magic.el:

; Требуется Outline-Magic.el by Carstendominik нашел здесь :; http://www.astro.uva.nl/~dominik/tools/ootline-magic.el; Модифицированный код здесь Nikwin слегка нашел здесь :; http://stackoverflow.com/questions/1085170/how-to-achieve-code-folding-effects-in-eMacs/1085551#1085551 (дополнительный крючок »(Adject Outline-Magic))) (Добавить-крючок «Python-Mode-Clooth» My-Python-Clobline-Clooth) (Defun Py-Stepline-Level () (пусть (буфер-невидимость-спецификация) (Save-Excursion (Skip- Chars-report "") (текущая колонна)))) (Defun My-Python-Outline-Clooth () (Setq Outline-Regexp »[ T] * #  | [ T] +  (класс   | Def  | Если  | ELIF  | else  | While  | для  | попробуйте  | кроме  | с ) ") (setq набросок на уровне py- Уровень) (режим наброски Mine-Mode T) (Hide-Body) (Show-Paren-Mode 1) (Определите ключ Python-Mode-Map Capt [Tab] 'Colid-Collection) (определение наброски наброски - Minor-mode- Карта [S-TAB] «Отступ для вкладок-команда) (определение-ключ. Карта [M-up] 'Outline-updee-up)) (обеспечить «Python-Magic)

я думаю outline-magic был заменен outshine, И я не знаю, работает ли код выше с ним. Но я смог получить следующий код для работы, вежливо Сообщение в блоге Райаном Дэвисом:

(defun python-mode-outline-hook ()
  (setq outline-level 'python-outline-level)

  (setq outline-regexp
    (rx (or
         ;; Commented outline heading
         (group
          (* space)  ; 0 or more spaces
          (one-or-more (syntax comment-start))
          (one-or-more space)
          ;; Heading level
          (group (repeat 1 8 "\*"))  ; Outline stars
          (one-or-more space))

         ;; Python keyword heading
         (group
          ;; Heading level
          (group (* space)) ; 0 or more spaces
          bow
          ;; Keywords
          (or "class" "def" "else" "elif" "except" "for" "if" "try" "while")
          eow)))))

(defun python-outline-level ()
  (or
   ;; Commented outline heading
   (and (string-match (rx
               (* space)
               (one-or-more (syntax comment-start))
               (one-or-more space)
               (group (one-or-more "\*"))
               (one-or-more space))
              (match-string 0))
    (- (match-end 0) (match-beginning 0)))

   ;; Python keyword heading, set by number of indentions
   ;; Add 8 (the highest standard outline level) to every Python keyword heading
   (+ 8 (- (match-end 0) (match-beginning 0)))))

(add-hook 'python-mode-hook 'python-mode-outline-hook)

Может быть, кто-то найдет это полезно. Я думаю, что это удивительный способ сделать редактирование и навигационный код проще.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top