elisp片段(3)--CPP中文件与实现文件之间的切换

本文介绍如何使用elisp编写脚本来转换文件的扩展名、名称和路径,涉及函数如switch-extension、switch-file-name-extension、switch-directory和switch-file-path,以及在不同目录结构之间的文件路径切换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

刚开始学习elisp,试着写些脚本

(defun switch-extension(extension)
  (if (or (string-equal extension "h") (string-equal extension "hpp"))
      "cpp"
    "h"))
(defun switch-file-name-extension(name)
  (concat (file-name-sans-extension name) "." (switch-extension (file-name-extension name))))
(defun switch-directory (directory)
  (cond ((string-match ".+/src/$" directory)
         (replace-regexp-in-string "/src/$" "/inc/" directory))
        ((string-match ".+/inc/$" directory)
         (replace-regexp-in-string "/inc/$" "/src/" directory))
        (t directory)))
(defun switch-file-path(file-path)
  (let ((extension (file-name-extension file-path)) (switched-file-path))
    (setf switched-file-path (concat (file-name-sans-extension file-path) "." (switch-extension extension)))
    (when (not (file-exists-p switched-file-path))
      (setf switched-file-path (concat (switch-directory (file-name-directory switched-file-path)) (file-name-nondirectory switched-file-path))))
    switched-file-path))
(defun switch-head-body(file-path)
  "切换头文件和实现文件"
  (find-file (switch-file-path file-path)))
(defun switch-current-file()
  "当前文件在头/实现文件之间切换"
  (interactive)
  (switch-head-body (buffer-file-name)))


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值