# BIT Code
**Repository Path**: YDX-2147483647/bit-code
## Basic Information
- **Project Name**: BIT Code
- **Description**: 一个简单的 C 语言 IDE。
- **Primary Language**: C++
- **License**: Not specified
- **Default Branch**: Qt-main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2021-08-31
- **Last Updated**: 2022-10-06
## Categories & Tags
**Categories**: Uncategorized
**Tags**: 学校
## README
# BIT Code
一个简单的 C 语言 IDE。
## 介绍
### 设置(`Settings`)
`Settings`类继承自`QSettings`,添加了`setValue_if_not_exists()`和`value_with_auto_default()`方法,并自动设置 BIT Code 相关默认值。
大致设置逻辑:
- 若设置文件中有 key,直接采用。
- 若无 key,则采取`Settings`中的`default`或`default_list`。期间会检验是否合法(比如格式化程序是否真的存在),不合法时由其它模块提示用户去设置。
目前用到的设置:
- formatter(格式化)
- style (`QString`):`clang-format`的`style`参数。默认为一种基于 LLVM 的样式。
- path (`QString`):`clang-format`的路径。默认会去 VS Code 的 [C/C++ 插件](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools) 找。(`%HOMEPATH%/.vscode/extensions/ms-vscode.cpptools-1.6.0/LLVM/bin/clang-format.exe`)
- run(运行)
- compiler
- path (`QString`):从~~环境变量、~~Dev C++、MinGW 找。
- args (`QStringList`):`-g`、`-Wall`。
- debugger
- path (`QString`):同“run/compiler/path”。
- key_bind(键盘快捷方式)
- app
- exit:退出,Ctrl+Q。
- settings:设置,Ctrl+,。
- debug
- start_or_continue:开始调试或继续,F5。
- step_in:单步调试,F11。
- step_out:单步跳出,Shift+F11.
- step_over:单步跳过,F10。
- stop:停止调试,Shift+F5。
- toggle_breakpoint:切换当前行是否为断点,F9。
- edit
- copy:复制,Ctrl+C。
- cut:剪切,Ctrl+X。
- format_all:格式化整个文件,Alt+Shift+F。
- paste:粘贴,Ctrl+V。
- search:查找和替换,Ctrl+F。
- file
- new:新建,Ctrl+N。
- open:打开,Ctrl+O。
- save:保存,Ctrl+S。
- save_copy_as:另存,Ctrl+Shift+S。
- misc
- set_character_2:???,Ctrl+K。
- run
- compile:编译,Ctrl+Shift+B。
- run:运行,Ctrl+F5。
例如,如果您想更改“另存为”的键盘快捷方式为Ctrl+Alt+S,请在设置文件中`[key_bind]`这行后面加上`file\save_copy_as=Ctrl+Alt+S`,改好后整个文件类似下面这样。
```ini
[formatter]
style=llvm
[key_bind]
file\save_copy_as=Ctrl+Alt+S
[run]
compiler\path="C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30037/bin/Hostx64/x64/cl.exe"
```
## 功能
> 框是“基本要求”,点不是。
- 图形界面(看 Word 文档)
- 菜单栏
- 文件资源管理器
- 文本编辑器
- 状态栏
- 核心
- 编辑
- 基本
- [x] 插入、删除
- [x] 复制、剪切、粘贴
- 简单查找
- [x] 字符和文本块的查找、替换
- 模糊搜索
- 正则表达式
- 语义相关(这些多在图形层面有反映)
- 括号配对
- 大括号折叠
- ~~自动排版~~
- ~~关键字识别~~
- 语法动态分析
- 高级
- 行的复制等操作
- 多光标
- 文件(可以只有读类和写类,再继承拓展)
- [x] (单个文件)新建、读取、保存(及另存)。
- (项目)新建、读取、保存。
- ~~设置的读写。(`QSettings `)~~
- 历史记录(`QUndoStack`)
- 记录
- 还原
- 调试(g++)
- [x] 编译
- [x] 显示编译结果
- 错误提示
- [x] 运行
- 【调试,单步调试】
- 花里胡哨
- 正版检测
- 更新
- 每日提示
- ~~`ext_music`(见下)~~
### `Ext_Music`
声音是钢琴。
```mathematica
Export["tone" <> ToString[#] <> ".wav", Audio@SoundNote[#]] & /@ Range[0, 24]
```
曾经试图基于 Qt 6.2.0-beta3 的多媒体(multimedia)模块,需要 Qt 6.2.0。→[Qt Multimedia in Qt 6](https://www.qt.io/blog/qt-multimedia-in-qt-6)、[Qt Multimedia 6.2.0](https://doc-snapshots.qt.io/qt6-6.2/qtmultimedia-index.html)。然而总是因不明原因崩溃,且 Qt 论坛上有相关但尚无解的讨论,最终转向 PowerShell 的播放功能。
## 可能的参照物
- [Judge0 IDE](https://ide.judge0.com/)([GitHub 仓库](https://github.com/judge0/ide))。
- VS Code, VS。
- Dev C++。