From bfee53643c26c9a8623b7617ce5c46aea13d3bcd Mon Sep 17 00:00:00 2001 From: Manoel Vilela Date: Mon, 17 Jul 2017 11:07:48 -0300 Subject: [PATCH] Add the prelude-rust.el module (#1102) The module uses the following packages: * rust-mode (general utilities for rust development) * flycheck-rust (syntax checking) * cargo (keybinding as minor-mode for using cargo package manager) * racer (wrapper for the race code completion tool using company-mode) --- modules/prelude-rust.el | 66 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 modules/prelude-rust.el diff --git a/modules/prelude-rust.el b/modules/prelude-rust.el new file mode 100644 index 0000000..bb4c4a8 --- /dev/null +++ b/modules/prelude-rust.el @@ -0,0 +1,66 @@ +;;; prelude-rust.el --- Emacs Prelude: Rust programming support. +;; +;; Authors: Doug MacEachern, Manoel Vilela +;; Version: 1.0.1 +;; Keywords: convenience rust + +;; This file is not part of GNU Emacs. + +;;; Commentary: + +;; Prelude configuration for Rust + +;;; License: + +;; 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 3 +;; 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 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. + +;;; Code: + +(require 'prelude-programming) + +;; You may need installing the following packages on your system: +;; * rustc (Rust Compiler) +;; * cargo (Rust Package Manager) +;; * racer (Rust Completion Tool) +;; * rustfmt (Rust Tool for formatting code) + +(prelude-require-packages '(rust-mode + racer + flycheck-rust + cargo)) + +(setq rust-format-on-save t) + +(eval-after-load 'rust-mode + '(progn + (add-hook 'rust-mode-hook 'racer-mode) + (add-hook 'racer-mode-hook 'eldoc-mode) + (add-hook 'rust-mode-hook 'cargo-minor-mode) + (add-hook 'rust-mode-hook 'flycheck-rust-setup) + (add-hook 'flycheck-mode-hook 'flycheck-rust-setup) + + (defun prelude-rust-mode-defaults () + (local-set-key (kbd "C-c C-d") 'racer-describe) + ;; CamelCase aware editing operations + (subword-mode +1)) + + (setq prelude-rust-mode-hook 'prelude-rust-mode-defaults) + + (add-hook 'rust-mode-hook (lambda () + (run-hooks 'prelude-rust-mode-hook))))) + +(provide 'prelude-rust) +;;; prelude-rust.el ends here