2016-11-01 9 views
0

Это мое первое сообщение о переполнении стека, поэтому, пожалуйста, простите меня за любые ошибки.Начальный код, написанный на emacs на Xcode, выглядит плохо отступом

Я изучил C++ с Xcode и недавно начал работать с группой, использующей Emacs. Эта группа имеет огромный код в C++, поэтому я создал интерфейс CMake для создания проекта в Xcode. Случилось так, что в Xcode код выглядит плохо отступом. Например, эти строки в Emacs:

if (argc > 4) { 
    std::string argument(argv[arg_index++]); 
    // NOTE: file_name should NOT be "aboveCrack" or "belowCrack"                               
    if (argument == "aboveCrack") { 
    surf_to_draw = CrackMn3DGraphDX2::EAboveSurface; 
    } 
    else if (argument == "belowCrack") { 
    surf_to_draw = CrackMn3DGraphDX2::EBelowSurface; 
    } 
    else { 
    // argument 4 is comp. crack surface output name                                  
    got_file_name = true; 
    postCompSurface_file_name = argument; 
    } 
} 
if (!got_file_name && argc > 5) { 
    got_file_name = true; 
    postCompSurface_file_name = argv[arg_index++]; 

    if (argc > 6) { 
    // get comp. crack surface output style                                    
    postCompSurface_style = argv[arg_index++]; 
    } 
} 

Посмотрите, как это в Xcode:

if (argc > 4) { 
    std::string argument(argv[arg_index++]); 
    // NOTE: file_name should NOT be "aboveCrack" or "belowCrack" 
    if (argument == "aboveCrack") { 
surf_to_draw = CrackMn3DGraphDX2::EAboveSurface; 
    } 
    else if (argument == "belowCrack") { 
surf_to_draw = CrackMn3DGraphDX2::EBelowSurface; 
    } 
    else { 
// argument 4 is comp. crack surface output name 
got_file_name = true; 
postCompSurface_file_name = argument; 
    } 
} 
if (!got_file_name && argc > 5) { 
    got_file_name = true; 
    postCompSurface_file_name = argv[arg_index++]; 

    if (argc > 6) { 
// get comp. crack surface output style 
postCompSurface_style = argv[arg_index++]; 
    } 
} 

Что программировать с невозможным.

Я искал и, видимо, это как-то связано с вкладками в Emacs. Исходя из этого, одно исправление, которое я мог найти, - открыть каждый файл в Emacs и сделать C-x h (пометить все), за которым следует M-x untabify. Это преобразует вкладки в пробелы, и все хорошо выглядит в Xcode.

Проблемы с этой идеей состоят в том, что для ее изменения требуется поменять файлы один за другим, и это не остановит это в будущем.

Поэтому, мой вопрос: есть ли способ открыть отступы Emacs в Xcode, сохраняя отступ?

Большое спасибо!

Натан Shauer

ответ

1

Первый параметр, который нужно положить в .emacs является: (setq-default indent-tabs-mode nil). Это позволит убедиться, что emacs использует пробелы вместо вкладок для отступов. Кроме того, я создал маленькую функцию:

(defun rag/untabify-buffer() 
    ;; get rid of all the tabs in a buffer 
    (interactive) 
    (untabify (point-min) (point-max)) 
    nil) 

Добавьте к этому before-save-hook и это будет убедиться, что все файлы будут untabified когда вы делаете изменения и сохранить файл. После того, как вы отключили все файлы, вы можете удалить крючок.

1

№. Несмотря на то, что для внесения этих изменений или даже ряда других инструментов, которые могут автоматизировать такие изменения, можно использовать emacs, это не будет действительно исправлять ваши поскольку вам, вероятно, придется это делать каждый раз, когда вы проверяете код из контроля версий. В зависимости от используемой системы управления версиями также возможно, что такие изменения форматирования приведут к изменению кода, что приведет к более крупным проверкам и сделает другие полезные инструменты менее полезными, потому что больше похоже будет изменено, чем было фактически изменился. Это, скорее всего, срывает других участников проекта.

Существует два основных подхода, но один зависит от решения управления версиями, используемого проектом. Первое решение заключается в том, чтобы согласовать проект по стандарту кодирования, который указывает либо на то, что нормальные пробелы должны использоваться для отступов или что вкладки должны использоваться. Проблемы, которые вы видите, в основном связаны с микс. Emacs способен справиться с подобным смешанным форматированием достаточно хорошо, но другие редакторы, такие как Xcode, не так уж умны.

Другой подход, который может работать достаточно хорошо, потому что он не полагается на всех, следуя стандарту, - это настроить систему управления версиями для перевода вкладок как часть процесса проверки в пробелы. Как это делается, зависит от используемой системы управления версиями.

По существу, это проблема, которую необходимо решить на уровне управления проектом или версией. Все, что вы делаете, нужно будет повторять только каждый раз, когда вы делаете новое отключение от контроля версий для любых файлов, которые были изменены. Исправьте его на уровне хранилища, и проблема исчезнет.

 Смежные вопросы

  • Нет связанных вопросов^_^