[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/go-mode 7ab928a 146/495: Add support for methods that have
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/go-mode 7ab928a 146/495: Add support for methods that have no name for the receiver |
Date: |
Sat, 7 Aug 2021 09:05:01 -0400 (EDT) |
branch: elpa/go-mode
commit 7ab928a57e4d6b8b16b27faabc848beb180e5246
Author: Dominik Honnef <dominikh@fork-bomb.org>
Commit: Dominik Honnef <dominikh@fork-bomb.org>
Add support for methods that have no name for the receiver
`func (Foo) ...` is valid Go. Our regexes didn't catch this as method
definitions and in turn broke fontification as well as navigation (and
thus also indentation) for those.
---
go-mode.el | 8 +++++++-
indentation_tests/unnamed_method_receiver.go | 8 ++++++++
2 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/go-mode.el b/go-mode.el
index 55bfa31..00300e4 100644
--- a/go-mode.el
+++ b/go-mode.el
@@ -86,7 +86,12 @@
(defconst go-label-regexp go-identifier-regexp)
(defconst go-type-regexp "[[:word:][:multibyte:]*]+")
(defconst go-func-regexp (concat (go--regexp-enclose-in-symbol "func") "\\s
*\\(" go-identifier-regexp "\\)"))
-(defconst go-func-meth-regexp (concat (go--regexp-enclose-in-symbol "func")
"\\s *\\(?:(\\s *" go-identifier-regexp "\\s +" go-type-regexp "\\s *)\\s
*\\)?\\(" go-identifier-regexp "\\)("))
+(defconst go-func-meth-regexp (concat
+ (go--regexp-enclose-in-symbol "func") "\\s
*\\(?:(\\s *"
+ "\\(" go-identifier-regexp "\\s +\\)?"
go-type-regexp
+ "\\s *)\\s *\\)?\\("
+ go-identifier-regexp
+ "\\)("))
(defconst go-builtins
'("append" "cap" "close" "complex" "copy"
"delete" "imag" "len" "make" "new"
@@ -173,6 +178,7 @@
;; TODO do we actually need this one or isn't it just a function call?
(,(concat "\\.\\s *(" go-type-name-regexp) 1 font-lock-type-face) ;; Type
conversion
(,(concat (go--regexp-enclose-in-symbol "func") "[[:space:]]+("
go-identifier-regexp "[[:space:]]+" go-type-name-regexp ")") 1
font-lock-type-face) ;; Method receiver
+ (,(concat (go--regexp-enclose-in-symbol "func") "[[:space:]]+("
go-type-name-regexp ")") 1 font-lock-type-face) ;; Method receiver without
variable name
;; Like the original go-mode this also marks compound literal
;; fields. There, it was marked as to fix, but I grew quite
;; accustomed to it, so it'll stay for now.
diff --git a/indentation_tests/unnamed_method_receiver.go
b/indentation_tests/unnamed_method_receiver.go
new file mode 100644
index 0000000..c0909ad
--- /dev/null
+++ b/indentation_tests/unnamed_method_receiver.go
@@ -0,0 +1,8 @@
+package main
+
+type A int
+
+func (A) Foo() (A,
+ A) {
+ // Code goes here
+}
- [nongnu] elpa/go-mode 6b77ff1 065/495: allow disabling fontification for function/method calls, (continued)
- [nongnu] elpa/go-mode 6b77ff1 065/495: allow disabling fontification for function/method calls, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 02d44df 067/495: add function for downloading playgrounds into emacs, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode ec6fef4 066/495: Define a customization group for go-mode, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 856eff3 105/495: Instead of relying on gofmt's -d flag, use diff -n directly. This, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode d5839a0 106/495: use kill-whole-line directly, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode e1bb58a 109/495: Update README because go-mode.el is now upstream, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode b1bb0e0 111/495: replace shell-command-on-region with call-process-region, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 9f1f94e 113/495: use own implementation of go--string-prefix-p because it has been added in Emacs 24 and people are still using Emacs 23, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 22192f7 121/495: use featurep instead of version string to check for xemacs, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 3b0efdd 132/495: docstrings, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 7ab928a 146/495: Add support for methods that have no name for the receiver,
ELPA Syncer <=
- [nongnu] elpa/go-mode 83de700 145/495: Enable compilation-mode for gofmt error buffer before displaying it, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 59f1cb5 140/495: add elisp header, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode c693232 137/495: mention flymake-go as an alternative to goflymake, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode ba95288 071/495: load diff-mode on package load, not when running gofmt, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode bfbbb7e 072/495: remove debug output, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode e0de87c 075/495: do not indent labels in column 0 but in normal indentation minus one, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 8216ff9 076/495: some nicer lisp, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 7d47e3c 079/495: remove old go-propertize-syntax code, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 58640c3 080/495: Do not consider \ an escape character when in raw strings, ELPA Syncer, 2021/08/07
- [nongnu] elpa/go-mode 0c25389 081/495: do not set syntax-propertize-function for emacsen that don't know it (GNU Emacs <24 for one), ELPA Syncer, 2021/08/07