файл в стиле Google для C ++ для Emacs - PullRequest
1 голос
/ 28 сентября 2011

Я использую файл в стиле google для emacs.Это также выглядит неплохо, чтобы начать изучать некоторые Emacs Lisp, не так долго.Как бы то ни было, я пытаюсь настроить этот файл, может быть, некоторые уже делали это раньше, для написания класса, я написал:

namespace A
{
  class A_A
  {
 public:
    A_A();
 private:
    int a;
  };
}

, однако публичные / частные ключевые слова не в нужных местах, я сделалне понимаю, почему он ставит их как это из коробки, как это можно исправить?Я не очень хорош в emacs lisp, к сожалению, пока.

РЕДАКТИРОВАТЬ: Я хотел бы что-то вроде

namespace A
{
  class A_A
  {
    public:
      A_A();
    private:
      int a;
  };
}

Ответы [ 2 ]

4 голосов
/ 29 сентября 2011

Чтобы получить отступ, который вам нравится, используйте такие методы отладки:

(setq c-echo-syntactic-information-p t)

Когда вы нажимаете TAB для отступа, вы увидите что-то вроде:

syntax: ((inclass 33) (access-label 33))

КакВы можете видеть метка доступа , идентифицирующая отступ модификаторов priv / pub.Поэтому измените на то, что вы хотите:

(defconst my-c-style
  '(
    (c-tab-always-indent . t)
    (c-offsets-alist
     . (
        (access-label . /)  ; XXXXXX LOOK HERE!!!!!!!
        ))
   )
  "My C Programming Style")

(defun my-c-mode-style-hook ()
  (c-add-style "my" my-c-style t)
  ;; If set 'c-default-style' before 'c-add-style'
  ;; "Undefined style: my" error occured from 'c-get-style-variables'.
  (setq c-default-style
        '(
          (java-mode . "my") (c-mode . "my") (csharp-mode . "my") (c++-mode . "my") 
          (other . "my")
          ))
  )
(add-hook 'c-mode-common-hook 'my-c-mode-style-hook)

В примере я удаляю отступ на половину уровня как inclass добавляем один полный отступ (чтобы получить 1/2 отступа. Для синтаксиса смещения читайте Ch v c-offsets-alist RET . Например:

  If OFFSET is one of the symbols `+', `-', `++', `--', `*', or `/'
  then a positive or negative multiple of `c-basic-offset' is added to
  the base indentation; 1, -1, 2, -2, 0.5, and -0.5, respectively.
2 голосов
/ 04 ноября 2015

Вероятно, в наше время хорошее решение дает файл конфигурации, предоставленный Google в Github.
В репозитории styleguide есть файл конфигурации google-c-style.el что, как описано в файле,

;; Provides the google C/C++ coding style. You may wish to add
;; `google-set-c-style' to your `c-mode-common-hook' after requiring this
;; file. For example:
;;
;;    (add-hook 'c-mode-common-hook 'google-set-c-style)
;;
;; If you want the RETURN key to go to the next line and space over
;; to the right place, add this to your .emacs right after the load-file:
;;
;;    (add-hook 'c-mode-common-hook 'google-make-newline-indent)

Файл также распространяется через систему пакетов MELT как google-c-style.el .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...