https://github.com/lifeisfoo/emacs-grails
A minor mode for Grails projects
https://github.com/lifeisfoo/emacs-grails
Last synced: 3 months ago
JSON representation
A minor mode for Grails projects
- Host: GitHub
- URL: https://github.com/lifeisfoo/emacs-grails
- Owner: lifeisfoo
- Created: 2016-03-03T16:25:10.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2022-11-10T09:31:09.000Z (almost 3 years ago)
- Last Synced: 2023-06-11T08:34:45.590Z (over 2 years ago)
- Language: Emacs Lisp
- Homepage:
- Size: 161 KB
- Stars: 2
- Watchers: 2
- Forks: 5
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# grails.el
[](http://melpa.org/#/grails)
[](http://stable.melpa.org/#/grails)Grails.el is an Emacs minor mode that allows an easy navigation
of Grails projects.## Features
Grails.el allows you to __fast open__ a domain class, a controller, a service or a view providing
customized open functions for each Grails file type. Now with autocompletion and history support.Moreover __it can jump__ from the current domain|controller|service to the
related domain|controller|service. You can also jump to the Bootstrap
and UrlMappings file. And yes, you can jump from the current controller action
to the related view __NEW__.This minor mode __doesn't have any external dependencies__ and works nicely
with Grails 2 and __Grails 3__ projects.### Demo

### Available functions and default key bindings
| Function | Default key binding | Effect |
| -------- | -------- | ------ |
| grails-domain-from-file | `C-c` `-` `d` | Open the Domain class related to the current file (e.g. if current buffer is `controllers/UserController.groovy`, it opens `domain/User.groovy` |
| grails-controller-from-file |`C-c` `-` `c` | Open the Controller class related to the current file (e.g. if current buffer is `domain/User.groovy`, it opens `controllers/UserController.groovy` |
| grails-service-from-file | `C-c` `-` `s` | Open the Service class related to the current file (e.g. if current buffer is `controllers/UserController.groovy`, it opens `services/UserService.groovy` |
| grails-view-from-context | `C-c` `-` `v` `v` | Open the view related to the current controller action |
| grails-view-from-cursor | `C-c` `-` `v` `w` | Open the view related to the current controller, with name equals to the current word (cursor) |
| grails-urlmappings-file | `C-c` `-` `u` | Open the UrlMappings file |
| grails-bootstrap-file | `C-c` `-` `b` | Open the Bootstrap file |
| grails-domain-from-name | `C-c` `-` `n` `d`| Open a find file prompt inside `grails-app/domain/` |
| grails-controller-from-name | `C-c` `-` `n` `c`| Open a find file prompt inside `grails-app/controllers/` |
| grails-service-from-name |`C-c` `-` `n` `s`| Open a find file prompt inside `grails-app/services/` |
| grails-view-from-name | `C-c` `-` `n` `v`| Open a find file prompt inside `grails-app/views/` |
| grails-version | `C-c` `-` `p` | Show grails project properties (only grails version by now) |#### Class names with packages and jump features
Class names with __packages are fully supported__. E.g.:- `C-c` `-` `c` (if current buffer is `domain/my/package/User.groovy`) will open `controllers/my/package/UserController.groovy`
### Custom key bindings
[Emacs key binding convention](https://www.gnu.org/software/emacs/manual/html_node/elisp/Key-Binding-Conventions.html#Key-Binding-Conventions) say that a minor mode can only
define bindings like `C-c punctuation_char other_char ...` also avoiding
`{, }, <, >, : or ;` as the first punctuation char. So, the default bindings
for `grails.el` starts always with the sequence `C-c -`. __If you want shorter
bindings__, and I'm sure you want them, just read below.This mode expose a `grails-key-map` variable that you can use to customize
default key bindings available only when grails mode is active.
Just add to your `.emacs` file a `define-key` for every command that you want
to bind to a custom key binding.E.g.:
;; your .emacs file
(require 'grails) ;; do not add this if you've installed it from melpa
;; jump commands
(define-key grails-key-map (kbd "C-c d") 'grails-domain-from-file)
(define-key grails-key-map (kbd "C-c c") 'grails-controller-from-file)
(define-key grails-key-map (kbd "C-c s") 'grails-service-from-file)
(define-key grails-key-map (kbd "C-c v") 'grails-view-from-context)
(define-key grails-key-map (kbd "C-c w") 'grails-view-from-cursor)
(define-key grails-key-map (kbd "C-c u") 'grails-urlmappings-file)
(define-key grails-key-map (kbd "C-c b") 'grails-bootstrap-file);; find file commands
;; equals to C-x C-f called from /your/project/grails-app/domain/
(define-key grails-key-map (kbd "C-c C-f d") 'grails-domain-from-name);; equals to C-x C-f called from /your/project/grails-app/controllers/
(define-key grails-key-map (kbd "C-c C-f c") 'grails-controller-from-name);; equals to C-x C-f called from /your/project/grails-app/services/
(define-key grails-key-map (kbd "C-c C-f s") 'grails-service-from-name);; equals to C-x C-f called from /your/project/grails-app/views/
(define-key grails-key-map (kbd "C-c C-f v") 'grails-view-from-name);; show Grails project properties (only version by now)
(define-key grails-key-map (kbd "C-c p") 'grails-version)Available commands are listed in the table above.
## Installation
Copy this file to to some location in your Emacs load path. Then add
`(require 'grails)` to your Emacs initialization (.emacs,
init.el, or something):(require 'grails)
## Configuration
### Always active in project tree
To auto enable grails minor mode, create a .dir-locals.el file
in the root of the grails project with this configuration:((nil . ((grails . 1))))
In this way, the grails minor mode will be always active inside your project tree.
__The first time__ that this code is executed, Emacs will show a security
prompt: __answer "!" to mark code secure__ and save your decision (a configuration
line is automatically added to your .emacs file).This is the suggested default configuration.
### Active by major mode
In order to have grails minor mode auto enabled only when using certain modes,
place this inside your `.dir-locals.el`:((groovy-mode (grails . 1))
(html-mode (grails . 1))
(java-mode (grails . 1)))
In this way, the grails minor mode will be auto enabled when any of
these major modes are loaded (only in this directory tree - the project tree)
(you can attach it to other modes if you want).## Contributing
Pull requests are welcome.Check open issues for feature requests or current bugs.
## License
This software is released under the [GPL license version 3](http://www.gnu.org/licenses/gpl-3.0.en.html), or (at your option) any later version.