2013-12-26 3 views
0

Я попробовал решение here, которое не сработало для меня. Даже просто отключить режим декодирования не удалось. Итак, теперь мне интересно, что это за строки над моим текстом, и как я могу их отключить. Может быть, это даже не семантично? Я не совсем уверен, что ...Семантические линии Emacs

Вот мой dotfile:

(add-to-list 'load-path "~/.emacs.d/") 

(setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/") 
         ("marmalade" . "http://marmalade-repo.org/packages/") 
         ("melpa" . "http://melpa.milkbox.net/packages/"))) 
(package-initialize) 

;; auto-complete stuff 
;;(require 'auto-complete) 
(require 'auto-complete-config) 
(ac-config-default) 
(auto-complete-mode 1) 

(semantic-mode 1) 
(global-ede-mode 1) 
(require 'semantic/ia) 

;; Semantic 
(global-semantic-idle-completions-mode t) 
(global-semantic-decoration-mode t) 
(global-semantic-highlight-func-mode t) 
(global-semantic-show-unmatched-syntax-mode t) 


(add-hook 'c-mode-common-hook '(lambda() 

     ;; ac-omni-completion-sources is made buffer local so 
     ;; you need to add it to a mode hook to activate on 
     ;; whatever buffer you want to use it with. This 
     ;; example uses C mode (as you probably surmised). 

     ;; auto-complete.el expects ac-omni-completion-sources to be 
     ;; a list of cons cells where each cell's car is a regex 
     ;; that describes the syntactical bits you want AutoComplete 
     ;; to be aware of. The cdr of each cell is the source that will 
     ;; supply the completion data. The following tells autocomplete 
     ;; to begin completion when you type in a . or a -> 

     (add-to-list 'ac-omni-completion-sources 
        (cons "\\." '(ac-source-semantic))) 
     (add-to-list 'ac-omni-completion-sources 
        (cons "->" '(ac-source-semantic))) 

     ;; ac-sources was also made buffer local in new versions of 
     ;; autocomplete. In my case, I want AutoComplete to use 
     ;; semantic and yasnippet (order matters, if reversed snippets 
     ;; will appear before semantic tag completions). 

      (setq ac-sources '(ac-source-semantic ac-source-yasnippet)) 
)) 
(require 'semantic/scope) 
(require 'xcscope) 
(require 'semantic/symref) 
;(semanticdb-enable-cscope-databases) ;;This is causing problems 

;;C mode 
;(require 'cc-mode) 

;; ;;Color theme 
;; (require 'color-theme) 
;; (setq color-theme-is-global t) 
;; (add-to-list 'load-path "/home/bob/.emacs.d/theme/ample-theme/ample-theme.el") 
;; ;;(require 'ample-theme) 
;; (eval-after-load "color-theme" 
;; '(progn 
;;  (color-theme-initialize) 
;;  (color-theme-jsc-dark))) 

;;set font 
(set-face-attribute 'default nil :family "Anonymous Pro" :height 140) 

;;line numbers 
(global-linum-mode 1) 
(custom-set-variables '(linum-format (quote "%4d "))) 

;;treat .h files at C++ 
(add-to-list 'auto-mode-alist '("\\.h\\'" . c++-mode)) 

;; use F5 as compile 
(global-set-key [(f5)] 'compile) 

;; make compilation window smaller 
(setq compilation-window-height 8) 

enter image description here

+0

Это происходит только в режиме С ++? –

+0

@JustinWood Я просто попробовал его в java-режиме, и это происходит, когда я вызываю метод класса. http://imgur.com/01yeCl7 – foboi1122

+1

@ tobol1122 Попытайтесь деактивировать функции 'global-semantic -...' по одному. Мое первое предположение заключалось в том, чтобы прокомментировать '(global-semantic-show-unmatched-syntax-mode t)', даже если синтаксис выглядит правильно. Похоже, что синтаксический анализатор выпадает из синхронизации, и восстановление ошибок не работает. Но это просто догадка. Возможно, я ошибаюсь. – Tobias

ответ

0

Я был в состоянии решить мою проблему путем отключения одного из накладок. Я просмотрел свойства одной из строк с подчеркиванием, используя C-u C-x =, и отключил один из контрольных оверлей синтаксиса. Я не совсем уверен, почему наложение синтаксиса подчеркивало все, особенно с момента моего компиляции кода.

+1

Было бы неплохо, если бы вы могли дать код для отключения наложения в вашем ответе. Это также поможет оценить серьезность проблемы. – Tobias

+0

Извините, я снова пытался найти код, но я не мог вспомнить его, потому что вчера выяснил это с помощью хороших людей из emacs IRC. Я попытаюсь обновить этот ответ снова, как только выясню, что я сделал. – foboi1122

0

По крайней мере, при работе с кодом C++ 11/14 «semantic-show-unmatched-syntax-mode» показывает слишком много ложных срабатываний.

Кроме того, он иногда переходит в состояние багги, где предупреждения по-прежнему отображаются после исправления ошибки синтаксиса. Это может помочь отключить и изменить второстепенный режим (M-xsemantic-show-unmatched-syntax-mode).

Чтобы отключить проверку синтаксиса глобально, изменить ваш ~/.emacs:

(global-semantic-show-unmatched-syntax-mode 0) 

;;; if you need it, you can use a shortcut to enable/disable it again, e.g.: 
(global-set-key [f12] 'semantic-show-unmatched-syntax-mode) 
Смежные вопросы