sublime text自定义clang format插件格式化C++代码

2023-05-16

本文内容为在windows平台上通过 sublime text开发自定义插件实现调用clang format对C/C++代码进行格式化。需要安装LLVM,下载链接:https://github.com/llvm/llvm-project/releases

例如安装 LLVM-14.0.5-win64.exe。安装后C:\Program Files\LLVM\bin\clang-format.exe可用。

import sublime
import sublime_plugin
import subprocess

class FormatCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        # self.format1(edit)
        self.format2(edit)

    def format_file(self, file_path):
        clang_format_path = r'"C:\Program Files\LLVM\bin\clang-format.exe"'

        cfg_file = r"D:\Users\.clang-format"
        cfg_cmd = ' -style=file:' + cfg_file

        # need llvm > 14.0
        cmd_str = clang_format_path + cfg_cmd + ' -i ' + file_path
        p = subprocess.Popen(cmd_str, shell=True, stdout=subprocess.PIPE).communicate()[0]

    def format1(self, edit):
        """direct format current file"""
        file_path = self.view.window().active_view().file_name()
        self.format_file(file_path)

    def format2(self, edit):
        """save file to temp file and format"""
        whole_region = sublime.Region(0, self.view.size())
        text = self.view.substr(sublime.Region(0, self.view.size()))

        file_path = r'D:\Users\main.cpp'
        with open(file_path, "w") as f:
            f.write(text)

        self.format_file(file_path)

        with open(file_path, "r") as f:
            formatted_text = f.read()

        self.view.replace(edit, whole_region, formatted_text)

clang format创建一个format插件(by Tools > Developer > New Plugin),内容如上,保存为Sublime Text\Packages\User\format.py。

view.run_command('format'),字符串里面是插件名称

ctrl+`打开命令行,然后运行上述命令对当前文件进行格式化

创建自定义插件参考:

ref

Sublime Text 插件开发流程 - 简书

Creating Sublime Text 3 Plugins - Part 1 | CNP

https://betterprogramming.pub/how-to-create-your-own-sublime-text-plugin-2731e75f52d5

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sublime text自定义clang format插件格式化C++代码 的相关文章

  • 用于图像中文本检测的霍夫变换算法[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 霍夫变换算法是用于文本行检测和边缘检测的算法之一 霍夫变换算法可以用于检测图像中的文本吗 这道题在java中的流程或者实现应该是怎样的
  • SSIS 包损坏,错误为 0xC00CE504

    我有一个损坏的 SSIS 包 并显示错误消息 由于错误 0xC00CE504 名称以无效字符开头 第 13 行第 2 列 无法加载 XML 当加载包并且文件无法打开或无法正确加载到 XML 文档时会发生这种情况 这可能是由于向 LoadPa
  • 使用 jQuery 查找文本字符串?

    假设某个网页有一个字符串 例如我想查找 我是一个简单的字符串 我将如何使用 JQuery 来解决这个问题 jQuery 有 contains 方法 这是给您的一个片段 上面的选择器选择包含目标字符串的任何元素 Foundin 将是一个包含任
  • 如何在 C# 中读取文本文件并将数据添加到 int 数组中?

    我正在尝试读取一个文本文件 其中包含以逗号分隔的数字 当我阅读时使用File Readline 我把它拿到string 我需要将其转换为 int 数组 但它给出了错误 文本文件的内容 146429 143689 144380 141523
  • 将字符串转换为个位数并求和

    我花了几个小时尝试寻找解决方案来完成我认为很简单的任务 但我失败了 我有一个由 3 个不同字符组成的字符串 I R O 长度从 1 到 6 E g IRRROO RRORRR IIR RIRRO 每个字符代表一个数字I 1 R 2 O 3我
  • 可基于多列格式化

    我正在使用该包formattable生成格式化表格 我发现了一个不错的资源在 R 中设置表格格式 http www r bloggers com formatting table output in r 但这里的箭头格式示例仅基于特定列 我
  • 安装了 Xcode 命令行工具的 Mac OS X 中 clang-format 和 clang-format.py 位于何处?

    我很难在 Mac OS 10 8 5 上使用 Xcode 5 及其命令行工具找到 clang format 和 clang format py 我试过find name clang format py 没有运气 他们是否已经藏在某个地方了
  • Readelf 报告程序是共享库而不是可执行文件

    使用独立的 Android NDK r10e 工具链 使用 toolchain x86 clang3 6 开关构建 出现这种奇怪的行为 交叉编译的环境变量已设置在运行makefile之前 SYSROOT指向Android工具链位置 CXX等
  • 验证日期 - Bean 验证注释 - 使用特定格式

    我想验证日期格式YYYY MM DD hh mm ss Past validates for a date that is present or past But what are the formats it accepts 如果那不可能
  • 什么构成“有效”C 标识符?

    根据 Zaibis 的建议 并且与我自己的相关 answer to 宏名称的有效字符是什么 https stackoverflow com a 34315237 547214 也g 不允许的标识符中的 和其他 Unicode 字符 http
  • 如何仅将列表中每个字符串的标题大写?

    整个问题 编写一个函数 该函数将字符串列表作为参数 并返回一个包含每个大写字符串作为标题的列表 也就是说 如果输入参数是 apple pie brownies chocolate dulce de leche eclairs 你的函数应该返
  • 文件上传控件仅上传PDF

    我有一个像这样的文件控件 div class form group Html LabelFor m gt m File new class col md 2 control label div class col md 10 Html Te
  • 旋转时键盘隐藏

    我正在开发 iPad 应用程序 在其中一个视图中 我有一个子视图 它在按钮点击事件时出现和消失 子视图包含一个UITextView 默认情况下 我将其设置为第一响应者 以便在视图出现时键盘立即出现 子视图也会消失UIKeyboardWill
  • clang-tidy - 忽略第三方标头代码

    我正在为我的项目使用 CMake 并且我想向项目引入 clang tidy 检查 我用于此目的CMAKE CXX CLANG TIDY and clang tidy用于检查设置的文件 我想在 CI 中使用警告作为错误来可靠地检查提交是否引入
  • 如何在PHP中设置文本文件编码?

    如何在 PHP 中设置文本文件编码 例如 UTF 8 让我告诉你我的问题 这是我的代码 Output fwrite 具有类似的输出 但是当我创建test txt通过记事本并设置字符集UTF 8输出就是我想要的 我想在 PHP 文件中设置字符
  • 如何比较 ASCII 值

    我想将字母的 ASCII 值存储到变量中 我该怎么做 例如 r ASCII variable 82 main character character read from a file variable r ascii in this cas
  • 单选按钮文本对齐问题

    我正在 asp net 中工作 并且有单选按钮列表 我想根据需要对齐它们的文本 这是我目前拥有的 我想让它们像这样 EDIT 其次 当我单击 Ages From 单选按钮时 我会显示一个 div 如下所示 当我单击返回 All Ages 单
  • c++1y 模式下的 Clang >= 3.3 无法解析 标头

    我有一个项目可以在 g 4 8 1 和 c 11 模式下 clang gt 3 3 下正确编译和运行 然而 当我切换到实验时 std c 1y模式下 clang 3 3 但不是 g 在
  • 通过 cmake 链接 libc++ 时 libc++abi 的链接问题

    我正在尝试构建一个简单的 hello world C 使用 LLVM Clang 3 7 0 的程序 根据工具链的源代码构建libc 使用命令行 clang std c 14 stdlib libc fno exceptions hello
  • Android 简单 TextView 动画

    我有一个 TextView 我想倒计时 3 2 1 发生了事情 为了使其更有趣 我希望每个数字都以完全不透明开始 然后淡出至透明 有没有一种简单的方法可以做到这一点 尝试这样的事情 private void countDown final

随机推荐

  • MySQL基础汇总

    MySQL基础汇总 文章目录 MySQL基础汇总思维导图索引索引特点优缺点适用场合索引特点优缺点索引使用的注意事项什么情况适用索引什么情况不适用索引 数据库的索引数据结构二分查找树B树B 43 树B树和B 43 树的区别为什么使用B 43
  • Centos7.9离线安装Redis-5.0.4【2022年最新--保姆级部署教程-rpm安装包免费下载】

    1 安装gcc依赖 命令 xff1a yum span class token function install span y gcc c 43 43 注释 xff1a yum安装gcc依赖 2 下载Redis包 点击如下链接下载即可 Re
  • Centos7.5搭建本地Yum源【2022最新--保姆级部署】

    搭建本地yum镜像 1 查看一下系统版本 命令 xff1a cat etc centos release 注释 xff1a 查看系统版本 2 下载对应版本镜像 xff1a 下载OS镜像文件 xff1a CentOS 7 x86 64 Eve
  • Linux防火墙关闭方法

    Linux防火墙关闭方法 关闭防火墙 xff1a 1 查看状态 xff1a systemctl status firewalld 2 关闭 xff1a systemctl stop firewalld xff08 只执行这个 xff0c 重
  • CentOS7使用iptables开放特定端口

    CentOS7 默认使用firewalld防火墙 xff0c 如果想换回iptables防火墙 xff0c 可关闭firewalld并安装iptables 一 关闭firewall xff1a 关闭防火墙 systemctl stop fi
  • SDUT 加密术

    加密术 Time Limit 1000MS Memory limit 65536K 题目描述 加密技术是一种常用的安全保密手段 xff0c 利用加密技术可以把重要的数据变成经过加密变成乱码传送 xff0c 到达目的地后再利用解密手段还原 现
  • 【原创】Ubuntu Server 22.04 LTS 设置主机信息以及IP地址

    1 安装网络工具 xff0c 我们需要nmcli这个工具 span class token function apt get span span class token function install span y network man
  • 【PC微信探秘】把C#的DLL注入到微信中

    NET的DLL不能直接注入 xff0c 需要两步 xff1a 先把C 43 43 的DLL注入 xff0c 然后C 43 43 把 NET的DLL引入 xff1a span class token comment dllmain cpp 定
  • 「xrdp」- 使用 Windows 远程 Linux 主机 @20210130

    xrdp xrdp xff0c 是 RDP 协议的服务端实现 xff0c 基于 FreeRDP 和 rdesktop 的工作 xff0c xrdp 使用 RDP xff08 远程桌面协议 xff09 向用户呈现图形化界面 该项目提供一个功能
  • 使用 STM32CubeMx + VSCode 开发 STM32

    使用 STM32CubeMx 43 VSCode 开发 STM32 目的 1 使用 STM32CubeMX配置STM32开发板 xff0c 生成Makefile工程 2 使用 VSCode 开发并调试 环境及工具 1 STM32CubeMx
  • Rust 编程之道-类型系统

    类型系统 基本类型 一切皆表达式 xff0c 表达式皆有值 xff0c 值皆有类型 xff0c 所以一切皆类型 包括 xff1a 基本类型复合类型作用域返回值 Option xff1c T xff1e Result xff1c T xff0
  • 揭露网络电脑短视频营销号中的套路【完全】

    1 temp 骗局 这是存放缓存文件的文件夹 xff0c 位置在C Users 用户名 AppData Local Temp win 43 r输入 temp xff0c 我们点进去 xff0c 看到文件雀氏非常多 xff0c 但是再一看大小
  • 用中断实现流水灯

    include lt stm32f4xx h gt define GPIO Pin 6 0x0040 LED2 define GPIO Pin 7 0x0080 LED1 define PLL M 8 define PLL N 336 de
  • debian 无法使用apt-get解决办法

    刚装完debian xff0c 发现直接apt get是用不了的 xff0c 系统会提示你插入DVD xff0c 其实是源的配置问题 xff0c 只需要在apt的源里面修改下配置就可以了 打开apt源文件 sudo vi etc apt s
  • 蜗牛星际C单黑群晖加USB网卡做链路聚合

    黑群晖挂载USB网卡 一不小心入了群晖的坑 xff0c 然后就是不停的折腾 xff0c 入手一个蜗牛星际C单 xff0c 装好DS918 43 后 xff0c 家里有ASUS RT AC5300 xff0c 就想着搞个链路聚合 首先当然是去
  • CentOS 7 安装zoneminder

    这里写自定义目录标题 CentOS 7 安装zoneminder1 安装centos系统 xff0c 最小化安装2 配置源3 安装 zoneminder 以及环境4 关闭SELinux5 配置时区6 添加php网页支持7 安装配置数据库8
  • linux deploy linux 安装mariadb 无法启动解决办法

    这里写自定义目录标题 linux deploy linux 安装mariadb 无法启动解决办法 linux deploy linux 安装mariadb 无法启动解决办法 手头一个旧手机 xff0c 就想来折腾一番 xff0c 装到数据库
  • linux deploy 安装debian11 armhf中安装Zoneminder

    linux deploy 安装debian11 stable armhf 中安装Zoneminder 折腾了无数遍 xff0c 然后感觉也没啥用 安装linux deploy 手机获取root权限 安装debian xff08 armhf
  • OpenWRT 中创建docker Openwrt和其他宿主机中的docker容器通信

    这里写自定义目录标题 OpenWRT 中使用创建docker Openwrt和其他宿主机中的docker容器通信网络拓扑一 准备1 openwrt镜像 xff0c 2 安装pve 二 PVE配置1 网络配置2 创建docker networ
  • sublime text自定义clang format插件格式化C++代码

    本文内容为在windows平台上通过 sublime text开发自定义插件实现调用clang format对C C 43 43 代码进行格式化 需要安装LLVM xff0c 下载链接 xff1a https github com llvm