Commit Graph

20 Commits

Author SHA1 Message Date
kunhtkun
5f632bef38
[editors/emacs] Fix protobuf-mode definition (#9572)
Fix a few issues with the Emacs mode definition.

First, in 1ab7789f3 (2021-10-13, Emacs: Protobuf mode should be derived from
prog-mode) we made `protobuf-mode' a derived mode of `prog-mode' using the
`define-derived-mode' macro[1]. However, the definition body was not updated
accordingly. So in this commit, we:

- Remove the superfluous `(interactive)' form;
- Remove the unnecessary call of `kill-all-local-variables', which is already
  handled by `define-derived-mode' and could cause a few issues, for example,
  it prevents `prog-mode-hook' from being run;
- Remove forms that set `major-mode' and `mode-name', which are automatically
  set to the first and third arguments respectively;
- Remove forms that set key map, syntax table, and abbrev table, which are
  already handled automatically;
- Do not run `protobuf-mode-hook' explicitly in the body. It is already arranged
  to be run after the body.

Second, the call to `c-make-emacs-variables-local' is removed. It is called
inside `c-init-language-vars' already. Calling it again should do no harm now,
but to be future-proof it might be better to just remove it.

Finally, we move the `c-update-modeline' form to the :after-hook argument to
ensure it is run at the very end, so that the mode line will reflect all user
customizations done in various mode hooks. Similarly, we run
`c-mode-common-hook' also at the very end to leave a place for user
customizations (for example, set `imenu-generic-expression' in
`c-mode-common-hook').

[1] https://www.gnu.org/software/emacs/manual/html_node/elisp/Derived-Modes.html

Re: https://github.com/protocolbuffers/protobuf/issues/7316
Re: https://github.com/protocolbuffers/protobuf/pull/9076
2022-03-03 09:16:46 -08:00
Hong Xu
1ab7789f38
Emacs: Protobuf mode should be derived from prog-mode (#9076)
Prog mode is a basic major mode for buffers containing programming
language source code:
https://www.gnu.org/software/emacs/manual/html_node/elisp/Basic-Major-Modes.html

A lot of programming mode setup is based on whether the major mode is
derived from `prog-mode`.
2021-10-13 10:26:40 -07:00
Jimmy Yuen Ho Wong
ae4fd1e24b
Fix cl deprecation warning (#9046) 2021-10-09 11:54:15 -07:00
lakshayg
3cff48db79 Spell check only comments and strings in vim 2020-10-27 10:15:05 -07:00
Yue Zhu
582558a589 Add imenu index support 2020-06-19 10:42:31 -07:00
Evan Klitzke
39d730dd96 Use lexical-binding in protobuf-mode.el 2020-05-19 17:15:35 -07:00
Philipp Stephani
979107ec7a Improve fix for https://github.com/google/protobuf/issues/295
Requiring the legacy ‘cl’ library unconditionally pollutes the namespace.
Instead, require it only when compiling and in known-broken versions.

This is almost the same patch that opoplawski suggested, except that I removed
the test for ‘emacs-repository-version’, which isn’t defined in Emacs 24.3.
2017-05-23 15:27:29 +02:00
Yutian Li
ddf6d1eb75 [master] Add dependency cl. Fixes google/protobuf#295. 2016-08-05 15:13:12 +08:00
Bo Yang
5db217305f down-integrate internal changes 2015-05-21 19:32:02 -07:00
Nobuaki Sukegawa
33bb176603 Add oneof keyword to proto.vim 2014-11-27 02:57:31 +09:00
Feng Xiao
e428862450 Replace links to code.google.com/protobuf with developers.google.com/protocol-buffers 2014-10-01 16:26:23 -07:00
liujisi@google.com
d0e03932c1 Fix issue/333. skip any escaped characters in quotes. 2012-07-13 06:03:42 +00:00
liujisi@google.com
5325de1808 Support for C-style comments in editors/proto.vim -- patch from infnty. 2011-07-05 04:52:47 +00:00
kenton@google.com
d5cf7b55a6 Some sort of emacs protobuf mode fix. 2009-12-18 01:55:04 +00:00
kenton@google.com
f4c6e4b37e Fix protobuf-mode on XEmacs. 2009-09-15 17:12:06 +00:00
kenton@google.com
31afcd730b Fix problems with emacs protobuf mode, I guess. See <http://www.opensubscriber.com/message/emacs-devel@gnu.org/7155093.html>. Patch from domq@google.com. 2009-07-08 20:37:43 +00:00
kenton@google.com
2cdba5baee Add Emacs editor mode. Contributed by Alexandre Vassalotti. 2009-05-01 21:03:20 +00:00
kenton@google.com
24bf56fb3a Integrate changes from internal Google-internal branch.
General
  * License changed from Apache 2.0 to New BSD.
  * It is now possible to define custom "options", which are basically
    annotations which may be placed on definitions in a .proto file.
    For example, you might define a field option called "foo" like so:
      import "google/protobuf/descriptor.proto"
      extend google.protobuf.FieldOptions {
        optional string foo = 12345;
      }
    Then you annotate a field using the "foo" option:
      message MyMessage {
        optional int32 some_field = 1 [(foo) = "bar"]
      }
    The value of this option is then visible via the message's
    Descriptor:
      const FieldDescriptor* field =
        MyMessage::descriptor()->FindFieldByName("some_field");
      assert(field->options().GetExtension(foo) == "bar");
    This feature has been implemented and tested in C++ and Java.
    Other languages may or may not need to do extra work to support
    custom options, depending on how they construct descriptors.

  C++
  * Fixed some GCC warnings that only occur when using -pedantic.
  * Improved static initialization code, making ordering more
    predictable among other things.
  * TextFormat will no longer accept messages which contain multiple
    instances of a singular field.  Previously, the latter instance
    would overwrite the former.
  * Now works on systems that don't have hash_map.

  Python
  * Strings now use the "unicode" type rather than the "str" type.
    String fields may still be assigned ASCII "str" values; they will
    automatically be converted.
  * Adding a property to an object representing a repeated field now
    raises an exception.  For example:
      # No longer works (and never should have).
      message.some_repeated_field.foo = 1
2008-09-24 20:31:01 +00:00
temporal
8ccb79057e Apply Leandro Lucarella <llucax@gmail.com>'s patches for VIM highlighting
and not setting execute bit on protoc outputs.
2008-07-31 01:43:34 +00:00
temporal
40ee551715 Initial checkin. 2008-07-10 02:12:20 +00:00