этот вопрос помог мне решить мою проблему.
Я изменил 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();
});
});
}
Обычно я больше не компилирую из emacs, но почему вы не можете запустить оболочку в буфере просто для бега делают. Храните эту оболочку в каталоге верхнего уровня.
Что касается управления проектами, какие функции вы ищете?
Ниже ;; раздел компиляции моего файла .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)
Я знаю вашу проблему. Если у вас есть Makefile в той же папке, что и ваш исходный код, и вы находитесь в исходном буфере, тогда 'compile' будет собираться правильно
Но если ваш источник находится в другой папке, тогда emacs не сможет найти Makefile.
Одним из решений является указание местоположения Makefile путем установки переменной «default-directory» в качестве файловой переменной в каждом исходном файле.
Вы делаете это, добавляя такую строку вверху файла (и перезагружая ее).
// -*- mode: C++; default-directory: "c:/somewhere/yourmakefiledirectory/" -*-
Я недавно начал использовать project-root для управления моими различными деревьями каталогов. Теперь я привязал F5 к (with-project-root (compile)), и каталогу default-автоматически присваивается корень любого проекта, который я указал в моем .emacs, в зависимости от того, какой буфер я вызываю скомпилировать из.
Я использую EDE из пакета CEDET - он может поддерживать различные типы проектов. Я использую его для работы с CMake вместе с пользовательской командой компиляции (вы можете найти ее здесь - см. Функцию MyCompile)
Я не уверен, что именно вы спрашиваете, но вы, возможно, ищете Speedbar .
Зависит от языка. JDE - хорошая среда Java, Distel - хорошая среда Erlang. Я уверен, что есть хорошие условия и для других платформ. Тем не менее, через emacs вам придется выполнить больше настроек, чем в Eclipse. ИМО, однако, это того стоит.
How about entering the following when prompted for the compiling command:
"cd
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.
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
Я бы использовал eproject; http://github.com/jrockway/eproject
Вот пример из SO: Есть ли где-нибудь хорошее управление проектами Emacs?
По сути, он объединяет возможности CEDET, root-права проекта , и так далее. Вы можете объявить определения проекта разными способами и получить доступ к данным через унифицированный API. Он также содержит приятный сахар, включая интеграцию с буфером. (Отфильтруйте буфер по проекту, см. Имя проекта рядом с именем буфера и т. Д.]