Существует ли хороший способ сделать проект Emacs?

этот вопрос помог мне решить мою проблему.

Я изменил refreshToken так:

refreshToken(token: JwtToken) {
    return new Promise(resolve => {
        this.http.post('http://api.com/auth/refresh', {refresh_token: token.refresh_token}).subscribe(async (res: JwtToken) => {
            this.token = res;
            await this.setToken(res);
            resolve();
        });
    });
}

9
задан pcurry 16 June 2014 в 23:05
поделиться

10 ответов

Обычно я больше не компилирую из emacs, но почему вы не можете запустить оболочку в буфере просто для бега делают. Храните эту оболочку в каталоге верхнего уровня.

Что касается управления проектами, какие функции вы ищете?

5
ответ дан 4 December 2019 в 06:57
поделиться

Ниже ;; раздел компиляции моего файла .emacs. Я использую CTRL + F7 для make и F7 для make clean. Он будет искать в текущем каталоге, а затем в ... и т. Д. Файл с именем "Makefile" для запуска make.

Кроме того, F8 не переходит в исходное окно к первой ошибке, а CTRL + F8 приводит вас к предыдущая ошибка. (Кстати, если вы думаете, что это круто, вы должны увидеть, что я сделал для интеграции GDB) ...: )

;; Compilation
(setq compilation-scroll-output 1) ;; automatically scroll the compilation windo
w
(setq compilation-window-height 10) ;; Set the compilation window height...
(setq compilation-finish-function ;; Auto-dismiss compilation buffer...
      (lambda (buf str)
        (if (string-match "exited abnormally" str)
            (message "compilation errors, press F6 to visit")
          ; no errors, make the compilation window go away after 2.5 sec
          (run-at-time 2.5 nil 'delete-windows-on buf)
          (message "No compilation errors!"))))

(require 'cl) ; If you don't have it already
(defun* get-closest-pathname (&optional (file "Makefile"))
  "This function walks up the current path until it finds Makefile and then retu
rns the path to it."
  (let ((root (expand-file-name "/")))
    (expand-file-name file
              (loop
            for d = default-directory then (expand-file-name ".." d)
            if (file-exists-p (expand-file-name file d))
            return d
            if (equal d root)
           return nil))))

(defun my-compile-func ()
  "This function does a compile."
  (interactive)
  (compile (format "make -C %s" (file-name-directory (get-closest-pathname)))))

(defun my-compile-clean-func ()
  "This function does a clean compile."
  (interactive)
  (compile (format "make -C %s clean" (file-name-directory (get-closest-pathname
)))))

(defun my-compile-package-func ()
  "This function builds an Endura package."
  (interactive)
  (compile (format "make -C %s package" (file-name-directory (get-closest-pathna
me)))))

(global-set-key [f7] 'my-compile-clean-func)
(global-set-key [C-f7] 'my-compile-func)
(global-set-key [S-f7] 'my-compile-package-func)
(global-set-key [f8] 'next-error)
(global-set-key [C-f8] 'previous-error)
7
ответ дан 4 December 2019 в 06:57
поделиться

Я знаю вашу проблему. Если у вас есть Makefile в той же папке, что и ваш исходный код, и вы находитесь в исходном буфере, тогда 'compile' будет собираться правильно

Но если ваш источник находится в другой папке, тогда emacs не сможет найти Makefile.

Одним из решений является указание местоположения Makefile путем установки переменной «default-directory» в качестве файловой переменной в каждом исходном файле.

Вы делаете это, добавляя такую ​​строку вверху файла (и перезагружая ее).

// -*- mode: C++; default-directory: "c:/somewhere/yourmakefiledirectory/" -*-
7
ответ дан 4 December 2019 в 06:57
поделиться

Я недавно начал использовать project-root для управления моими различными деревьями каталогов. Теперь я привязал F5 к (with-project-root (compile)), и каталогу default-автоматически присваивается корень любого проекта, который я указал в моем .emacs, в зависимости от того, какой буфер я вызываю скомпилировать из.

2
ответ дан 4 December 2019 в 06:57
поделиться

Я использую EDE из пакета CEDET - он может поддерживать различные типы проектов. Я использую его для работы с CMake вместе с пользовательской командой компиляции (вы можете найти ее здесь - см. Функцию MyCompile)

3
ответ дан 4 December 2019 в 06:57
поделиться

Я не уверен, что именно вы спрашиваете, но вы, возможно, ищете Speedbar .

1
ответ дан 4 December 2019 в 06:57
поделиться

Зависит от языка. JDE - хорошая среда Java, Distel - хорошая среда Erlang. Я уверен, что есть хорошие условия и для других платформ. Тем не менее, через emacs вам придется выполнить больше настроек, чем в Eclipse. ИМО, однако, это того стоит.

0
ответ дан 4 December 2019 в 06:57
поделиться

How about entering the following when prompted for the compiling command:

"cd ; make"

If it's a hassle to type often, it can be set in the "compile-command" variable -- though it will be remembered in a session after you type it once.

0
ответ дан 4 December 2019 в 06:57
поделиться

when I did this with Java, I used ANT, and ANT handled this elegantly with the "-find" switch.

Effectively what it did was look in the current directory for the build.xml file, until it found it. Very handy especially in Java projects because of their enforced directory structure.

For Make, I would create a similar replacement:

#!/bin/sh
# mymake -- my "hunt the makefile" make command
if [ -f Makefile ]
then
    exec make
else
    cur=`pwd`
    if [ $cur = "/" ]
    then
        echo "Can not find Makefile"
        exit 1
    fi
    newdir=`dirname $cur`
    cd $newdir
    exec mymake
fi
0
ответ дан 4 December 2019 в 06:57
поделиться

Я бы использовал eproject; http://github.com/jrockway/eproject

Вот пример из SO: Есть ли где-нибудь хорошее управление проектами Emacs?

По сути, он объединяет возможности CEDET, root-права проекта , и так далее. Вы можете объявить определения проекта разными способами и получить доступ к данным через унифицированный API. Он также содержит приятный сахар, включая интеграцию с буфером. (Отфильтруйте буфер по проекту, см. Имя проекта рядом с именем буфера и т. Д.]

0
ответ дан 4 December 2019 в 06:57
поделиться
Другие вопросы по тегам:

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