branch: elpa/scad-mode
commit 3be01e4213f6828234e73c1f7ec66c0fb594abef
Author: Daniel Mendler <m...@daniel-mendler.de>
Commit: Daniel Mendler <m...@daniel-mendler.de>

    Use Compat
---
 scad-mode.el | 66 +++++++++++++++++++++++++-----------------------------------
 1 file changed, 27 insertions(+), 39 deletions(-)

diff --git a/scad-mode.el b/scad-mode.el
index e2855e28e1..82009c33f2 100644
--- a/scad-mode.el
+++ b/scad-mode.el
@@ -5,7 +5,7 @@
 ;; Created:          2010
 ;; Keywords:         languages
 ;; Homepage:         https://github.com/openscad/emacs-scad-mode
-;; Package-Requires: ((emacs "27.1"))
+;; Package-Requires: ((emacs "27.1") (compat "29.1.3.4"))
 ;; Version:          93.2
 
 ;; This file is not part of GNU Emacs.
@@ -26,13 +26,14 @@
 ;;; Commentary:
 ;;
 ;; This is a major-mode to implement the SCAD constructs and
-;; font-locking for OpenSCAD. Install the package from NonGNU ELPA or
+;; font-locking for OpenSCAD.  Install the package from NonGNU ELPA or
 ;; MELPA:
 ;;
 ;; M-x install-package RET scad-mode RET
 
 ;;; Code:
 
+(require 'compat)
 (require 'cc-mode)
 (eval-when-compile
   (require 'cc-langs)
@@ -136,15 +137,14 @@ Options are .stl, .off, .amf, .3mf, .csg, .dxf, .svg, 
.pdf, .png,
 .echo, .ast, .term, .nef3, .nefdbg."
   :type 'string)
 
-(defvar scad-mode-map
-  (let ((map (c-make-inherited-keymap)))
-    (define-key map "\C-c\C-c" #'scad-preview)
-    (define-key map "\C-c\C-o" #'scad-open)
-    (define-key map "\C-c\C-e" #'scad-export)
-    (define-key map "\t" #'indent-for-tab-command)
-    (define-key map "\M-\t" #'completion-at-point)
-    map)
-  "Keymap for `scad-mode'.")
+(defvar-keymap scad-mode-map
+  :doc "Keymap for `scad-mode'."
+  :parent c-mode-base-map
+  "C-c C-c" #'scad-preview
+  "C-c C-o" #'scad-open
+  "C-c C-e" #'scad-export
+  "TAB" #'indent-for-tab-command
+  "M-TAB" #'completion-at-point)
 
 (defvar scad-mode-syntax-table
   (let ((st (make-syntax-table)))
@@ -179,23 +179,13 @@ Options are .stl, .off, .amf, .3mf, .csg, .dxf, .svg, 
.pdf, .png,
 
 ;;;###autoload
 (define-derived-mode scad-mode prog-mode "SCAD"
-  "Major mode for editing OpenSCAD code.
-
-To see what version of CC Mode you are running, enter `\\[c-version]'.
-
-The hook `c-mode-common-hook' is run with no args at mode
-initialization, then `scad-mode-hook'.
-
-Key bindings:
-\\{scad-mode-map}"
+  "Major mode for editing OpenSCAD code."
   :group 'scad
   :after-hook (c-update-modeline)
-  (remove-hook 'flymake-diagnostic-functions #'flymake-cc 'local)
   (add-hook 'flymake-diagnostic-functions #'scad-flymake nil 'local)
   (add-hook 'completion-at-point-functions
             #'scad-completion-at-point nil 'local)
   (c-initialize-cc-mode t)
-  (setq abbrev-mode t)
   (c-init-language-vars scad-mode)
   (c-common-init 'scad-mode)
   (c-set-offset 'cpp-macro 0 nil)
@@ -241,23 +231,21 @@ Key bindings:
 (put 'scad--preview-mode-status 'permanent-local t)
 (put 'scad--preview-mode-camera 'permanent-local t)
 
-(defvar scad-preview-mode-map
-  (let ((map (make-sparse-keymap)))
-    (define-key map "p" #'scad-preview-projection)
-    (define-key map (kbd "M--") #'scad-preview-size-)
-    (define-key map (kbd "M-+") #'scad-preview-size+)
-    (define-key map "-" #'scad-preview-distance-)
-    (define-key map "+" #'scad-preview-distance+)
-    (define-key map [right] #'scad-preview-rotate-z-)
-    (define-key map [left] #'scad-preview-rotate-z+)
-    (define-key map [up] #'scad-preview-rotate-x+)
-    (define-key map [down] #'scad-preview-rotate-x-)
-    (define-key map [M-left] #'scad-preview-translate-x+)
-    (define-key map [M-right] #'scad-preview-translate-x-)
-    (define-key map [M-up] #'scad-preview-translate-z-)
-    (define-key map [M-down] #'scad-preview-translate-z+)
-    map)
-  "Keymap for SCAD preview buffers.")
+(defvar-keymap scad-preview-mode-map
+  :doc "Keymap for SCAD preview buffers."
+  "p" #'scad-preview-projection
+  "M--" #'scad-preview-size-
+  "M-+" #'scad-preview-size+
+  "-" #'scad-preview-distance-
+  "+" #'scad-preview-distance+
+  "<right>" #'scad-preview-rotate-z-
+  "<left>" #'scad-preview-rotate-z+
+  "<up>" #'scad-preview-rotate-x+
+  "<down>" #'scad-preview-rotate-x-
+  "M-<left>" #'scad-preview-translate-x+
+  "M-<right>" #'scad-preview-translate-x-
+  "M-<up>" #'scad-preview-translate-z-
+  "M-<down>" #'scad-preview-translate-z+)
 
 (defun scad--preview-status (status)
   "Update mode line of preview buffer with STATUS."

Reply via email to