LINUX.ORG.RU
Ответ на: комментарий от theNamelessOne

Можешь сменить на Ctrl+Tab ([C-tab]).

(require 'company)
(global-set-key [C-tab] #'company-indent-or-complete-common)
(add-hook 'c-mode-common-hook #'company-mode)

Начинаю вводить «co» в .c файле и мне предлагает только «const», а почему, например, не continue???

Mindincrash
() автор топика
Ответ на: комментарий от Mindincrash

Ввожу co и нажимаю кнопки Win(Super)+TAB и ничего, никаких вариантов не предлагает...

Странненько, может super не настроен... Есть вариант, что эта комбинация перехватывается в DE. А что говорит C-h k если нажать s-tab?

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Странненько, может super не настроен... Есть вариант, что эта комбинация перехватывается в DE. А что говорит C-h k если нажать s-tab?

Вообще на клавишу Win(Super) не реагирует. Но в XFCE, например, комбинация Super+P отрывает настройки экрана. Хммм...
http://i.imgur.com/JdisPHY.png
Вот так работает, через C+TAB:

(require 'company)
(global-set-key [C-tab] #'company-indent-or-complete-common)
(add-hook 'c-mode-common-hook #'company-mode)
Но работает фигово. Когда Я ввожу в .c файле «co» и нажимаю C+TAB, то мне предлагает только «const», а где же «continue»???

Mindincrash
() автор топика
Ответ на: комментарий от theNamelessOne

Хз, у меня предлагает оба варианта.

Отчего у меня при вводе в .c файле «co» и нажатии C+Tab может предлагать только «const» и не предлагает «continue». Какие есть варианты? Содержимое init.el:

(require 'package) ;; You might already have this line
(add-to-list 'package-archives
             '("melpa" . "https://melpa.org/packages/"))
(when (< emacs-major-version 24)
  ;; For important compatibility libraries like cl-lib
  (add-to-list 'package-archives '("gnu" . "http://elpa.gnu.org/packages/")))
(package-initialize) ;; You might already have this line

(require 'company)
(global-set-key [C-tab] #'company-indent-or-complete-common)
(add-hook 'c-mode-common-hook #'company-mode)
Обратите внимание октуда у меня взят Melpa. У Вас оттуда же?
Company версия: 20160228.1705.
GNU Emacs 24.3.1

Mindincrash
() автор топика
Ответ на: комментарий от Mindincrash

а где же «continue»???

Ну, я использую auto-complete, а не company и никогда им не пользовался, кроме elpy где он изкаробки, но вангую, что тебе нужно настроить источники автокомплита. Хотя, например, AC именно для Си я никак особо не настраивал, но если написать «co», то предлагает const и continue, а в крестах ещё и cout, const_cast и constexpr.

Попробовал включить company в Си буфере - также предлагает только const. Настраивать нужно, видимо.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от Mindincrash

Запустил Emacs с твоим конфигом, в режиме C выдаёт const и continue, в режиме C++ — const, const_cast, constexpr, continue.

company: 20160228.1705.
emacs: 24.5.1.

theNamelessOne ★★★★★
()
Ответ на: комментарий от theNamelessOne

Как видите, ни у меня, ни у no-such-file co не дополняется до continue в .с файле по такому конфигу init.el:

(require 'package) ;; You might already have this line
(add-to-list 'package-archives
             '("melpa" . "https://melpa.org/packages/"))
(when (< emacs-major-version 24)
  ;; For important compatibility libraries like cl-lib
  (add-to-list 'package-archives '("gnu" . "http://elpa.gnu.org/packages/")))
(package-initialize) ;; You might already have this line

(require 'company)
(global-set-key [C-tab] #'company-indent-or-complete-common)
(add-hook 'c-mode-common-hook #'company-mode)

Mindincrash
() автор топика
Ответ на: комментарий от no-such-file

Я не соображаю, но может это как-то связано с clang и gcc? Может попробовать снести clang???

Mindincrash
() автор топика
Ответ на: комментарий от no-such-file

Снес clang и llvm и теперь const и continue видит. Лол. «Охенное» решение. Просто капец какое «решение».
theNamelessOne

Mindincrash
() автор топика
Ответ на: комментарий от theNamelessOne

Хорошо, в принципе clang мне не нужен, можно компилировать и gcc, но это странно, что когда clang установлен, то company не дополняет co до continue, а когда удалить clang, то дополняет...
Вопрос: как отступы сделать? Ну когда переходишь на следующую строку, то чтобы переходило на нужное положение, в зависимости от того в теле какой функции или цикла мы находимся.

Mindincrash
() автор топика
Ответ на: комментарий от Mindincrash

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

С-j, если хочешь чтобы при нажати на Enter так было, то

(define-key c-mode-base-map (kbd "RET") 'newline-and-indent)

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

А как обычно делают? Как более принято среди любителей Emacs? Хочу сразу привыкнуть правильному, чтобы потом не возникало проблем и не пришлось переучиваться.

Mindincrash
() автор топика
Ответ на: комментарий от Mindincrash

Как более принято среди любителей Emacs?

В c-mode есть полностью автоматическое выравнивание c-syntactic-indentation, включается c-toggle-syntactic-indentation, но оно не всем нравится, т.к. довольно «жестко» работает в соответствии с c-style. Мне норм.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

А как это включить? Не так?

(add-hook 'c-mode-common-hook #'c-toggle-syntactic-indentation)

Mindincrash
() автор топика
Ответ на: комментарий от no-such-file

если хочешь чтобы при нажати на Enter так было, то

(define-key c-mode-base-map (kbd "RET") 'newline-and-indent)

Emacs выдает:

Warning (initialization): An error occurred while loading `/home/alexander/.emacs.d/init.el':

Symbol's value as variable is void: c-mode-base-map

To ensure normal operation, you should investigate and remove the
cause of the error in your initialization file.  Start Emacs with
the `--debug-init' option to view a complete error backtrace.

Mindincrash
() автор топика
Ответ на: комментарий от no-such-file

Вот так заработало. Не знаю что такое этот require. Не знаю программирование, но работает.

(require 'cc-mode)
(define-key c-mode-base-map (kbd "RET") 'newline-and-indent)

Mindincrash
() автор топика
Ответ на: комментарий от no-such-file

Во с таким конфигом ошибок нет, но и нет автоматического выравнивания:

(require 'package) ;; You might already have this line
(add-to-list 'package-archives
             '("melpa" . "https://melpa.org/packages/"))
(when (< emacs-major-version 24)
  ;; For important compatibility libraries like cl-lib
  (add-to-list 'package-archives '("gnu" . "http://elpa.gnu.org/packages/")))
(package-initialize) ;; You might already have this line

(require 'company)
(global-set-key [C-tab] #'company-indent-or-complete-common)
(add-hook 'c-mode-common-hook #'company-mode)
(require 'cc-mode)
;;(define-key c-mode-base-map (kbd "RET") 'newline-and-indent)
(add-hook 'c-mode-common-hook #'c-toggle-syntactic-indentation)

Mindincrash
() автор топика
Ответ на: комментарий от Mindincrash

(add-hook 'c-mode-common-hook #'c-toggle-syntactic-indentation)

(add-hook 'c-mode-common-hook 
  (lambda () (setq c-syntactic-indentation t)))

Но вообще, зачем так извращаться, тем более если ты в лиспе не шаришь, есть же customize.

no-such-file ★★★★★
()
Ответ на: комментарий от anonymous

свистоперделки для долбадонов

Вот все кто говорит, что это свистопирдели и что они не нужны, то что для вас не свистопирдели? Одних возможностей чистого Emacs'a без дополнительных плагинов и настроек хватает? Удобно?

Mindincrash
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.