Там какой-либо путь состоит в том, чтобы создать “файл проекта” в Emacs?

Разработка на .NET - это не программирование. Это просто склеивание чужого кода.

Исходя из опыта кодирования, когда вам нужно было знать аппаратное обеспечение, и где это все еще является жизненно важным требованием в моей отрасли, я считаю языки высокого уровня просто сборкой чужой работы. В этом нет ничего плохого, но разве это «программирование»?

MS сделала шаг вперед, выполнив тяжелую работу и представив «разработчикам» символический синтаксис инструкций. Кажется, теперь я знаю все больше и больше разработчиков, которые кажутся ограниченными из-за существования или отсутствия класса для выполнения работы.

Мое мнение исходит из того, что, будучи программистом, вы должны программировать на самом низком уровне, который позволяет ваша платформа. Так что, если вы программируете .NET, то вам нужно быть в состоянии сунуть голову под капот и выработать решение, а не полагаться на то, что кто-то другой создаст для вас класс. Это просто лениво и не квалифицируется как «развитие» в моей книге.

7
задан Luke Girvin 4 September 2011 в 01:46
поделиться

6 ответов

Вы можете настроить все для проекта так, как вы хотите, а затем использовать опубликованный мной ответ об использовании desktop.el и именованных сессий:

Какие альтернативные менеджеры сеансов доступны для Emacs?

6
ответ дан 6 December 2019 в 12:53
поделиться

Я использую для себя следующее «решение»: корень проекта определяется каталогом, содержащим Makefile . Я привязал F12 к специальной функции elisp, которая «компилирует» проект, создавая первую цель соответствующего Makefile. Это обнаруживается путем рекурсивного перехода вверх от каталога текущего файла.

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

(defun get-makefile-recursively-higher ()
  (loop for i below 100 for cwd = (expand-file-name default-directory)
      then next for next = (expand-file-name (concat cwd "/..")) for file =
      (concat cwd "/" "Makefile") do (cond ((and (file-exists-p file))
                                            (return file))) until (equal cwd next))
)

Затем он используется, например, в режиме LaTeX и Python следующим образом:

(defun py-execute-prog (&optional target) 
  "Invoke python on the file being edited in the current buffer using
   arguments obtained from the minibuffer.  It will save all of the modified
   buffers before trying to execute the file."
  (interactive)
  (let* (makefile file cmd)
    (setq makefile (get-makefile-recursively-higher))
    (setq file (buffer-file-name (current-buffer)))
    (setq cmd (concat "make -f " makefile))
    (setq default-directory (file-name-directory makefile))

    (save-some-buffers (not py-ask-about-save) nil)
    (setq py-pdbtrack-do-tracking-p t)
    (if (get-buffer py-output-buffer)
        (kill-buffer py-output-buffer)) ; Get rid of buffer if it exists.
    (global-unset-key "\C-x\C-l" )
    (global-unset-key  "\C-x\C-p" )
    (global-unset-key  "\C-x\C-e" )
    (global-unset-key  "\C-x\C-n" )
    (global-set-key  "\C-x\C-l" 'py-last-exception)
    (global-set-key  "\C-x\C-p" 'py-previous-exception)
    (global-set-key  "\C-x\C-e" 'py-current-line-exception)
    (global-set-key  "\C-x\C-n" 'py-next-exception) 
    (define-key comint-mode-map [mouse-3] 'py-current-line-exception)
    (make-comint "Python Output" "make" nil "-f" makefile)
    (if (not (get-buffer py-output-buffer)) 
        (message "No output.")
      (setq py-exception-buffer (current-buffer))
      (pop-to-buffer py-output-buffer)  
      )))


(defun make-tex (&optional target)
  (interactive)
  (let (makefile cmd)
    (setq makefile (get-makefile-recursively-higher))
    (save-buffer)
    (TeX-save-document (TeX-master-file))

    (setq cmd (concat "make -j4 -f " makefile " LATEXPARAM=\"-halt-on-error -file-line-error\""
                      " TEXMASTER=" (expand-file-name (TeX-master-file)) ".tex"
                      " TEXMASTERDIR=" (file-name-directory makefile) "/"))

    (when (stringp target)
      (setq cmd (concat cmd " " target))
      )
    (ad-activate-regexp "auto-compile-yes-or-no-p-always-yes")
    (compile cmd)
    (ad-deactivate-regexp "auto-compile-yes-or-no-p-always-yes")
    )
  ) 
2
ответ дан 6 December 2019 в 12:53
поделиться

There's eproject, but it seems to be very sparsely documented.

2
ответ дан 6 December 2019 в 12:53
поделиться

Вы можете откатить свои собственные в bash / cmd.exe. В дистрибутив Windows emacs входит файл .bat с именем runemacs.bat, который принимает файлы для открытия в качестве аргументов. Напишите небольшой сценарий, и он сможет открывать все с одного значка.

1
ответ дан 6 December 2019 в 12:53
поделиться

Я работаю над решением этой самой проблемы. У меня всегда была группа файлов, которые я хотел открыть / закрыть в одно и то же время, а также сделать такие вещи, как открытие окна статуса magit, dired-буфера и т. Д. Я запустил свой собственный режим проекта под названием metaproject. Он находится на очень ранней стадии, но достаточно функциональный, чтобы я сейчас использую его для работающих групп проектов.

Проверьте это здесь: http://nafai77.github.com/metaproject/

То, что есть в git, довольно стабильно, хотя и мало документировано. Я собираюсь скоро снова начать работать над этим здесь. В настоящее время у меня есть основы архитектуры небольшого подключаемого модуля, поэтому вы можете зарегистрировать настраиваемые действия, которые могут быть выполнены при открытии проекта.

4
ответ дан 6 December 2019 в 12:53
поделиться

См. http://www.emacswiki.org/emacs/categoryProgrammbammbammbrebmammbammerTils#projectsupport . Есть несколько пакетов, которые управляют «проектами». Я пользуюсь MK-Project, но опять же, я написал это. ; -)

1
ответ дан 6 December 2019 в 12:53
поделиться
Другие вопросы по тегам:

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