呃…发一下你的 emacs 版本、配置文件、c+±mode 启动方式。给出的信息太少,大家也没法帮你研究呀
Emacs的版本是29.4,使用的环境是windows10,在UI版本上可以输入“,”,出问题的是用的终端tabby远程连接的ubuntu系统,在终端上使用的emacs时无法输入“,”,相关的配置:
;;;; CC-mode配置 http://cc-mode.sourceforge.net/
(require 'cc-mode)
(c-set-offset 'inline-open 0)
(c-set-offset 'friend '-)
(c-set-offset 'substatement-open 0)
;;;;我的C/C++语言编辑策略
(defun my-c-mode-common-hook()
(setq tab-width 4 indent-tabs-mode nil)
;;; hungry-delete and auto-newline
(c-toggle-auto-hungry-state 1)
;;按键定义
(define-key c-mode-base-map [(return)] 'newline-and-indent)
(define-key c-mode-base-map [(f7)] 'compile)
;; (define-key c-mode-base-map [(tab)] 'hippie-expand)
(define-key c-mode-base-map [(tab)] 'my-indent-or-complete)
;;预处理设置
(setq c-macro-shrink-window-flag t)
(setq c-macro-preprocessor "cpp")
(setq c-macro-cppflags " ")
(setq c-macro-prompt-flag t)
(setq hs-minor-mode t)
(setq abbrev-mode t)
)
(add-hook 'c-mode-common-hook 'my-c-mode-common-hook)
;;;;我的C++语言编辑策略
(defun my-c++-mode-hook()
(setq tab-width 4 indent-tabs-mode nil)
(c-set-style "stroustrup")
;; (define-key c++-mode-map [f3] 'replace-regexp)
)
(setq-default c-electric-flag nil)
;; auto close bracket insertion. New in emacs 24
;;(electric-pair-mode 1)
;; make electric-pair-mode work on more brackets
;;(setq electric-pair-pairs '(
;; (?\" . ?\") ;
;; (?\{ . ?\})
;; ) )
(provide 'init-cppmode)
你打开 toggle-debug-on-error 看看报错stack呗,一般都能找到原因
打开之后报错如下:
Debugger entered--Lisp error: (wrong-type-argument stringp nil)
looking-at(nil)
c-semi-pp-to-literal(953)
c-in-literal(726)
c-electric-semi&comma(nil)
funcall-interactively(c-electric-semi&comma nil)
call-interactively(c-electric-semi&comma nil nil)
command-execute(c-electric-semi&comma)
那可能就是c-semi-pp-to-literal这个函数的问题,你edebug-defun一下它看看为啥给looking-at传个nil参数呗