View Full Version : Emacs modes for mods and maps
Leif_-
October 8th, 2006, 12:15 PM
I've thrown together two major modes for Emacs, dommod-mode and dommap-mode, for editing Dominions mods and .map files respectively. The modes mainly do syntax highlighting, and some simple navigation. They're still not up-to-date with Dominions 3 keywords, as I haven't got a copy of the up-to-date modding manuals. Let me know if you have any requests or complaints for them.
Edit: New mode files with support for Dominions 3. Now attached to this post rather than posted elsewhere.
Johan K
October 8th, 2006, 02:31 PM
Cool, now how do I install it?
Leif_-
October 8th, 2006, 02:43 PM
Put the two files somewhere in Emacs' loadpath. It varies by system, but you can display yours by entering emacs and asking for help on the variable load-path (C-h i). The directory ~/.emacs.d is often on the load-path for many systems, and if it isn't, you can add it by inserting the following line early in your .emacs file:
(setq load-path (cons "~/.emacs.d" load-path))
Now, add the two lines below to your .emacs file:
('require dommod-mode)
('require dommap-mode)
Opening any file with the ending .dm or .map should active the correct mode; although you might have to turn on font lock manually (again, depending on your emacs setup): M-x font-lock-fontify-buffer
Alternatively, and easier if you just want to try them out to see if they're useful, you can load them manually. M-x load-file and specify either dommap-mode.el or dommod-mode.el; then open a .map or .dm file.
P.S. A really good resource on Emacs is the EmacsWiki (http://www.emacswiki.org/cgi-bin/wiki)
Tortanick
October 8th, 2006, 03:01 PM
Of course you must now do Vi or face a swarm of zelots ;p
Johan K
October 8th, 2006, 05:30 PM
This was harder than I thought. I get this cryptic error (I know nothing about emacs lisp files) after having added "require 'dommod-mode" to my .emacs.
File mode specification error: (void-function dommod-mode)
Trace:
Debugger entered--Lisp error: (void-function delete-duplicates)
(delete-duplicates (append dommod-mode-weapon-keywords dommod-mode-armor-keywords dommod-mode-monster-basic-keywords dommod-mode-monster-advanced-keywords dommod-mode-spell-keywords dommod-mode-item-keywords dommod-mode-name-keywords dommod-mode-nation-keywords))
(regexp-opt (delete-duplicates (append dommod-mode-weapon-keywords dommod-mode-armor-keywords dommod-mode-monster-basic-keywords dommod-mode-monster-advanced-keywords dommod-mode-spell-keywords dommod-mode-item-keywords dommod-mode-name-keywords dommod-mode-nation-keywords)) t)
(concat "^" (regexp-opt (delete-duplicates ...) t) "\\>")
(list (concat "^" (regexp-opt ... t) "\\>") (quote (1 font-lock-function-name-face)))
(list (list (concat "^" ... "\\>") (quote ...)) (list (concat "^" ... "\\>") (quote ...)) (list (concat "^" ... "\\>") (quote ...)) (list (concat "^" ... "\\>") (quote ...)) (list (concat "^" "\\(-- ==.*\\)" "\\>") (quote ...)) (list (concat "^" "\\(==.*\\)" "\\>") (quote ...)))
(progn (list (list ... ...) (list ... ...) (list ... ...) (list ... ...) (list ... ...) (list ... ...)))
(eval-when-compile (list (list ... ...) (list ... ...) (list ... ...) (list ... ...) (list ... ...) (list ... ...)))
(defvar dommod-mode-font-lock-keywords (eval-when-compile (list ... ... ... ... ... ...)))
eval-buffer(#<buffer *load*<2>> nil "dommod-mode" nil t)
load-with-code-conversion("/usr/share/emacs/21.4/lisp/progmodes/dommod-mode.el" "dommod-mode" nil t)
require(dommod-mode)
eval-buffer(#<buffer *load*> nil "~/.emacs" nil t)
load-with-code-conversion("/home/jk/.emacs" "~/.emacs" t t)
load("~/.emacs" t t)
#[nil "&#133;&#151;
Leif_-
October 8th, 2006, 05:43 PM
Hmm. The error is that I've used a function, delete-duplicates, that's apparently not part of your Emacs environment. Sorry about that, I was under the impression that it was a standard function.
I'll look into removing that function call or finding out where the delete-duplicates function can be found.
Okay, found it. delete-duplicates is from a CommonList (http://www.emacswiki.org/cgi-bin/wiki/CommonLispForEmacs) extension to Emacs. If you're lucky it's already installed, just not automatically loaded. Try adding the line "(require 'cl)" to your .emacs file, before the two require statements for dommod-mode and dommap-mode.
If that doesn't sort it, you'll have to find and download this package (it's hopefully a standard package for your distribution); and if that doesn't work, let me know and I'll try to rewrite the code to do away with those function calls. That might take some time before I get the opportunity to do, though.
Johan K
October 8th, 2006, 06:09 PM
It worked, thanks! http://forum.shrapnelgames.com/images/smilies/happy.gif
Tortanick
October 14th, 2006, 10:45 AM
where would you find the loadpath or .emacs file on windows?
Leif_-
October 14th, 2006, 10:54 AM
I think it's easier if I just refer to what the Emacs Wiki (http://www.emacswiki.org/cgi-bin/wiki/LoadPath) has to say on loadpaths. (Read the bit at the bottom about debugging first.)
Leif_-
October 14th, 2006, 11:02 AM
Note!
There's a new version of the emacs modes with support for the Dominions 3 specific keywords. They can be found attached to the first post of this thread.
Tortanick
October 15th, 2006, 09:53 AM
I got it working! This is so much easier when you just use Linux http://forum.shrapnelgames.com/images/smilies/happy.gif
only wokrs if I use M-x load-file manually before opening a dm file. I wonder why my .emacs file isn't working. but its great just having a syntax
analytic_kernel
January 24th, 2009, 09:08 PM
Of course you must now do Vi or face a swarm of zelots ;p
The flagellants event has now occurred. :)
http://forum.shrapnelgames.com/showthread.php?goto=newpost&t=42064
vBulletin® v3.8.1, Copyright ©2000-2025, Jelsoft Enterprises Ltd.