diff options
| -rw-r--r-- | .gitignore | 6 | ||||
| -rw-r--r-- | rust-cargo.el | 2 | ||||
| -rw-r--r-- | rust-compile.el | 2 | ||||
| -rw-r--r-- | rust-mode-tests.el | 77 | ||||
| -rw-r--r-- | rust-mode.el | 50 | ||||
| -rw-r--r-- | rust-rustfmt.el | 10 |
6 files changed, 73 insertions, 74 deletions
@@ -1,5 +1,5 @@ *.elc *-autoloads.el - -.eask -/dist +/rust-mode-pkg.el + .eask +/dist
\ No newline at end of file diff --git a/rust-cargo.el b/rust-cargo.el index 090945a..0c35ddb 100644 --- a/rust-cargo.el +++ b/rust-cargo.el @@ -64,7 +64,7 @@ (when rust-always-locate-project-on-open (rust-update-buffer-project))) -(add-hook 'rust-mode-hook 'rust-maybe-initialize-buffer-project) +(add-hook 'rust-mode-hook #'rust-maybe-initialize-buffer-project) ;;; Internal diff --git a/rust-compile.el b/rust-compile.el index 78a53cf..1bb3103 100644 --- a/rust-compile.el +++ b/rust-compile.el @@ -76,7 +76,7 @@ the compilation window until the top of the error is visible." (add-to-list 'compilation-error-regexp-alist-alist (cons 'cargo cargo-compilation-regexps)) (add-to-list 'compilation-error-regexp-alist 'cargo) - (add-hook 'next-error-hook 'rustc-scroll-down-after-next-error))) + (add-hook 'next-error-hook #'rustc-scroll-down-after-next-error))) ;;; _ (provide 'rust-compile) diff --git a/rust-mode-tests.el b/rust-mode-tests.el index 8e3ee45..6c967bf 100644 --- a/rust-mode-tests.el +++ b/rust-mode-tests.el @@ -9,14 +9,15 @@ (defconst rust-test-fill-column 32) (setq-default indent-tabs-mode nil) -(defmacro test-silence (messages &rest body) - `(cl-letf* (((symbol-function 'm) - (symbol-function #'message)) - ((symbol-function #'message) - (lambda (format-string &rest args) - (unless (member format-string ,messages) - (apply 'm format-string args))))) - ,@body)) +(defmacro rust-test-silence (messages &rest body) + `(let ((f (lambda (orig-fun format-string &rest args) + (unless (member format-string ,messages) + (apply orig-fun format-string args))))) + (unwind-protect + (progn + (advice-add 'message :around f) + ,@body) + (advice-remove 'message f)))) (defun rust-compare-code-after-manip (_original _point-pos _manip-func expected got) (equal expected got)) @@ -53,7 +54,7 @@ (should (rust-compare-code-after-manip original point-pos manip-func expected (buffer-string))))) -(defun test-fill-paragraph (unfilled expected &optional start-pos end-pos) +(defun rust-test-fill-paragraph (unfilled expected &optional start-pos end-pos) "We're going to run through many scenarios here--the point should be able to be anywhere from the start-pos (defaults to 1) through end-pos (defaults to the length of what was passed in) and (fill-paragraph) should return the same result. It should also work with fill-region from start-pos to end-pos. Also, the result should be the same regardless of whether the code is at the beginning or end of the file. (If you're not careful, that can make a difference.) So we test each position given above with the passed code at the beginning, the end, neither and both. So we do this a total of 1 + (end-pos - start-pos)*4 times. Oy." @@ -91,7 +92,7 @@ Also, the result should be the same regardless of whether the code is at the beg )) (ert-deftest fill-paragraph-top-level-multi-line-style-doc-comment-second-line () - (test-fill-paragraph + (rust-test-fill-paragraph "/** * This is a very very very very very very very long string */" @@ -102,7 +103,7 @@ Also, the result should be the same regardless of whether the code is at the beg (ert-deftest fill-paragraph-top-level-multi-line-style-doc-comment-first-line () - (test-fill-paragraph + (rust-test-fill-paragraph "/** This is a very very very very very very very long string */" "/** This is a very very very @@ -118,7 +119,7 @@ Also, the result should be the same regardless of whether the code is at the beg * * This is the second really really really really really really long paragraph */")) - (test-fill-paragraph + (rust-test-fill-paragraph multi-paragraph-unfilled "/** * This is the first really @@ -128,7 +129,7 @@ Also, the result should be the same regardless of whether the code is at the beg * This is the second really really really really really really long paragraph */" 1 89) - (test-fill-paragraph + (rust-test-fill-paragraph multi-paragraph-unfilled "/** * This is the first really really really really really really really long paragraph @@ -145,7 +146,7 @@ Also, the result should be the same regardless of whether the code is at the beg "/// This is the first really really really really really really really long paragraph /// /// This is the second really really really really really really long paragraph")) - (test-fill-paragraph + (rust-test-fill-paragraph multi-paragraph-unfilled "/// This is the first really /// really really really really @@ -153,7 +154,7 @@ Also, the result should be the same regardless of whether the code is at the beg /// /// This is the second really really really really really really long paragraph" 1 86) - (test-fill-paragraph + (rust-test-fill-paragraph multi-paragraph-unfilled "/// This is the first really really really really really really really long paragraph /// @@ -163,7 +164,7 @@ Also, the result should be the same regardless of whether the code is at the beg 87))) (ert-deftest fill-paragraph-multi-paragraph-single-line-style-indented () - (test-fill-paragraph + (rust-test-fill-paragraph " // This is the first really really really really really really really long paragraph // // This is the second really really really really really really long paragraph" @@ -175,7 +176,7 @@ Also, the result should be the same regardless of whether the code is at the beg // This is the second really really really really really really long paragraph" 1 89)) (ert-deftest fill-paragraph-multi-line-style-comment () - (test-fill-paragraph + (rust-test-fill-paragraph "/* This is a very very very very very very very very long string */" "/* This is a very very very very @@ -184,7 +185,7 @@ Also, the result should be the same regardless of whether the code is at the beg */")) (ert-deftest fill-paragraph-multi-line-style-inner-doc-comment () - (test-fill-paragraph + (rust-test-fill-paragraph "/*! This is a very very very very very very very long string */" "/*! This is a very very very @@ -193,14 +194,14 @@ Also, the result should be the same regardless of whether the code is at the beg */")) (ert-deftest fill-paragraph-single-line-style-inner-doc-comment () - (test-fill-paragraph + (rust-test-fill-paragraph "//! This is a very very very very very very very long string" "//! This is a very very very //! very very very very long //! string")) (ert-deftest fill-paragraph-prefixless-multi-line-doc-comment () - (test-fill-paragraph + (rust-test-fill-paragraph "/** This is my summary. Blah blah blah blah blah. Dilly dally dilly dally dilly dally doo. @@ -215,7 +216,7 @@ This is some more text. Fee fie fo fum. Humpty dumpty sat on a wall. */" 4 90)) (ert-deftest fill-paragraph-with-no-space-after-star-prefix () - (test-fill-paragraph + (rust-test-fill-paragraph "/** *This is a very very very very very very very long string */" @@ -225,7 +226,7 @@ This is some more text. Fee fie fo fum. Humpty dumpty sat on a wall. */")) (ert-deftest fill-paragraph-single-line-style-with-code-before () - (test-fill-paragraph + (rust-test-fill-paragraph "fn foo() { } /// This is my comment. This is more of my comment. This is even more." "fn foo() { } @@ -234,7 +235,7 @@ This is some more text. Fee fie fo fum. Humpty dumpty sat on a wall. /// even more." 14)) (ert-deftest fill-paragraph-single-line-style-with-code-after () - (test-fill-paragraph + (rust-test-fill-paragraph "/// This is my comment. This is more of my comment. This is even more. fn foo() { }" "/// This is my comment. This is @@ -243,7 +244,7 @@ fn foo() { }" fn foo() { }" 1 73)) (ert-deftest fill-paragraph-single-line-style-code-before-and-after () - (test-fill-paragraph + (rust-test-fill-paragraph "fn foo() { } /// This is my comment. This is more of my comment. This is even more. fn bar() { }" @@ -318,7 +319,7 @@ very very very long string deindented 1 (lambda () - (test-silence + (rust-test-silence '("%s %s" ; "Indenting..." progress-reporter-do-update "%sdone") ; "Indenting...done" progress-reporter-done (indent-region 1 (+ 1 (buffer-size))))) @@ -392,11 +393,11 @@ not_a_string(); " - (apply 'append (mapcar (lambda (s) (list s 'font-lock-string-face)) - '("r\"foo\\\"" "\"bar\"" "r\"bar\"" - "r\"foo\\.\"" "\"bar\"" "r\"bar\"" - "r\"foo\\..\"" "\"bar\"" "r\"foo\\..\\bar\"" - "r\"\\\"" "\"foo\"" "r\"\\foo\""))) + (apply #'append (mapcar (lambda (s) (list s 'font-lock-string-face)) + '("r\"foo\\\"" "\"bar\"" "r\"bar\"" + "r\"foo\\.\"" "\"bar\"" "r\"bar\"" + "r\"foo\\..\"" "\"bar\"" "r\"foo\\..\\bar\"" + "r\"\\\"" "\"foo\"" "r\"\\foo\""))) )) (ert-deftest font-lock-raw-string-after-normal-string-ending-in-r () @@ -3305,7 +3306,7 @@ type Foo<T> where T: Copy = Box<T>; (ert-deftest redo-syntax-after-change-far-from-point () (let* ((tmp-file-name (make-temp-file "rust-mdoe-test-issue104")) - (base-contents (apply 'concat (append '("fn foo() {\n\n}\n") (make-list 500 "// More stuff...\n") '("fn bar() {\n\n}\n"))))) + (base-contents (apply #'concat (append '("fn foo() {\n\n}\n") (make-list 500 "// More stuff...\n") '("fn bar() {\n\n}\n"))))) ;; Create the temp file... (with-temp-file tmp-file-name (insert base-contents)) @@ -3480,12 +3481,11 @@ impl Two<'a> { #'rust-dbg-wrap-or-unwrap "let x = dbg!(\"foo, bar\")")) -(when (executable-find rust-cargo-bin) - (ert-deftest rust-test-project-located () - (let* ((test-dir (expand-file-name "test-project/" default-directory)) - (manifest-file (expand-file-name "Cargo.toml" test-dir))) - (let ((default-directory test-dir)) - (should (equal (expand-file-name (rust-buffer-project)) manifest-file)))))) +(ert-deftest rust-test-project-located () + (let* ((test-dir (expand-file-name "test-project/" default-directory)) + (manifest-file (expand-file-name "Cargo.toml" test-dir))) + (let ((default-directory test-dir)) + (should (equal (expand-file-name (rust-buffer-project)) manifest-file))))) (defun rust-collect-matches (spec) (let ((matches nil)) @@ -3631,5 +3631,6 @@ impl Two<'a> { `(should (or (string-match "Prefix Command" ,match) - (string-match "^C-c C" ,match))))) + (string-match "^C-c C" ,match))) + t)) (should (< 0 match-count))))) diff --git a/rust-mode.el b/rust-mode.el index dda7994..997f2b1 100644 --- a/rust-mode.el +++ b/rust-mode.el @@ -236,15 +236,15 @@ See `prettify-symbols-compose-predicate'." (defvar rust-mode-map (let ((map (make-sparse-keymap))) - (define-key map (kbd "C-c C-d") 'rust-dbg-wrap-or-unwrap) + (define-key map (kbd "C-c C-d") #'rust-dbg-wrap-or-unwrap) (when rust-load-optional-libraries - (define-key map (kbd "C-c C-c C-u") 'rust-compile) - (define-key map (kbd "C-c C-c C-k") 'rust-check) - (define-key map (kbd "C-c C-c C-t") 'rust-test) - (define-key map (kbd "C-c C-c C-r") 'rust-run) - (define-key map (kbd "C-c C-c C-l") 'rust-run-clippy) - (define-key map (kbd "C-c C-f") 'rust-format-buffer) - (define-key map (kbd "C-c C-n") 'rust-goto-format-problem)) + (define-key map (kbd "C-c C-c C-u") #'rust-compile) + (define-key map (kbd "C-c C-c C-k") #'rust-check) + (define-key map (kbd "C-c C-c C-t") #'rust-test) + (define-key map (kbd "C-c C-c C-r") #'rust-run) + (define-key map (kbd "C-c C-c C-l") #'rust-run-clippy) + (define-key map (kbd "C-c C-f") #'rust-format-buffer) + (define-key map (kbd "C-c C-n") #'rust-goto-format-problem)) map) "Keymap for Rust major mode.") @@ -286,21 +286,22 @@ See `prettify-symbols-compose-predicate'." comment-start-skip "\\|\\*/?[[:space:]]*\\|\\)$")) (setq-local paragraph-separate paragraph-start) - (setq-local normal-auto-fill-function 'rust-do-auto-fill) - (setq-local fill-paragraph-function 'rust-fill-paragraph) - (setq-local fill-forward-paragraph-function 'rust-fill-forward-paragraph) - (setq-local adaptive-fill-function 'rust-find-fill-prefix) + (setq-local normal-auto-fill-function #'rust-do-auto-fill) + (setq-local fill-paragraph-function #'rust-fill-paragraph) + (setq-local fill-forward-paragraph-function #'rust-fill-forward-paragraph) + (setq-local adaptive-fill-function #'rust-find-fill-prefix) (setq-local adaptive-fill-first-line-regexp "") (setq-local comment-multi-line t) - (setq-local comment-line-break-function 'rust-comment-indent-new-line) + (setq-local comment-line-break-function #'rust-comment-indent-new-line) (setq-local imenu-generic-expression rust-imenu-generic-expression) (setq-local imenu-syntax-alist '((?! . "w"))) ; For macro_rules! - (setq-local beginning-of-defun-function 'rust-beginning-of-defun) - (setq-local end-of-defun-function 'rust-end-of-defun) + (setq-local beginning-of-defun-function #'rust-beginning-of-defun) + (setq-local end-of-defun-function #'rust-end-of-defun) (setq-local parse-sexp-lookup-properties t) (setq-local electric-pair-inhibit-predicate - 'rust-electric-pair-inhibit-predicate-wrap) - (setq-local electric-pair-skip-self 'rust-electric-pair-skip-self-wrap) + #'rust-electric-pair-inhibit-predicate-wrap) + (add-function :before-until (local 'electric-pair-skip-self) + #'rust-electric-pair-skip-self) ;; Configure prettify (setq prettify-symbols-alist rust-prettify-symbols-alist) (setq prettify-symbols-compose-predicate #'rust--prettify-symbols-compose-p) @@ -1317,13 +1318,10 @@ This wraps the default defined by `electric-pair-inhibit-predicate'." (rust-is-lt-char-operator))) (funcall (default-value 'electric-pair-inhibit-predicate) char))) -(defun rust-electric-pair-skip-self-wrap (char) +(defun rust-electric-pair-skip-self (char) "Skip CHAR instead of inserting a second closing character. -This wraps the default defined by `electric-pair-skip-self'." - (or - (= ?> char) - (let ((skip-self (default-value 'electric-pair-skip-self))) - (and skip-self (funcall skip-self char))))) +This is added to the default skips defined by `electric-pair-skip-self'." + (= ?> char)) (defun rust-ordinary-lt-gt-p () "Test whether the `<' or `>' at point is an ordinary operator of some kind. @@ -1543,10 +1541,10 @@ This handles multi-line comments with a * prefix on each line." (lambda () (let ((fill-paragraph-function - (if (not (eq fill-paragraph-function 'rust-fill-paragraph)) + (if (not (eq fill-paragraph-function #'rust-fill-paragraph)) fill-paragraph-function)) (fill-paragraph-handle-comment t)) - (apply 'fill-paragraph args) + (apply #'fill-paragraph args) t)))))) (defun rust-do-auto-fill (&rest args) @@ -1554,7 +1552,7 @@ This handles multi-line comments with a * prefix on each line." This handles multi-line comments with a * prefix on each line." (rust-with-comment-fill-prefix (lambda () - (apply 'do-auto-fill args) + (apply #'do-auto-fill args) t))) (defun rust-fill-forward-paragraph (arg) diff --git a/rust-rustfmt.el b/rust-rustfmt.el index 025ec32..bb88647 100644 --- a/rust-rustfmt.el +++ b/rust-rustfmt.el @@ -47,7 +47,7 @@ (erase-buffer) (insert-buffer-substring buf) (let* ((tmpf (make-temp-file "rustfmt")) - (ret (apply 'call-process-region + (ret (apply #'call-process-region (point-min) (point-max) rust-rustfmt-bin @@ -152,7 +152,7 @@ rustfmt complain in the echo area." (defconst rust--format-word "\ \\b\\(else\\|enum\\|fn\\|for\\|if\\|let\\|loop\\|\ match\\|struct\\|union\\|unsafe\\|while\\)\\b") -(defconst rust--format-line "\\([\n]\\)") +(defconst rust--format-line "\\(\n\\)") ;; Counts number of matches of regex beginning up to max-beginning, ;; leaving the point at the beginning of the last match. @@ -239,7 +239,7 @@ match\\|struct\\|union\\|unsafe\\|while\\)\\b") Return the created process." (interactive) (unless (executable-find rust-rustfmt-bin) - (error "Could not locate executable \%s\"" rust-rustfmt-bin)) + (error "Could not locate executable %S" rust-rustfmt-bin)) (let* ((buffer (with-current-buffer (get-buffer-create "*rustfmt-diff*") @@ -247,14 +247,14 @@ Return the created process." (erase-buffer)) (current-buffer))) (proc - (apply 'start-process + (apply #'start-process "rustfmt-diff" buffer rust-rustfmt-bin "--check" (cons (buffer-file-name) rust-rustfmt-switches)))) - (set-process-sentinel proc 'rust-format-diff-buffer-sentinel) + (set-process-sentinel proc #'rust-format-diff-buffer-sentinel) proc)) (defun rust-format-diff-buffer-sentinel (process _e) |
