[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/arduino-mode 09fd1b8 001/107: import arduino-mode
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/arduino-mode 09fd1b8 001/107: import arduino-mode |
Date: |
Sun, 29 Aug 2021 10:58:05 -0400 (EDT) |
branch: elpa/arduino-mode
commit 09fd1b81880072937881799f6a1cc3431c85002a
Author: Christopher Grim <christopher.grim@gmail.com>
Commit: Christopher Grim <christopher.grim@gmail.com>
import arduino-mode
---
.gitignore | 1 +
arduino-mode.el | 128 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 129 insertions(+)
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..c531d98
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+*.elc
diff --git a/arduino-mode.el b/arduino-mode.el
new file mode 100644
index 0000000..10bc196
--- /dev/null
+++ b/arduino-mode.el
@@ -0,0 +1,128 @@
+;;; arduino-mode.el --- Major mode for the Arduino language
+
+;; Copyright (C) 2008 Christopher Grim
+
+;; Author: Christopher Grim <christopher.grim@gmail.com>
+;; Keywords: languages, arduino
+
+;; 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 3, 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., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+;;
+;; Based on derived-mode-ex.el found here:
+;;
+;; <http://cc-mode.sourceforge.net/derived-mode-ex.el>.
+;;
+
+;;; Code:
+(require 'cc-mode)
+
+(eval-when-compile
+ (require 'cc-langs)
+ (require 'cc-fonts))
+
+(eval-and-compile
+ ;; fall back on c-mode
+ (c-add-language 'arduino-mode 'c-mode))
+
+(c-lang-defconst c-primitive-type-kwds
+ arduino (append '("boolean" "byte")
+ (c-lang-const c-primitive-type-kwds)))
+
+(c-lang-defconst c-constant-kwds
+ arduino (append '("HIGH" "LOW" "INPUT" "OUTPUT")
+ (c-lang-const c-constant-kwds)))
+
+(defgroup arduino nil "Arduino mode customizations")
+
+(defcustom arduino-font-lock-extra-types nil
+ "*List of extra types (aside from the type keywords) to recognize in Arduino
mode.
+Each list item should be a regexp matching a single identifier." :group
'arduino)
+
+(defconst arduino-font-lock-keywords-1 (c-lang-const c-matchers-1 arduino)
+ "Minimal highlighting for Arduino mode.")
+
+(defconst arduino-font-lock-keywords-2 (c-lang-const c-matchers-2 arduino)
+ "Fast normal highlighting for Arduino mode.")
+
+(defconst arduino-font-lock-keywords-3 (c-lang-const c-matchers-3 arduino)
+ "Accurate normal highlighting for Arduino mode.")
+
+(defvar arduino-font-lock-keywords arduino-font-lock-keywords-3
+ "Default expressions to highlight in ARDUINO mode.")
+
+(defvar arduino-mode-syntax-table nil
+ "Syntax table used in arduino-mode buffers.")
+(or arduino-mode-syntax-table
+ (setq arduino-mode-syntax-table
+ (funcall (c-lang-const c-make-mode-syntax-table arduino))))
+
+(defvar arduino-mode-abbrev-table nil
+ "Abbreviation table used in arduino-mode buffers.")
+
+(c-define-abbrev-table 'arduino-mode-abbrev-table
+ ;; Keywords that if they occur first on a line might alter the
+ ;; syntactic context, and which therefore should trig reindentation
+ ;; when they are completed.
+ '(("else" "else" c-electric-continued-statement 0)
+ ("while" "while" c-electric-continued-statement 0)))
+
+(defvar arduino-mode-map (let ((map (c-make-inherited-keymap)))
+ ;; Add bindings which are only useful for Arduino
+ map)
+ "Keymap used in arduino-mode buffers.")
+
+(easy-menu-define arduino-menu arduino-mode-map "Arduino Mode Commands"
+ (cons "Arduino" (c-lang-const c-mode-menu arduino)))
+
+;;;###autoload
+(add-to-list 'auto-mode-alist '("\\.pde\\'" . arduino-mode))
+
+;;;###autoload
+(defun arduino-mode ()
+ "Major mode for editing Arduino code.
+
+The hook `c-mode-common-hook' is run with no args at mode
+initialization, then `arduino-mode-hook'.
+
+Key bindings:
+\\{arduino-mode-map}"
+ (interactive)
+ (kill-all-local-variables)
+ (c-initialize-cc-mode t)
+ (set-syntax-table arduino-mode-syntax-table)
+ (setq major-mode 'arduino-mode
+ mode-name "Arduino"
+ local-abbrev-table arduino-mode-abbrev-table
+ abbrev-mode t)
+ (use-local-map c-mode-map)
+ ;; `c-init-language-vars' is a macro that is expanded at compile
+ ;; time to a large `setq' with all the language variables and their
+ ;; customized values for our language.
+ (c-init-language-vars arduino-mode)
+ ;; `c-common-init' initializes most of the components of a CC Mode
+ ;; buffer, including setup of the mode menu, font-lock, etc.
+ ;; There's also a lower level routine `c-basic-common-init' that
+ ;; only makes the necessary initialization to get the syntactic
+ ;; analysis and similar things working.
+ (c-common-init 'arduino-mode)
+ (easy-menu-add arduino-menu)
+ (run-hooks 'c-mode-common-hook)
+ (run-hooks 'arduino-mode-hook)
+ (c-update-modeline))
+
+(provide 'arduino-mode)
+;;; arduino-mode.el ends here
- [nongnu] branch elpa/arduino-mode created (now d7c8781), ELPA Syncer, 2021/08/29
- [nongnu] elpa/arduino-mode 09fd1b8 001/107: import arduino-mode,
ELPA Syncer <=
- [nongnu] elpa/arduino-mode 3cd6585 003/107: highlight builtin functions as keywords, ELPA Syncer, 2021/08/29
- [nongnu] elpa/arduino-mode 1e0afb7 009/107: Add to languages customisation group., ELPA Syncer, 2021/08/29
- [nongnu] elpa/arduino-mode aa051bb 014/107: Add a serial monitor., ELPA Syncer, 2021/08/29
- [nongnu] elpa/arduino-mode 6a77cac 021/107: Merge pull request #6 from yasuyk/add-autoload-cookie, ELPA Syncer, 2021/08/29
- [nongnu] elpa/arduino-mode 94d25f2 018/107: Merge pull request #2 from pavlobaron/master, ELPA Syncer, 2021/08/29
- [nongnu] elpa/arduino-mode a7bd544 023/107: Rearrange the deck chairs a bit, ELPA Syncer, 2021/08/29
- [nongnu] elpa/arduino-mode a1d57fe 027/107: Merge pull request #10 from vanicat/master, ELPA Syncer, 2021/08/29
- [nongnu] elpa/arduino-mode 609d9a9 028/107: Setup travis-ci, ELPA Syncer, 2021/08/29
- [nongnu] elpa/arduino-mode 220b5ca 007/107: New keywords shiftIn and peek in arduino 0019., ELPA Syncer, 2021/08/29
- [nongnu] elpa/arduino-mode 43185aa 011/107: Add spec file for building RPM packages for Fedora., ELPA Syncer, 2021/08/29