新版C+++ 1.1.0发布

今天是4/23,距离C+++3/23开始开发正好有1个月,发布1.1.0(204110)版本。

本次详细更新内容:

  • 更改App图标
  • 支持保存所选设置
  • 新增“编译设置”,支持选择编译器(这意味着您如果装了Xcode以外的编译器,可以用您所安装的编译器而不是Xcode的g++)等
  • 新增多种代码高亮主题、编程字体
  • 简化编译界面,仅有一个按钮和一个文本框
  • 在右边栏显示文件操作,比如“打开”“保存”“另存为“等
  • 在代码编辑区底部新增状态栏,显示当前有多少行代码、多少个字符
  • 在代码编辑区左边可以显示当前行数
  • 去除“帮助”模块(因为已经不需要帮助了)
  • 去除一些多余的控件
  • 当macOS 10.14以下的用户尝试更改至暗黑模式时,显示警告
  • 当没有填写文件路径并编译时,显示警告
  • 修复每次切换到暗黑模式/浅色模式以后字体大小设置无效等近20个错误
  • ……

如何使用 (如何安装g++编译器)

如果您的Mac已经安装过Xcode,直接使用C+++即可。

如果您的Mac未安装过Xcode,请打开C+++,新建源文件并随便输入一些代码,保存,并编译。如果没有猜错,应该会弹出一个“g++命令需要使用命令行开发者工具”对话框,请点击最右边的按钮“安装”,并按照指示进行安装。过程需要大约5分钟左右。

  • 本方法在未安装Xcode的 OS X 10.9.5 Mavericks(2013) 和 macOS 10.15.4 Catalina(2020) 都测试成功。这意味着您不用安装巨大的完整的Xcode以使用C+++。如果没有弹出对话框,请打开“终端”应用,输入g++,回车,这时应该会跳出上述所说的对话框。

接下来简单介绍如何实现。

  1. 左边显示行数的实现方法

我的思考过程:

  • 啊啊啊啊好难绝对实现不了
  • 爱玛左边加个文本框不就行了吗,每次右边代码被编辑左边的文本框就改成“1换行2换行3换行……”直到右边代码的行数
  • 啊好像真可以啊
  • 哦凑如果有很多行代码的话,右边是一个Scroll View可以滑动查看然而右边滑动左边不会滑动哦凑行数就显示错乱了哦凑这怎么办
  • 哦那就右边滑动,左边也跟着滑动欧
  • 欧那就重写一个NSScrollView类喽。定义一个子类CDScrollView,重写scroll(to:)方法。当右边滑动左边跟着滑动。OK。
  • 欧那左边滑动右边也应该跟着滑动吧?欧凑这又是一个Bug欧。
  • 欧那就把左边也定义成CDScrollView,左边滑动右边跟着滑动
  • 欧这不就是死循环了吗?
  • 呕。那就定义一个私有方法superScroll(to: NSRect) {super.scroll(to: to)}这就跟原版NSScrollView就一模一样了欧。欧那么scroll(to:)就变成:
override func scroll(to point: NSRect) {
    super.scroll(to: point) //自己滑动
    (对应的ScrollView).superScroll(to: point) //对方也滑动,但不会引发自己再次滑动,陷入死循环
}
  • 欧很棒棒拿着就实现了90%了欧。
  • 修复一个小Bug,换成自定义字体欧,那就OKKKK了欧。100%实现,无Bug。

真棒棒棒棒。

刚才讲的思考过程有一部分是伪代码,现在上CDScrollView真实代码:

GutterTextView(实现左边显示行数的NSTextView子类)代码:

CDTextViewDelegate的代码太简单,不贴出来了。

2. 如何长久保存的数据?
我也是参考的苹果官方的iOS教程(搬到Mac上来了

我把这些设置的东西都塞到一个类Settings里面,这个Settings为NSObject的子类,遵循NSCoding协议。里面有encode、decode等方法,就能实现长久保存数据,就不赘述了?。

全·部·代·码·查·看·https://github.com/23786/cppp-ide
下·载·Release·版·本·https://github.com/23786/Cppp-IDE/releases/download/v1.1.0/C+++1.1.0.dmg

真棒。The End。

0 0 vote
Article Rating
Subscribe
提醒
3 评论
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
qyh

锁帖,吵得要死

Zhang, Xuheng

不得不说一句,比C++好一点。

3
0
Would love your thoughts, please comment.x
()
x