1
0
mirror of https://github.com/golang/go synced 2024-11-14 14:20:30 -07:00
Commit Graph

45 Commits

Author SHA1 Message Date
Dominik Honnef
c7ad7a1af4 misc/emacs: Kill gofmt error buffer if the buffer was formatted correctly already.
R=adonovan, cw, patrick.allen.higgins, bradfitz
CC=golang-dev
https://golang.org/cl/7844045
2013-03-21 20:03:27 -07:00
Dominik Honnef
24f476409c misc/emacs: Add support for godef
godef[1][2] is a third party tool for printing information about
expressions, especially the location of their definition. This can be
used to implement a "jump to definition" function. Unlike
cross-language solutions like ctags, godef does not require an index,
operates on the Go AST instead of symbols and works across packages,
including the standard library.

This patch implements two new public functions: godef-describe (C-c
C-d) and godef-jump (C-d C-j). godef-describe describes the expression
at point, printing its type, and godef-jump jumps to its definition.

[1]: https://code.google.com/p/rog-go/source/browse/exp/cmd/godef/
[2]: go get code.google.com/p/rog-go/exp/cmd/godef

R=adonovan, cw, patrick.allen.higgins, sameer
CC=golang-dev
https://golang.org/cl/7781043
2013-03-19 11:29:28 -04:00
Dominik Honnef
69eb345727 misc/emacs: Fix indentation for code following multiline function declarations
Correctly indent the body of functions that have been declared
over multiple lines. See http://play.golang.org/p/MHMwNDbFyf for
an example.

Previously, the body of the function would be indented as deep as
the continuation line of the function declaration. Now it gets
indented as deep as the func keyword.

R=adonovan, cw, patrick.allen.higgins
CC=golang-dev
https://golang.org/cl/7628043
2013-03-12 21:37:18 -07:00
Dominik Honnef
77ddbf1ff0 misc/emacs: Rewrite gofmt to use own function for applying patch instead of using diff-mode.
Instead of relying on gofmt's diff output (which is a unified
    diff), we manually invoke diff -n and produce an RCS format diff,
    which can easily be parsed in Emacs, with the go--apply-rcs-patch
    function.

    This fixes undocumented issues with the old implementation such as
    skipping over hunks of changes, and it fixes the documented issue
    of not being able to handle file names that include whitespace.

    It can also apply the patch on a buffer that has no file name
    attached at all.

    Last but not least, it greatly simplifies the gofmt function
    itself.

Fixes #4766.
Fixes #4475.

R=adonovan, cw, patrick.allen.higgins, sameer
CC=golang-dev
https://golang.org/cl/7516046
2013-03-07 13:12:37 -05:00
Dominik Honnef
cf8434fa31 misc/emacs: Add compatibility for GNU Emacs 23 and XEmacs >=21.5.32
This CL adds compatibility for GNU Emacs 23 (fixing fontification
issues) and XEmacs >=21.5.32 (fixing a lot of issues). Earlier
versions of XEmacs will not be supported because they do not
support POSIX character classes. Because of that, we also make use
of a lot of functions that were added in 21.5.32.

A known and currently unfixable issue with XEmacs is that go-mode
will not always fontify identifiers that use unicode correctly.

All changes for XEmacs are annotated in the diff.

Note: go--position-bytes is not currently used anywhere, but will
be in a future CL.

Fixes #4927.

R=golang-dev, adonovan, cw, patrick.allen.higgins, sameer
CC=golang-dev
https://golang.org/cl/7456051
2013-03-06 14:35:29 -05:00
Dominik Honnef
a969f3c247 misc/emacs: Add tab completion for godoc command, completing from known installed packages
R=golang-dev, adonovan, bradfitz, cw, patrick.allen.higgins, sameer, ugorji
CC=golang-dev
https://golang.org/cl/7373051
2013-03-04 15:31:57 -05:00
Dominik Honnef
b302d68ebc misc/emacs: Greatly improve go-mode for Emacs.
The original go-mode is plagued with odd behaviour, lack of
behaviour typical to modes in Emacs and bugs.

This change rewrites great parts of go-mode (basically only
keeping the gofmt and godoc functions).

Additionally it adds new features such as manipulating package
imports.

For more information please see
https://groups.google.com/group/golang-nuts/browse_frm/thread/3a9d6dae3369c0b5/1efe65e2f7afb190

Fixes #3618.
Fixes #4240.
Fixes #4322.
Fixes #4671.
Fixes #4726.

R=golang-dev, fullung, sameer, cw, arthur, proppy, adonovan, rsc, bradfitz
CC=golang-dev
https://golang.org/cl/7314113
2013-02-26 13:48:32 -05:00
Steven Elliot Harris
43da336b15 misc/emacs: Present "godoc" documentation buffers using view-mode.
Mimic the Emacs convention of presenting read-only files meant
for browsing using view-mode, rather than Fundamental mode
which mistakenly allows editing of the "godoc" content.
Fixes #4322.

R=golang-dev, bradfitz, sameer
CC=golang-dev
https://golang.org/cl/7231055
2013-02-20 14:42:37 -08:00
Sameer Ajmani
f14f458640 misc/emacs: update go-mode syntax table and comment handling as
suggested by pkleiweg.

Fixes #3471.

R=adonovan, pkleiweg, rsc
CC=golang-dev
https://golang.org/cl/7060056
2013-01-09 10:26:34 -05:00
Russ Cox
a93b15cad9 misc/emacs: fix go-mode hang
Fix suggested by serbaut.

Fixes #4445.

R=sameer
CC=golang-dev, serbaut
https://golang.org/cl/6842102
2012-11-27 12:21:10 -05:00
Jean-Marc Eurin
11cafa3a42 misc/emacs: Fix the gofmt patching when the TMPDIR is not the default.
The previous code assumed the gofmt output referred to /tmp but
that's not true if TMPDIR points somewhere else (like on Macs).
Fixes #3782.

R=sameer
CC=golang-dev
https://golang.org/cl/6346050
2012-06-29 12:49:31 -04:00
Mats Lidell
cbcf358d29 misc/emacs: Replace replace-{string|regexp} for XEmacs compatible code
Use code to be used in lisp programs as suggested in the doc strings for
replace-{string|regexp}. Bonus: This code works for XEmacs.

R=golang-dev, sameer, jmeurin
CC=golang-dev
https://golang.org/cl/6296073
2012-06-21 13:01:54 -04:00
Jean-Marc Eurin
44a3a58e45 misc/emacs: Fix a failure when /tmp/<file>.go exists.
R=sameer
CC=golang-dev
https://golang.org/cl/6296060
2012-06-13 10:25:00 -04:00
Jean-Marc Eurin
d608b15db7 misc/emacs: Fix the automatic gofmt when creating a new file.
Patching the buffer with the output from gofmt -d only works if
the file already exists. If it doesn't, replace the content with
the output of gofmt.

R=sameer
CC=golang-dev
https://golang.org/cl/6302063
2012-06-11 13:12:28 -04:00
Ryan Barrett
062b609413 misc/emacs: make compilation-mode's next-error understand test failure output.
specifically, adds a go-test element to compilation-error-regexp-alist[-alist].
Fixes #3629.

R=golang-dev, rsc, sameer
CC=golang-dev, jba
https://golang.org/cl/6197091
2012-06-04 10:36:24 -04:00
Ryan Barrett
c9e698bdfb misc/emacs: stop go-mode from spuriously marking the buffer modified when it loads
R=golang-dev, sameer, bradfitz
CC=golang-dev, jba
https://golang.org/cl/6213056
2012-06-01 16:55:03 -04:00
Mats Lidell
b8a02560de go-mode: Works for both GNU-Emacs and XEmacs-21.5
Fixes some portability issues between the Emacsen.

R=golang-dev, sameer, bradfitz, ryanb
CC=golang-dev
https://golang.org/cl/6206043
2012-05-30 16:04:29 -04:00
Jean-Marc Eurin
7b6111a9dd misc/emacs: Use patch output of gofmt instead of replacing the buffer.
This uses the patch output of gofmt (-d option) and applies each
chunk to the buffer, instead of replacing the whole buffer.  The
main advantage is that the undo history is kept across gofmt'ings,
so it can really be used as a before-save-hook.

R=sameer, sameer
CC=golang-dev
https://golang.org/cl/6198047
2012-05-30 14:18:58 -04:00
Peter Kleiweg
2d1fa08967 Emacs go-mode: don't indent the inside of strings.
Two fixes for indentation problems:

1. Properly recognize multi-line strings. These start with `, not ".

2. Don't indent a line if the beginning of the line is the end of a multi-line string. This happened for instance when inserting a closing bracket after a multi-line string.

R=sameer
CC=golang-dev
https://golang.org/cl/6157044
2012-05-29 16:30:06 -04:00
Peter Kleiweg
28e9e15802 Emacs go-mode: fix Emacs freeze-up when copy/pasting from string or comment.
Fixes #3509.
Fixes #2767.

R=golang-dev, sameer
CC=golang-dev
https://golang.org/cl/6139066
2012-05-29 12:40:12 -04:00
Jean-Marc Eurin
9d063816ef misc/emacs: Restore the window position after a successful gofmt.
This adds restoring the window position so that the buffer doesn't jump around after the erase/copy.

R=sameer
CC=golang-dev
https://golang.org/cl/5981055
2012-05-07 11:46:01 -04:00
Sameer Ajmani
b0f4d805f2 misc/emacs: fix go-mode syntax table and whitespace handling.
- flag * and / as comment characters
- mark newline as a comment-ender
- include newline in go-mode-whitespace-p

Thanks Jonathan Amsterdam and Steve Yegge for the patch!

R=golang-dev, rsc
CC=golang-dev, jba, stevey
https://golang.org/cl/5938056
2012-04-02 12:59:37 -04:00
Ben Fried
bf9620ebbd misc/emacs: fix overindentation caused by mis-parsing lines ending with special chars
Fixes #3313

go-mode-backward-skip-comments is probably due for a more ambitious refactoring --- it repeats guard conditions after every nearly every movement of point.

R=sameer, r
CC=golang-dev
https://golang.org/cl/5844063
2012-03-26 23:26:39 -04:00
Sameer Ajmani
a55a6cb925 misc/emacs: fix extra indentation after comments that end with a period
in emacs go mode.  Thanks Alex Shinn for the patch.

R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/5728063
2012-03-05 14:58:35 -05:00
Florian Weimer
70ed0ac588 go-mode.el: fix syntax highlighting of backticks
Instead of syntax-tables, an extended go-mode-cs is used for
from a font-lock callback.

Cache invalidation must happen in a before-change-function
because font-lock runs in an after-change-function, potentially
before the cache invalidation takes place.

Performance is reasonable, even with src/pkg/html/entity.go
and test/fixedbugs/bug257.go.

Fixes #2330.

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/5529045
2012-01-09 12:58:29 -05:00
Bobby Powers
cb85e8ac27 misc/emacs: add delete builtin
R=golang-dev, mpimenov, gri
CC=golang-dev
https://golang.org/cl/5370101
2011-11-15 10:22:34 -08:00
Jan Newmarch
350a5ce64f misc/emacs/go-lang.el: Fix restoration of multiple windows in a frame after gofmt
If a frame has multiple windows then the windows must all be restored
after gofmt has finished and the old windows must be restored.
Before this fix, only the Go code edit window would be left.

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/5280050
2011-10-31 11:33:14 -04:00
Evan Martin
3ac7cae6e8 emacs: add a "godoc" command, like M-x man
This runs godoc and displays its output in a new buffer.

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/5268041
2011-10-13 09:07:42 -07:00
Russ Cox
305f167b01 misc/emacs: fix indent bug
Must use case-sensitive search to identify keywords.

Fixes #2287.

R=bradfitz
CC=golang-dev
https://golang.org/cl/5182043
2011-10-05 12:27:23 -04:00
Russ Cox
4946b420f2 misc/emacs: refine label detection
Based on idea in
http://patch-tracker.debian.org/patch/series/view/golang/1:59-1/008-emacs-mode-key-literal-indent.patch

Fixes #2174.

R=amdragon, ajmani, amdragon
CC=golang-dev
https://golang.org/cl/4922049
2011-08-24 16:47:12 -04:00
Quan Yong Zhai
fc57c4b7a9 misc/emacs: update list of builtins.
R=golang-dev, gri
CC=golang-dev
https://golang.org/cl/4630065
2011-06-24 11:19:48 -07:00
Eric Eisner
ed0c0f2c80 misc/emacs: don't select the mark after gofmt
R=ajmani
CC=golang-dev
https://golang.org/cl/4553054
2011-05-23 22:47:25 -04:00
Sameer Ajmani
cc5ac676da misc/emacs: bug fix: use UTF-8 when invoking gofmt as a subprocess.
Without this, Unicode characters are stripped out by M-x gofmt.

R=rsc, amdragon
CC=golang-dev
https://golang.org/cl/4523065
2011-05-13 11:05:03 -04:00
Sameer Ajmani
0ac151fd5c misc/emacs: gofmt: don't clobber the current buffer on failure
Change M-x gofmt to display errors in a new buffer instead of
clobbering the current buffer.

Add gofmt-before-save, which runs gofmt when in go-mode.  This
can be used with before-save-hook.  Add to your .emacs:
  (add-hook 'before-save-hook 'gofmt-before-save)

R=rsc, aclements, amdragon
CC=golang-dev
https://golang.org/cl/4276059
2011-03-24 10:35:39 -04:00
Scott Lawrence
3b9a024d29 go-mode.el: Fix highlighting for 'chan' type
Fixes #1038.

R=aclements, rsc
CC=golang-dev
https://golang.org/cl/2111046
2010-09-13 00:12:18 -04:00
Scott Lawrence
87229f54c3 misc/emacs: make _ a word symbol
Fixes #655.

R=rsc, aclements
CC=golang-dev
https://golang.org/cl/1981041
2010-08-26 13:32:50 -04:00
Kevin Ballard
ea1a36efcd Fix minor issues with updating go-mode in an empty buffer
Sometimes during editing, when the buffer is emptied (for example,
  as part of a call to M-x gofmt), an error is raised when
  remove-text-properties is called. Ensure that these calls use point-max
  instead of buffer-size to determine their end point.

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/189042
2010-01-13 13:32:19 +11:00
Austin Clements
367ae9a541 Use remove-text-properties instead of
remove-list-of-test-properties, since the latter is missing
from XEmacs.

Fixes #462.

R=rsc
CC=golang-dev
https://golang.org/cl/181152
2010-01-06 15:45:43 -08:00
Austin Clements
6712cf365b Update Emacs go-mode for new semicolon rule.
Fixes #415.

R=rsc
CC=golang-dev
https://golang.org/cl/183104
2010-01-05 16:50:36 -08:00
Austin Clements
6e6125ffa4 Make comment-start/-end changes buffer-local instead of global.
Fixes #290.

R=rsc
https://golang.org/cl/160070
2009-11-29 14:22:07 -08:00
James Aguilar
95be81da4d Correct indentation for go-mode where a close brace following a semi-
colon-less statement would be indented one stop too many.

R=rsc, aclements
CC=aclements
https://golang.org/cl/154096
2009-11-13 15:52:30 -08:00
Kevin Ballard
6c2ae1a625 Teach emacs M-x gofmt to save region/restrictions
R=agl, agl1
https://golang.org/cl/152078
2009-11-12 18:40:42 -08:00
Kevin Ballard
c57054f7b4 Implement new emacs command M-x gofmt
Define a new interactive function in go-mode.el called gofmt.
This function passes the current buffer through the external `gofmt`
tool and replaces the buffer with the result.

R=agl, rsc
https://golang.org/cl/154044
2009-11-10 20:05:24 -08:00
Kevin Ballard
022e3ae265 Fix go-mode.el to work on empty buffers
Fixes #8.

R=agl, agl1, rsc
https://golang.org/cl/153056
2009-11-10 20:04:14 -08:00
Austin Clements
5bd8c92427 go-mode for Emacs. This provides basic syntax highlighting
for keywords, built-ins, functions, and some types.  It also
provides indentation that is (almost) identical to gofmt.

R=rsc
APPROVED=rsc
DELTA=509  (509 added, 0 deleted, 0 changed)
OCL=35951
CL=35994
2009-10-22 08:54:26 -07:00