Как редактировать код в Emacs для обработки вкладок и пробелов, как в Visual Studio - PullRequest
5 голосов
/ 05 февраля 2011

Я начинаю проект, в котором все используют Microsoft Visual Studio для редактирования кода.Но я пользователь Emacs.

Когда я открываю эти файлы C ++ в моем Emacs, они выглядят странно.Пример:

namespace·ns·{
»class·Foo·{
»»virtual·function_name(·some_type::const_iterator·start
»»»»»»»»····,·some_type::const_iterator·end
»»»»»»»»»,·boost::shared_ptr<some_type>·varname·)·=·0;
»};
}

, где я отображаю вкладку как » и пробел как '.', Чтобы показать различия.

Я бы хотел прозрачно просматривать и редактировать код, чтобы он выглядел прямо в моем Emacs и сохранялся, чтобы он выглядел нормально для пользователей Visual Studio.

Итак, как мне это сделать?установите Emacs так, чтобы он отображал файлы так, как они должны были быть показаны, что предположительно:

namespace ns {
  class Foo {
    virtual function_name( some_type::const_iterator start
                         , some_type::const_iterator end
                         , boost::shared_ptr<some_type> varname ) = 0;
  };
}

И я бы хотел сказать Emacs сохранить его, используя вкладки оригинальным, странным образом.

Ответы [ 2 ]

4 голосов
/ 05 февраля 2011

Настройка ширины табуляции 3 дает нам:

namespace ns {
   class Foo {
     virtual function_name( some_type::const_iterator start
                           , some_type::const_iterator end
                          , boost::shared_ptr<some_type> varname ) = 0;
   };
}

, который максимально приближен к предполагаемому форматированию, но не точен. Вы знаете, соответствует ли это тому, что показывает Visual Studio?

Вы, вероятно, захотите следующее:

(add-hook 'c++-mode-hook 'my-c++-mode-hook)
(defun my-c++-mode-hook ()
  (setq tab-width 3
        indent-tabs-mode t
        c-basic-offset 3))

Надеюсь, это хорошее начало, но обязательно должны быть и другие настройки, необходимые для соответствия принципам работы Visual Studio, поэтому я бы посоветовал вам начать чтение с Eiki Wiki:

http://www.emacswiki.org/emacs/IndentingC

0 голосов
/ 05 февраля 2011

Вы должны преобразовать все вкладки в пробелы, выбрав код и используя M-x untabify. Это в значительной степени унифицирует внешний вид кода в каждом редакторе.

...