[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/beardbolt c9f3b839e9 156/323: Add support for D
From: |
ELPA Syncer |
Subject: |
[elpa] externals/beardbolt c9f3b839e9 156/323: Add support for D |
Date: |
Thu, 9 Mar 2023 10:58:27 -0500 (EST) |
branch: externals/beardbolt
commit c9f3b839e92b1564784337526787639e8ad395ca
Author: Duncan Paterson <dunkyp@gmail.com>
Commit: Duncan Paterson <dunkyp@gmail.com>
Add support for D
---
doc/rmsbolt.texi | 7 +++++++
rmsbolt.el | 22 ++++++++++++++++++++++
starters/rmsbolt-starter.d | 27 +++++++++++++++++++++++++++
3 files changed, 56 insertions(+)
diff --git a/doc/rmsbolt.texi b/doc/rmsbolt.texi
index bfba0134c2..291c66c7a1 100644
--- a/doc/rmsbolt.texi
+++ b/doc/rmsbolt.texi
@@ -55,6 +55,7 @@ Languages
* Pony::
* Emacs Lisp::
* Common Lisp::
+* D::
Integrations
@@ -202,6 +203,7 @@ This section covers languages-specific quirks and features.
* Pony::
* Emacs Lisp::
* Common Lisp::
+* D::
@end menu
@node C/C++
@@ -271,6 +273,11 @@ Emacs 26 or the @code{cl-print} package are required.
No support for source->asm matching or filtering. Only @code{sbcl} and
@code{clisp}
supported at the moment, with @code{sbcl} giving much better results.
+@node D
+@section D
+
+Assembly listing is supported through @code{ldc}
+
@node Integrations
@chapter Integrations
diff --git a/rmsbolt.el b/rmsbolt.el
index b903ff599a..be221a86b9 100644
--- a/rmsbolt.el
+++ b/rmsbolt.el
@@ -489,6 +489,21 @@ Return value is quoted for passing to the shell."
(concat "-Cllvm-args=--x86-asm-syntax="
asm-format)))
" ")))
cmd)))
+(cl-defun rmsbolt--d-compile-cmd (&key src-buffer)
+ "Process a compile command for d"
+ (rmsbolt--with-files
+ src-buffer
+ (let* ((language (rmsbolt--get-lang))
+ (compiler (or (buffer-local-value 'rmsbolt-command src-buffer)
+ (rmsbolt-l-cmd-function language)))
+ (demangle-off (not (buffer-local-value 'rmsbolt-demangle
src-buffer)))
+ (demangle-tmp-file (string-join (list rmsbolt--temp-dir
"/demangled")))
+ (demangler (rmsbolt-l-demangler language))
+ (cmd (string-join (list compiler "-g" "-output-s" src-filename "-of"
output-filename) " "))
+ (cmd (if demangle-off
+ cmd
+ (string-join (list cmd "&&" demangler output-filename ">"
demangle-tmp-file "&&" "mv" demangle-tmp-file output-filename) " "))))
+ cmd)))
(cl-defun rmsbolt--pony-compile-cmd (&key src-buffer)
"Process a compile command for ponyc."
(let* ((cmd (buffer-local-value 'rmsbolt-command src-buffer))
@@ -693,6 +708,12 @@ return t if successful."
:demangler "c++filt"
:compile-cmd-function #'rmsbolt--c-compile-cmd
:disass-hidden-funcs rmsbolt--hidden-func-c))
+ (d-mode
+ . ,(make-rmsbolt-lang :compile-cmd "ldc2"
+ :supports-asm t
+ :supports-disass t
+ :demangler "ddemangle"
+ :compile-cmd-function #'rmsbolt--d-compile-cmd))
;; In order to parse ocaml files, you need the emacs ocaml mode, tuareg
(tuareg-mode
. ,(make-rmsbolt-lang :compile-cmd "ocamlopt"
@@ -1345,6 +1366,7 @@ Are you running two compilations at the same time?"))
("php" . "rmsbolt.php")
("pony" . "rmsbolt.pony")
("emacs-lisp" . "rmsbolt-starter.el")
+ ("d" . "rmsbolt-starter.d")
;; Rmsbolt is capitalized here because of Java convention of Capitalized
;; class names.
("java" . "Rmsbolt.java")))
diff --git a/starters/rmsbolt-starter.d b/starters/rmsbolt-starter.d
new file mode 100644
index 0000000000..637f63bda1
--- /dev/null
+++ b/starters/rmsbolt-starter.d
@@ -0,0 +1,27 @@
+// Local Variables:
+// rmsbolt-command: "ldc2"
+// End:
+
+import std.stdio : writeln;
+
+int isRMS(char a) {
+ switch(a) {
+ case 'R':
+ return 1;
+ case 'M':
+ return 2;
+ case 'S':
+ return 3;
+ default:
+ return 0;
+ }
+}
+
+int main() {
+ int a = 1 + 1;
+ if(isRMS(cast(char) a)) {
+ writeln(a);
+ }
+ return 0;
+}
+
- [elpa] externals/beardbolt 39055a3dc4 133/323: Fix disassembly of partial files in C/C++, (continued)
- [elpa] externals/beardbolt 39055a3dc4 133/323: Fix disassembly of partial files in C/C++, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 27e7bb714f 139/323: Add suppport for PHP, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 4b6abc5ef8 129/323: Optimize rmsbolt-process-src-asm-lines, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 67238e0272 138/323: Add rmsbolt-default-directory customization, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 9b2c85397c 149/323: Add texinfo version of docs, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt ec99a1aa31 146/323: Attempt to fix whitespace clearing on hot recompiles, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 5e389a88d9 152/323: Add rmsbolt splitter for splitting and mutating commands, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 0fbc3d3f09 153/323: Enable compile_commands.json parsing for c/cpp, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 743f9a68ec 158/323: Handle non absolute .file paths, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 609f781b3a 165/323: Fix usages of when-let, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt c9f3b839e9 156/323: Add support for D,
ELPA Syncer <=
- [elpa] externals/beardbolt a4f794666d 160/323: Add D to commentary, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt b7d318dfe1 178/323: Add Swift language support, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 98e984493b 170/323: Prevent hot recompile on deleted buffers, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt c655e2af39 186/323: Add check for dead buffers in compilation finish fn, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt d51e71f894 188/323: Use special named buffer for compilation, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 712981e16c 187/323: Remove langauges godbolt has added support for, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt ff496660cc 205/323: Migrate irc channel to libera, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 42edd955ae 201/323: Move filename massaging out of hot loop, ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt 972e6f41a2 207/323: Merge branch 'faerryn-master-patch-16796' into 'master', ELPA Syncer, 2023/03/09
- [elpa] externals/beardbolt bc0652e56e 197/323: Add support for indirect buffers, ELPA Syncer, 2023/03/09