求 tabbar 和 semantic-stickyfunc 共用的解决方案

想同时使用 tabbar 和 semantic-stickyfunc,有什么比较好解决方法吗?

semantic-stickyfunc 在什么情况下有效

能给一小段代码吗?

稍等哈,我现在用着 tabbar

比如函数比较长的情况下,

这样即使屏幕显示不全,你也能够知道当前修改的函数是哪个

上面图中黑色标题栏中是函数的名称,这样就省去回滚查看函数名的麻烦了

1 个赞
Debugger entered--Lisp error: (error "Buffer .emacs was not set up for parsing")

这个怎么解决啊

完整的出错信息贴一下吧


Debugger entered--Lisp error: (error "Buffer .emacs was not set up for parsing")
  signal(error ("Buffer .emacs was not set up for parsing"))
  error("Buffer %s was not set up for parsing" ".emacs")
  semantic-stickyfunc-mode(toggle)
  funcall-interactively(semantic-stickyfunc-mode toggle)
  call-interactively(semantic-stickyfunc-mode record nil)
  command-execute(semantic-stickyfunc-mode record)
  execute-extended-command(nil "semantic-stickyfunc-mode")
  smex-read-and-run(("semantic-mode" "set-mark-command" "shell" "latex-help" "eval-buffer" "info" "dired" "zx" "eww" "m$
  smex()
  funcall-interactively(smex)
  call-interactively(smex nil nil)
  command-execute(smex)

感觉 semantic 没有设置好,用的是 spacemacs 的 semantic layer?

不是啊

只有一句 (require 'semantic)

我查一下吧

估计不行,参考一下 spacemacs 的 semantic layer 吧

spaceemacs 太庞大了 我怕掌握不了

spacemacs 关于 semantic 的设置并不复杂,可以参考一下:

(setq semantic-packages
      '(
        (semantic :location built-in)
        srefactor
        stickyfunc-enhance
        ))

(defun semantic/init-semantic ()
  (use-package semantic
    :defer t
    :config (add-to-list 'semantic-default-submodes
                         'global-semantic-idle-summary-mode)))

(defun semantic/init-srefactor ()
  (use-package srefactor :defer t))

(defun semantic/pre-init-stickyfunc-enhance ()
  (spacemacs|use-package-add-hook semantic
    :post-init (add-to-list 'semantic-default-submodes
                            'global-semantic-stickyfunc-mode)))
(defun semantic/init-stickyfunc-enhance ()
  (use-package stickyfunc-enhance :defer t))

还有

(defun spacemacs/load-srefactor ()
  "Hook to load the `srefactor' library."
  (require 'srefactor)
  ;; currently, evil-mode overrides key mapping of srefactor menu
  ;; must expplicity enable evil-emacs-state. This is ok since
  ;; srefactor supports j,k,/ and ? commands when Evil is
  ;; available
  (add-hook 'srefactor-ui-menu-mode-hook 'evil-emacs-state))

(defun spacemacs/load-stickyfunc-enhance ()
  "Hook to load the `stickyfunc-enhance' library."
  (require 'stickyfunc-enhance))


以及

(setq srecode-map-save-file (concat spacemacs-cache-directory
                                    "srecode-map.el"))
(setq semanticdb-default-save-directory (concat spacemacs-cache-directory
                                                "semanticdb/"))
(setq semanticdb-find-default-throttle '(file local project))
(unless (file-exists-p semanticdb-default-save-directory)
  (make-directory semanticdb-default-save-directory))

cpp 文件没有这样的问题

你有cpp的代码吗??

我不知道那个mode会有什么效果。

暂时没有,我把 c++ layer disable 了,暂时不用写 c++

看到 效果了

只是提示当前的函数名?

嗯,是的,好像只有这一个功能

这个mode好像是有bug

eval

在main中 可还是显示 ghg7

我觉得他可以显示在下面 而不用非得在上面

我的描述有问题,它显示的是最上面显示不全的函数,不是当前函数

我这里的semantic总是出问题

(defun zz ()
  (interactive)
  (setq header-line-format
        '(:eval
          (list
           (semantic-stickyfunc-fetch-stickyline)
           (tabbar-line)
           ))))

在设置好tabbar 和 stickyfunc 之后 M-x zz 你试一下吧

我只成功了一次