Unverified Commit ff351bd5 authored by Steve Plimpton's avatar Steve Plimpton Committed by GitHub
Browse files

Merge pull request #1022 from HaoZeke/updateEmacs

emacs: Update mode file
parents 8c0955aa 6dad2f59
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ src/USER-MISC/*_grem.* @dstelter92

# tools
tools/msi2lmp/*       @akohlmey
tools/emacs/*         @HaoZeke

# cmake
cmake/*               @junghans @rbberger

tools/emacs/README.md

0 → 100644
+82 −0
Original line number Diff line number Diff line
# GNU Emacs Syntax Highlighting

> Copyright (C) 2010-2018  Aidan Thompson <athomps at sandia.gov>
> Copyright (C) 2018  Rohit Goswami <r95g10 at gmail.com>

The `lammps-mode.el` file provided in this directory will enable syntax
highlighting for the lammps script syntax in GNU Emacs. The groupings of
commands were originally copied from `tools/vim`.

## Installation
**Requirements: GNU Emacs 24.\***

### Obtaining the Package

#### MELPA

The easiest installation method is via MELPA and it is advisable to use one of
the many [MELPA installation methods](https://melpa.org/#/getting-started).

For example, with [use-package](https://github.com/jwiegley/use-package) one can
simply use the following:

``` emacs-lisp
(use-package lammps-mode)
```

#### Manually

Assuming for some reason you have downloaded the file to `~/.emacs.d/lisp` you
would do the following (kanged [from here](http://ergoemacs.org/emacs/emacs_installing_packages.html)):

``` emacs-lisp
;; Tell emacs where is your personal elisp lib dir
(add-to-list 'load-path "~/.emacs.d/lisp/")

;; load the package.
(load "lammps-mode")
```

### Autoloading \& Auto-recognition

To automatically turn on the LAMMPS mode for editing your input scripts,
use the following line as the **first** line of your script:
```
# -*- lammps -*-
```

For automatically switching on the LAMMPS mode based on filename patterns,
e.g. for `in.*` and `*.lmp` files, add the following code to your `.emacs`:

``` emacs-lisp
(autoload 'lammps-mode "lammps-mode.el" "LAMMPS mode." t)
(setq auto-mode-alist (append auto-mode-alist
                              '(("in\\." . lammps-mode))
                              '(("\\.lmp\\'" . lammps-mode))
                              ))
```

## Status

By far not all commands are included in the syntax file (lammps-mode.el). You
can easily add new ones to the existing classes.

## Implementation Details

`lammps-mode` is derived from `shell-script-mode` which provides some basic
syntax highlighting of strings, comments, etc.

The MELPA recipe used for this package is simply:

``` emacs-lisp
(lammps-mode :fetcher github :repo "HaoZeke/lammps-mode")
```
 
## Caveats

* Does not work with Xemacs [See [this comment](https://github.com/lammps/lammps/pull/1022#issuecomment-408871233)]

## License

[GNU GPL v2](https://github.com/HaoZeke/lammps-mode/blob/master/LICENSE).
Check the file for more details.

tools/emacs/README.txt

deleted100644 → 0
+0 −23
Original line number Diff line number Diff line
=== Emacs Syntax Highlighting ===
Created by Aidan Thompson 12/2010
===============================

The lammps.el file provided in this directory will enable syntax 
highlighting for the lammps script syntax in emacs. The groupings
of commands were copied from tools/vim. The simulation scripts have to
end on *.lmp or start with in.* (see lammps.el). By far not all 
commands are included in the syntax file (lammps.el). 
You can easily add new ones to the existing classes.
'lammps-mode' is derived from 'shell-script-mode' which provides
some basic syntax highlighting of strings, comments, etc.

=To enable the highlighting:
============================
(0) Create/edit the emacs init file ~/.emacs to contain:
   
(load "~/.emacs.d/lammps")

This file may also be called ~/.emacs.el, or ~/.emacs.d/init.el

(1) Copy lammps.el to the directory ~/.emacs.d
+47 −12
Original line number Diff line number Diff line
;; LAMMPS auto-mode
;;; lammps-mode.el --- basic syntax highlighting for LAMMPS files

;; Copyright (C) 2010-18 Aidan Thompson
;; Copyright (C) 2018 Rohit Goswami

;; Author: Aidan Thompson <athomps at sandia.gov>
;; Maintainer: Rohit Goswami <r95g10 at gmail.com>
;; Created: December 4, 2010
;; Modified: July 30, 2018
;; Version: 1.5.0
;; Keywords: languages, faces
;; Homepage: https://github.com/lammps/lammps/tree/master/tools/emacs
;; Package-Requires: ((emacs "24.4"))

;; This file is not part of GNU Emacs.

;; This program 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 of the License, or
;; (at your option) any later version.

;; This program 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 this program; if not, write to the Free Software Foundation, Inc.,
;; 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

;;; Commentary:
;; translation of keyword classes from tools/vim
;; see http://xahlee.org/emacs/elisp_syntax_coloring.html

;; Put this in your .emacs file to enable autoloading of lammps-mode
;; and auto-recognition of "in.*" and "*.lmp" files:
;;
;; (autoload 'lammps-mode "lammps-mode.el" "LAMMPS mode." t)
;; (setq auto-mode-alist (append auto-mode-alist
;;                               '(("in\\." . lammps-mode))
;;                               '(("\\.lmp\\'" . lammps-mode))
;;                               ))
;;

;;; Code:
 ;; define several keyword classes
(defvar lammps-output
  '("log"
@@ -136,6 +177,8 @@
(defvar lammps-variable-regexp
  "\\$\\({[a-zA-Z0-9_]+}\\)\\|\\$[A-Za-z]")

(defvar lammps-font-lock-keywords)

;; clear memory
(setq lammps-output nil)
(setq lammps-read nil)
@@ -151,8 +194,7 @@

;; create the list for font-lock.
;; each class of keyword is given a particular face
(setq 
 lammps-font-lock-keywords
(setq lammps-font-lock-keywords
 `((,lammps-output-regexp . font-lock-function-name-face)
   (,lammps-read-regexp . font-lock-preprocessor-face)
   (,lammps-lattice-regexp . font-lock-type-face)
@@ -199,12 +241,5 @@
  (setq lammps-comment-regexp nil)
  (setq lammps-variable-regexp nil))

;; apply it to specified filename patterns
(setq 
 auto-mode-alist
 (append 
  auto-mode-alist
  '(("in\\." . lammps-mode))
  '(("\\.lmp\\'" . lammps-mode))
  ))
(provide 'lammps-mode)
;;; lammps-mode.el ends here