Thread overview | ||||||||
---|---|---|---|---|---|---|---|---|
|
November 30, 2012 Compile And Run in emacs | ||||
---|---|---|---|---|
| ||||
So I have installed dmd, gdc, emacs and d-mode.el on my Debian machine. I can compile the program fine with M-compile. The problem starts after that. I cannot run the output file properly from within emacs. Either there is a way and I cannot find it, or there really is no way. What I try instead: 1. Write the sourcecode. 2. M-compile. 3. Launch a separate terminal, and run the executable from there. Or, 3. Launch a shell in emacs, and use that. Which sucks. What am I doing wrong? Isn't there a "compile&run" option? And one more thing, is there maybe a C-* alternative to M-compile since it takes time to type that everytime? |
November 30, 2012 Re: Compile And Run in emacs | ||||
---|---|---|---|---|
| ||||
Posted in reply to Aytug | On 11/30/2012 03:13 PM, Aytug wrote:
> So I have installed dmd, gdc, emacs and d-mode.el on my Debian
> machine.
>
> I can compile the program fine with M-compile. The problem starts
> after that.
>
> I cannot run the output file properly from within emacs. Either
> there is a way and I cannot find it, or there really is no way.
>
> What I try instead:
> 1. Write the sourcecode.
> 2. M-compile.
> 3. Launch a separate terminal, and run the executable from there.
> Or,
> 3. Launch a shell in emacs, and use that. Which sucks.
I have the following in my Makefile:
deneme: ${ALL_FILES}
${DMD} ${SOURCES} ${LIBRARIES} -of$@ ${OPTIONS}
./$@
The last line there executes the program that has just been built.
As an aside, if you do C-u,M-x,compile then you can interact with the program's standard input as well.
> What am I doing wrong? Isn't there a "compile&run" option? And
> one more thing, is there maybe a C-* alternative to M-compile
> since it takes time to type that everytime?
You can set any key binding that you like in Emacs. I've never bothered to change it though: A quick M-x,M-p brings up the last compile command and I just hit Enter. (M-p is a key binding of mine that works better with the Dvorak keyboard, which means "up".)
Ali
--
D Programming Language Tutorial: http://ddili.org/ders/d.en/index.html
|
November 30, 2012 Re: Compile And Run in emacs | ||||
---|---|---|---|---|
| ||||
Posted in reply to Aytug | On Friday, 30 November 2012 at 23:13:10 UTC, Aytug wrote: > So I have installed dmd, gdc, emacs and d-mode.el on my Debian > machine. > > I can compile the program fine with M-compile. The problem starts > after that. > > I cannot run the output file properly from within emacs. Either > there is a way and I cannot find it, or there really is no way. > > What I try instead: > 1. Write the sourcecode. > 2. M-compile. > 3. Launch a separate terminal, and run the executable from there. > Or, > 3. Launch a shell in emacs, and use that. Which sucks. > > What am I doing wrong? Isn't there a "compile&run" option? And > one more thing, is there maybe a C-* alternative to M-compile > since it takes time to type that everytime? I use the lisp code below. Then from the source with main I do: C-c @ To run the main in the current buffer C-c # To run the unit test in the current buffer Thanks Dan ---------------------- lisp code (defun unittest-d-file (args) (interactive "sEnter args:") (setq fname (buffer-file-name)) (setq cmdStr (concat "time rdmd -unittest --main \"" fname "\" " args)) (setq buffname (format "*%s*" cmdStr)) (save-excursion (message (concat "Running:" cmdStr)) (if (not (eq nil (get-buffer buffname))) (kill-buffer buffname)) (setq compilation-scroll-output t) (compile cmdStr) (set-buffer "*compilation*") (rename-buffer buffname t) )) (defun run-current-file-args (args) (let (extention-alist fname suffix progName cmdStr) (setq extention-alist ; a keyed list of file suffix to comand-line program to run '( ("php" . "php") ("pl" . "perl") ("py" . "python") ("rb" . "ruby") ("rspec" . "rspec") ("js" . "js") ("sh" . "bash") ("bash" . "bash") ("ml" . "ocaml") ("vbs" . "cscript") ("java" . "javac") ("go" . "rungo.sh") ("d" . "rdmd") ("html" . "firefox") ) ) (setq fname (buffer-file-name)) (setq suffix (file-name-extension fname)) (setq progName (cdr (assoc suffix extention-alist))) (setq cmdStr (concat "time " progName " \"" fname "\" " args)) (setq buffname (format "*%s*" cmdStr)) (if (string-equal suffix "el") (load-file fname) (if progName ; is not nil (save-excursion (message (concat "Running:" cmdStr)) (if (not (eq nil (get-buffer buffname))) (kill-buffer buffname)) (setq compilation-scroll-output t) (compile cmdStr) (set-buffer "*compilation*") (rename-buffer buffname t) (message "No recognized program file suffix for this file.") ))))) (defun run-current-file () "Execute or compile the current file. For example, if the current buffer is the file x.pl, then it'll call “perl x.pl” in a shell. The file can be php, perl, python, ruby, javascript, bash, ocaml, java. File suffix is used to determine what program to run." (interactive) (run-current-file-args "")) (defun run-current-file-prompt (args) (interactive "sEnter args:") (run-current-file-args args)) (global-set-key "\C-c@" 'run-current-file-prompt) (global-set-key "\C-c#" 'unittest-d-file) ------------------------------------------------------------------- |
November 30, 2012 Re: Compile And Run in emacs | ||||
---|---|---|---|---|
| ||||
Posted in reply to Aytug | On 12/01/2012 12:13 AM, Aytug wrote:
> So I have installed dmd, gdc, emacs and d-mode.el on my Debian
> machine.
>
> I can compile the program fine with M-compile. The problem starts
> after that.
>
> I cannot run the output file properly from within emacs. Either
> there is a way and I cannot find it, or there really is no way.
>
> What I try instead:
> 1. Write the sourcecode.
> 2. M-compile.
> 3. Launch a separate terminal, and run the executable from there.
> Or,
> 3. Launch a shell in emacs, and use that. Which sucks.
>
> What am I doing wrong? Isn't there a "compile&run" option? And
> one more thing, is there maybe a C-* alternative to M-compile
> since it takes time to type that everytime?
It is emacs. Every key binding is a possible alternative.
I use
(global-set-key (kbd "\C-c c") 'compile)
(global-set-key (kbd "\C-c n") 'next-error)
Usually I just run non-interactive programs from within compile,
M-x compile
dmd -run program args <<< "program input"
or
M-x compile
make && ./program args <<< "program input"
or just
M-x compile
./program args <<< "program input"
or even
M-x gdb
r <<< "program input"
otherwise I have a separate console (are you using a sane window manager?) or use M-x ansi-term.
|
November 30, 2012 Re: Compile And Run in emacs | ||||
---|---|---|---|---|
| ||||
Posted in reply to Dan | The lisp code: http://pastebin.com/myAABm5G |
November 30, 2012 Re: Compile And Run in emacs | ||||
---|---|---|---|---|
| ||||
Posted in reply to Dan | On Friday, 30 November 2012 at 23:40:42 UTC, Dan wrote:
> The lisp code: http://pastebin.com/myAABm5G
Thanks Dan, that was really helpful :)
|
Copyright © 1999-2021 by the D Language Foundation