Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/avdgaag/projectile-hanami
Projectile Hanami is an Emacs minor mode, based on Projectile, for navigating Hanami projects.
https://github.com/avdgaag/projectile-hanami
Last synced: 25 days ago
JSON representation
Projectile Hanami is an Emacs minor mode, based on Projectile, for navigating Hanami projects.
- Host: GitHub
- URL: https://github.com/avdgaag/projectile-hanami
- Owner: avdgaag
- Archived: true
- Created: 2016-04-18T18:59:08.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2016-05-06T08:16:50.000Z (over 8 years ago)
- Last Synced: 2024-08-03T18:12:54.606Z (4 months ago)
- Language: Emacs Lisp
- Homepage: https://avdgaag.github.io/projectile-hanami
- Size: 29.3 KB
- Stars: 9
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
- awesome-hanami - projectile-hanami - Projectile Hanami is an Emacs minor mode, based on Projectile, for navigating Hanami projects. (Hanami Gem List / Editors and IDE)
README
# Projectile Hanami
## Summary
Projectile Hanami is an [Emacs][] minor mode, based on [Projectile][], for navigating [Hanami][] projects. With Projectile Hanami, you can:
* navigate through entities, repositories, actions, views and templates are different apps in your project;
* quickly jump to some important standard files;
* run `hanami server`
* run `hanami console`
* run `hanami generate`
* run Rake tasksProjectile Hanami is based on [Projectile Rails][], but is not a complete port of all its functionality.
## Installation
This guide assumes you have [Projectile][] already set up.
### MELPA
If you have [MELPA][] set up, you can use `package-install` to install the `projectile-hanami` package.
### Manual installation
You can manually install Projectile hanami by cloning the repository and adding it to your `load-path`:
```elisp
(add-to-list 'load-path "/path/to/repo")
(require 'projectile-hanami)
```## Setup
To have Projectile Hanami loaded whenever Projectile is loaded, you can add it as a hook:
```elisp
(add-hook 'projectile-mode-hook 'projectile-hanami-on)
```...but, this will most likely conflict with Projectile Rails. If you use both [Ruby on Rails][] _and_ Hanami, you will probably want something _slightly_ more sophisticated. I use the following snippet:
```elisp
(defun projectile-rails-or-hanami-on ()
"Activate either `projectile-rails-mode` or `projectile-hanami-mode`."
(if (projectile-hanami-applicable-p)
(projectile-hanami-mode +1)
(projectile-rails-on)))(add-hook 'projectile-mode-hook 'projectile-rails-or-hanami-on)
```Since Projectile Rails cannot distinguish between Rails and Hanami projects, and Hanami _can_, we use Projectile Hanami's detection mechanism and fall back to Projectile Rails in case of no match.
## Usage
### Customization
You can define the Projectile Hanami keybinding prefix:
```elisp
;; Defaults to C-c ;
(setq projectile-hanami-keymap-prefix (kbd "C-c p C-q"))
```To override how Hanami commands are invoked:
```elisp
;; Defaults to `bundle exec hanami`
(setq projectile-hanami-cmd "/path/to/hanami")
```### Commands
Command | Keybinding | Description
------------------------------------------|----------------------|---------------------------------------------------------------------------
projectile-hanami-find-initializer | C-c ; i | Use `projectile-completion-system` to find initializers across apps.
projectile-hanami-find-lib | C-c ; l | Use `projectile-completion-system` to find project lib files.
projectile-hanami-find-controller | C-c ; c | Use `projectile-completion-system` to find controller actions across apps.
projectile-hanami-find-view | C-c ; v | Use `projectile-completion-system` to find views across apps.
projectile-hanami-find-template | C-c ; t | Use `projectile-completion-system` to find templates across apps.
projectile-hanami-find-presenter | C-c ; p | Use `projectile-completion-system` to find presenters across apps.
projectile-hanami-find-stylesheet | C-c ; s | Use `projectile-completion-system` to find stylesheets across apps.
projectile-hanami-find-javascript | C-c ; j | Use `projectile-completion-system` to find javascripts across apps.
projectile-hanami-find-config | C-c ; g | Use `projectile-completion-system` to find config files across apps.
projectile-hanami-find-routes | C-c ; u | Use `projectile-completion-system` to find routes files across apps.
projectile-hanami-find-entity | C-c ; e | Use `projectile-completion-system` to find entities.
projectile-hanami-find-repository | C-c ; r | Use `projectile-completion-system` to find repositories.
projectile-hanami-find-mailer | C-c ; m | Use `projectile-completion-system` to find mailers.
projectile-hanami-find-mailer-template | C-c ; T | Use `projectile-completion-system` to find mailer templates.
projectile-hanami-find-application | C-c ; a | Use `projectile-completion-system` to find main application files.
projectile-hanami-goto-related-controller | C-c ; C | Find the controller action related to the current view or template.
projectile-hanami-goto-related-template | C-c ; T | Find the template related to the current view or controller action.
projectile-hanami-goto-related-view | C-c ; V | Find the view related to the current template or controller action.
projectile-hanami-goto-entity | C-c ; E | Find the entity for the current repository.
projectile-hanami-goto-repository | C-c ; R | Find the repository for the current entity.
projectile-hanami-goto-mapping | C-c ; g m | Find the project's `lib/config/mapping.rb` file
projectile-hanami-goto-rakefile | C-c ; g r | Find the project's Rakefile.
projectile-hanami-goto-gemfile | C-c ; g g | Find the project's Gemfile.
projectile-hanami-rake | C-c ; ! r | Run a project Rake task.
projectile-hanami-console | C-c ; ! c | Run `hanami console`
projectile-hanami-server | C-c ; ! s | Run `hanami server`
projectile-hanami-generate | C-c ; ! g | Run `hanami generate`[Emacs]: http://www.gnu.org/software/emacs/emacs.html
[Projectile]: https://github.com/bbatsov/projectile
[Hanami]: https://hanamirb.org
[Projectile Rails]: https://github.com/asok/projectile-rails
[Ruby on Rails]: https://rubyonrails.org
[MELPA]: http://melpa.org