This project adds a new major mode to GNU Emacs for editing BlitzMax source files. It supports keyword highlighting, keyword capitalization, and automatic indentation.
There is also some basic support for keyword pair insertion; for example, typing
Function test()
and hitting <enter>
will automatically insert End Function
and place the cursor in the correct position. This feature can be enabled by
setting blitzmax-mode-complete-pairs-p
to t
.
It is recommended to install this package directly from
MELPA or via
el-get. The package is listed in Melpa
as blitzmax-mode
.
To manually install this extension:
- Download the source code and put it somewhere Emacs can find it (probably
~/.emacs.d/
). - Add that directory to your
load-path
if it's not yet there:(add-to-list 'load-path "/path/to/blitzmax-mode")
- Require the mode:
(require 'blitzmax-mode)
Once everything is loaded, blitzmax-mode can be enabled for a buffer by running
M-x blitzmax-mode
. The mode also associates itself with .bmx
files, so they
will automatically switch to blitzmax-mode
when enabled.
The following configuration code will enable blitzmax-mode
for .bmx
files.
(use-package blitzmax-mode
:mode "\\.bmx\\'"
blitzmax-mode provides the following configuration options:
-
blitzmax-mode-indent
- The number of spaces to indent by. By default blitzmax-mode indents by 4 spaces which is converted to a single tab. -
blitzmax-mode-capitalize-keywords-p
- Disable automatic capitalization of keywords by setting this tonil
.t
by default. -
blitzmax-mode-smart-indent-p
- Disable smart indentation by setting this tonil
.t
by default. -
blitzmax-mode-complete-pairs-p
- Enable automatic insertion of matching keyword pairs - such as "End Method" - by setting this tot
.nil
by default. -
blitzmax-mode-compiler-pathname
- Full pathname to the BlitzMax compilerbmk
. "bmk" by default.
quickrun.el is an extension for compiling and executing the current buffer.
To enable quickrun support, add the following to your Emacs initialization file:
(with-eval-after-load 'quickrun
(blitzmax-mode-quickrun-integration))
To bind quickrun to a key press (C-c C-c
in this example), add the following
to init.el
(or wherever your Emacs config resides):
(eval-after-load "blitzmax-mode"
'(define-key blitzmax-mode-map (kbd "C-c C-c") 'quickrun))
To add quickrun support to blitzmax-mode
via use-package
, use the following:
(use-package blitzmax-mode
:mode "\\.bmx\\'"
:bind
(("C-c C-c" . quickrun))
:config
(blitzmax-mode-quickrun-integration))
When called, quickrun will compile and execute the current buffer with debug and threading enabled. Once the process has finished running the executable file will be deleted.
Projectile is a great Emacs package for
organizing and navigating large projects. It can be configured to build a
BlitzMax application by setting projectile-project-compilation-cmd
in the
project's .dir-locals.el
file.
For example, the following would go in .dir-locals.el
in the projects
folder. It would compile the contents of src/my_app.bmx
in release + threaded
mode and save the executable as my_app
:
((nil . ((projectile-project-compilation-cmd . "bmk makeapp -r -h -o my_app src/my_app.bmx"))))
The current project can then be compiled by running projectile-compile-project
(bound to C-c p c
by default).
- Basic syntax highlighting
- Automatic indentation
- Capitalizes keywords automatically
- Quickrun support
- Auto-completion
- Compile current buffer
- Integration with bmk
- Integration with blam
This file is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version.
This file is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with GNU Emacs; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.