Skip to content

Commit

Permalink
Derive ca65-mode from prog-mode
Browse files Browse the repository at this point in the history
  • Loading branch information
wendelscardua committed Feb 2, 2021
1 parent e0cddbc commit 3547aca
Showing 1 changed file with 12 additions and 39 deletions.
51 changes: 12 additions & 39 deletions ca65-mode.el
Original file line number Diff line number Diff line change
Expand Up @@ -26,24 +26,8 @@

;; Provides font-locking and indentation support to ca65 assembly files.

;; Installation
;; ============

;; Place this file in your load path; then, place the following
;; command somewhere in your initialization file:

;; (require 'ca65-mode)

;;; Code:

(defvar ca65-mode-hook nil)

(defvar ca65-mode-map
(let ((map (make-keymap)))
(define-key map "\C-j" 'newline-and-indent)
map)
"Keymap for ca65 major mode.")

;;;###autoload
(add-to-list 'auto-mode-alist '("\\.s\\'" . ca65-mode))
(add-to-list 'auto-mode-alist '("\\.inc\\'" . ca65-mode))
Expand Down Expand Up @@ -143,31 +127,20 @@
(indent-line-to cur-indent)))
(indent-line-to 0))))))

(defvar ca65-mode-syntax-table
(let ((st (make-syntax-table)))
(modify-syntax-entry ?_ "w" st)
(modify-syntax-entry ?$ "w" st)
(modify-syntax-entry ?% "w" st)
(modify-syntax-entry ?\; "<" st)
(modify-syntax-entry ?\n ">" st)
(modify-syntax-entry ?\" "\"" st)
(modify-syntax-entry ?\' "'" st)
st)
"Syntax table for `ca65-mode'.")

;;;###autoload
(defun ca65-mode ()
(define-derived-mode ca65-mode prog-mode "ca65"
"Major mode for editing ca65 assembly files."
(interactive)
(kill-all-local-variables)
(set-syntax-table ca65-mode-syntax-table)
(use-local-map ca65-mode-map)
(set (make-local-variable 'font-lock-defaults) '(ca65-font-lock-keywords))
(set (make-local-variable 'indent-line-function) #'ca65-indent-line)
(setq major-mode #'ca65-mode)
(setq mode-name "ca65")
(set-variable 'tab-width 2)
(run-hooks 'ca65-mode-hook))
(setq font-lock-defaults `(ca65-font-lock-keywords))
(setq indent-line-function #'ca65-indent-line)
(modify-syntax-entry ?_ "w" ca65-mode-syntax-table)
(modify-syntax-entry ?# "w" ca65-mode-syntax-table)
(modify-syntax-entry ?$ "w" ca65-mode-syntax-table)
(modify-syntax-entry ?% "w" ca65-mode-syntax-table)
(modify-syntax-entry ?\; "<" ca65-mode-syntax-table)
(modify-syntax-entry ?\n ">" ca65-mode-syntax-table)
(modify-syntax-entry ?\" "\"" ca65-mode-syntax-table)
(modify-syntax-entry ?\' "'" ca65-mode-syntax-table)
(set-variable 'tab-width 2))

(provide 'ca65-mode)
;;; ca65-mode.el ends here

0 comments on commit 3547aca

Please sign in to comment.