diff options
author | Tom Willemsen | 2011-03-07 09:04:49 +0100 |
---|---|---|
committer | Tom Willemsen | 2011-03-07 09:04:49 +0100 |
commit | 94d2fc1815a919734353c942f224db1de4b4fcb8 (patch) | |
tree | 4168e816ead132bfa3510e272427837c3895f5e2 /emacs.d/nxhtml/related/iss-mode.el | |
parent | d0e7674fdb1de12c8de202d4028a5d7ed3669a6e (diff) | |
download | dotfiles-94d2fc1815a919734353c942f224db1de4b4fcb8.tar.gz dotfiles-94d2fc1815a919734353c942f224db1de4b4fcb8.zip |
Django, org
* Added nxhtml, mostly for django support.
* Changed some org settings.
Diffstat (limited to 'emacs.d/nxhtml/related/iss-mode.el')
-rw-r--r-- | emacs.d/nxhtml/related/iss-mode.el | 205 |
1 files changed, 205 insertions, 0 deletions
diff --git a/emacs.d/nxhtml/related/iss-mode.el b/emacs.d/nxhtml/related/iss-mode.el new file mode 100644 index 0000000..7e498c0 --- /dev/null +++ b/emacs.d/nxhtml/related/iss-mode.el @@ -0,0 +1,205 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; iss-mode.el --- Mode for InnoSetup install scripts + +;; Copyright (C) 2000-2007 by Stefan Reichoer + +;; Emacs Lisp Archive Entry +;; Filename: iss-mode.el +;; Author: Stefan Reichoer, <stefan@xsteve.at> +;; Version: 1.1d + +;; iss-mode.el 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. + +;; iss-mode.el 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. + +;;; Commentary + +;; InnoSetup is an Application Installer for Windows +;; See: http://www.jrsoftware.org/isinfo.php +;; This version of iss-mode.el is tested with InnoSetup v5.0 + +;; iss-mode provides the following features: +;; * Syntax coloring for InnoSetup scripts +;; * Integration of the InnoSetup commandline compiler iscc.exe +;; - Compilation via M-x iss-compile +;; - Jump to compilation error via M-x next-error +;; * Start Innosetup help via M-x iss-compiler-help +;; * Test the installation via M-x iss-run-installer + +;; Of course you can bind this commands to keys (e.g. in the iss-mode-hook) + +;; My initialization for InnoSetup looks like this: +;; (autoload 'iss-mode "iss-mode" "Innosetup Script Mode" t) +;; (setq auto-mode-alist (append '(("\\.iss$" . iss-mode)) auto-mode-alist)) +;; (setq iss-compiler-path "c:/Programme/Inno Setup 5/") +;; (add-hook 'iss-mode-hook 'xsteve-iss-mode-init) +;; (defun xsteve-iss-mode-init () +;; (interactive) +;; (define-key iss-mode-map [f6] 'iss-compile) +;; (define-key iss-mode-map [(meta f6)] 'iss-run-installer))) + +;; The latest version of iss-mode.el can be found at: +;; http://www.xsteve.at/prg/emacs/iss-mode.el + +;; Comments / suggestions welcome! + +;;; Change log: +;; +;; Version 1.1e: +;; +;; - Add some new flags to keywords + +;;; Code: + +(eval-and-compile (require 'compile)) + +(defvar iss-compiler-path nil "Path to the iss compiler") + +;;; End of user settings + +(defvar iss-mode-syntax-table + (let ((table (make-syntax-table))) + ;; ";" starts a comment + ;;(modify-syntax-entry ?\; "<" iss-mode-syntax-table) + (modify-syntax-entry ?\; ". 12" table) + ;; and \n and \^M end a comment + (modify-syntax-entry ?\n ">" table) + (modify-syntax-entry ?\^M ">" table) + + (modify-syntax-entry ?\" "." table) + + (modify-syntax-entry ?_ "w" table) + table) + "Syntax table in use in iss-mode buffers.") + + +(defvar iss-font-lock-keywords + (list + (cons (concat "^;\.*") + 'font-lock-comment-face) + (cons (concat "\\sw+: ") + 'font-lock-keyword-face) + (cons "^[ \t]*\\[\.+\\]" 'font-lock-function-name-face) ;font-lock-constant-face) + (cons "^[ \t]*#include[ \t]*\".+\"" 'font-lock-preprocessor-face) + (cons (concat "^[ \t]*\\<\\(appname\\|appvername\\|appversion\\|appcopyright\\|appid\\|" + "appmutex\\|beveledlabel\\|defaultdirname\\|versioninfoversion" + "\\|defaultgroupname\\|minversion\\|outputdir\\|outputbasefilename\\|" + "allownoicons\\|uninstallfilesdir\\|" + "sourcedir\\|disableprogramgrouppage\\|alwayscreateuninstallicon\\)\\>") + 'font-lock-type-face) + (cons (concat "\\<\\(alwaysskipifsameorolder\\|uninsneveruninstall\\|" + "comparetimestampalso\\|restartreplace\\|isreadme\\|" + "unchecked\\|nowait\\|postinstall\\|skipifsilent\\|ignoreversion\\|" + "uninsdeletekeyifempty\\|uninsdeletekey\\|" + "runasoriginaluser\\|runascurrentuser" + "\\)\\>") + 'font-lock-variable-name-face) + (cons (concat "\\<\\(HKCU\\|HKLM\\|dirifempty\\|files\\|filesandordirs\\)\\>") + 'font-lock-constant-face) + (list 'iss-fontify-options '(1 'font-lock-variable-name-face) '(2 'font-lock-keyword-face)) + ) + "Expressions to highlight in iss mode.") + +(defun iss-fontify-options (bound) + (message "iss-fontify-options %s" bound) + (when (re-search-forward "^[ \t]*\\([^=]+\\)[ \t]*\\(=\\)" bound t) + (match-data))) + +(defvar iss-mode-map (make-sparse-keymap) + "Keymap used in iss-mode buffers.") + +(easy-menu-define + iss-menu + iss-mode-map + "InnoSetup script menu" + (list + "ISS" + ["Compile" (iss-compile) t] + ["Run Installer" (iss-run-installer) t] + ["InnoSetup Help" (iss-compiler-help) t] + )) +(easy-menu-add iss-menu) + +(defvar compilation-file-regexp-alist) ;; silence compiler, don't know the var. + +;;;###autoload +(defun iss-mode () + "Major mode for editing InnoSetup script files. Upon startup iss-mode-hook is run." + (interactive) + (kill-all-local-variables) + (use-local-map iss-mode-map) + (setq major-mode 'iss-mode) + (setq mode-name "iss") + (set-syntax-table iss-mode-syntax-table) + (set (make-local-variable 'comment-start) ";") + (set (make-local-variable 'comment-end) "") + (set (make-local-variable 'comment-multi-line) nil) + + (set (make-local-variable 'compilation-error-regexp-alist) + '(("\\(Error on line\\) \\([0-9]+\\):" nil 2))) + (set (make-local-variable 'compilation-file-regexp-alist) + '(("iscc \\(.*\\)$" 1))) + + ;; Font lock support + (make-local-variable 'font-lock-defaults) + (setq font-lock-defaults '(iss-font-lock-keywords nil t)) + (run-hooks 'iss-mode-hook)) + +(defun iss-compiler-help () + "Start the online documentation for the InnoSetup compiler" + (interactive) + (let ((default-directory (or iss-compiler-path default-directory))) + (w32-shell-execute 1 "ISetup.chm"))) + +(defun iss-compile () + "Compile the actual file with the InnoSetup compiler" + (interactive) + (let ((default-directory (or iss-compiler-path default-directory)) + (compilation-process-setup-function 'iss-process-setup)) + (compile (concat "iscc " (buffer-file-name))))) + +(defun iss-process-setup () + "Set up `compilation-exit-message-function' for `iss-compile'." + (set (make-local-variable 'compilation-exit-message-function) + 'iss-compilation-exit-message-function)) + +(defun iss-compilation-exit-message-function (process-status exit-status msg) + (interactive) + (save-excursion + (let ((buffer-read-only nil)) + (goto-char (point-min)) + ;;scroll down one line, so that the compile command is parsed to: + ;; -> get the filename of the compiled file + (insert "\n"))) + (cons msg exit-status)) + +(defun iss-find-option (option) + (let ((search-regexp + (concat option "[ \t]*=[ \t]*\\(.*\\)$"))) + (save-excursion + (goto-char (point-min)) + (when (search-forward-regexp search-regexp nil t) + (buffer-substring-no-properties (match-beginning 1) (match-end 1)))))) + +(defun iss-run-installer () + (interactive) + (let ((executable + (concat (or (iss-find-option "outputdir") "Output\\") + (or (iss-find-option "outputbasefilename") "setup") + ".exe"))) + (w32-shell-execute 1 executable))) + +(provide 'iss-mode) + +;; arch-tag: b07b7119-d591-465e-927f-d0be0bcf7cab |