V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  SwingCoder  ›  全部回复第 25 页 / 共 27 页
回复总数  535
1 ... 17  18  19  20  21  22  23  24  25  26 ... 27  
@TheKiteRunner 好主意!我就知道您一定会提出这个:)

这个事已经在 memo list 中了,我再往前拉它一把,很快就会轮到它:)
@TheKiteRunner 先生在 50 楼所提出的建议中,能解决的全部解决了。有些实现可能还不够完美,有些也可能有 bug ,欢迎各位同行和老师审阅、调试并纠错:)

50 楼的建议中,有两个不是无法实现或不想实现,而是不能实现、不敢实现:)这两个问题是: WDTP 的文本编辑器中,将一段文本或部分文本隐藏、缩略,以及编辑器中实现文字外观、样式的不统一或单独设置。如果按这个思路, WDTP 就又跳到 WYSIWYG 这个烂坑里了,整个 WDTP 的设计、架构、开发与维护,完告失败,动机和目的也变得可疑与不纯粹了…… Markdown 的发明人要是知道,肯定会骂我:)

还有技术方面的原因,要将目前的纯文本编辑器改成基本可用的 WYSIWYG 编辑器,如果不使用其他基于 GPL 或 MIT 的跨平台开源库,整个底层得全部改写,代码量将百倍以上。压缩后的二进制发布文件也将超过经典的 1.44M …… WYSIWYG 这一块,可能全球最顶尖的开源者凑到一块,也未必能干过微软搞 Word 的那帮人……

这事目前不敢想……:)先搁置,好不好?:)

再次感谢!
补:彻底无干扰的安静模式,在 macOS 下可以很方便地做到,有一点小技巧,算是 WDTP 隐含的一个小 cake 吧:)

启动软件后,最大化,在系统新开的独立桌面上跑,而后 cmd + D 或点击顶部工具栏的“双向箭头”图标……:)
@TheKiteRunner 先生,我没有用过 sublimetext 这个软件,不清楚它的设置机制和操作模式。如果是编辑器配置方面的,我又考虑了一下,采用 VS 那种机制,或者窗口套窗口那种做法,让用户玩软件,而不是享受工具的便利,不行。主要是理念、技术和实现方式都太老了。比较先进和理想的做法还是机器学习与策略选择,我打算慢慢给 WDTP 加入一些这方面的东西。已经开始了:)

可以分别调整文件树、编辑 /预览区、设置区这三块的宽度,每个之间都是用 layoutBar 隔开的。触摸的话可能有点不方便(过段时间可能调整一下),鼠标容易调整。预览区的“页宽”,是 css 控制的,可以自行修改。欢迎各位朋友制作并分享模板:)做好后,直接导出即可(系统菜单-导出当前模板集)。

可以加一个功能:自动熟悉并记忆用户所调整的窗口大小、位置、三个主要工作区的宽度,等等。稍后我琢磨一下:)

全屏后的写作模式( WDTP 中是安静模式),如果用户的计算机屏幕是宽屏横放的,体验不太好,行太长了。有一篇较新的 GUI 设计和人机工程方面的论文给出过一个理论,大致是:计算机写作 /阅读,比较合适且科学的做法(大屏横放为例):屏幕一半的 70~80%区域,竖直页面, 4:3 或 5:3 比例。页面位于计算机桌面上,最喜爱的静态桌面背景,无其他窗口或元素干扰。职业作家或技术作家,或者需要不时查阅资料,或者有需要再开一个文档做笔记、备注的用户,可另开一个大小基本一致的程序窗口。二者并列。任何时候,不要同时看到或操作 3 个以上的窗口。

WDTP 允许多个实例同时运行,也就是:同时打开两个项目进行编辑处理。分别进入安静模式,左右并列(横屏的前提下)。

您说的“文章目录功能”指的是什么?能否具体告知?

谢谢!
@hezhile 谢谢反馈情况。祝您使用愉快:)
•实现:智能粘贴(使用快捷键 Ctrl + V 时)。详情:

◦如果系统剪贴板中的数据是项目内部链接(文件树-右键菜单-Get Path 所获取的),则插入该文档或目录 Markdown 格式的内部链接
◦如果系统剪贴板中的数据是一个合法的 http/https 网址,则插入此网址 Markdown 格式的链接。此时,如果未选择任何文本,则给出“ Click here (点此访问)”的链接文字,并自动选择之,以便用户输入改写。如果插入网址前选择了文本,则所选文本成为链接文字。
◦如果系统剪贴板中的数据是网络图片的地址,则插入显示此图片的 Markdown 格式(此图片不拉回本地)。
◦以上粘贴,仅适用于快捷键 Ctrl + V 。如使用右键菜单中的“ Paste ”菜单命令,则不做任何处理(某些时候需要“原始粘贴”)。
补充:回车键的行为,不仅作用于段尾,也适用于断行操作。回车断行后,插字符后面的内容成为下一段,该段自动继承上一段的列表级别。不仅如此,再次回车,可将该段降级(如果是一级列表的话)。再次回车(或先前已是二级列表,此时就无需第三次回车了),则使其成为正常段落。
• 实现:编辑模式下回车键的多功能。如果当前段落是一级或二级列表,按下回车键之后,插字符开启下一段,该段落自动成为与上一段平级的列表。此时如果不输入任何内容,再次按下回车键,则该段落自动成为二级列表(如果上一段是一级列表的话)。如还是不输入任何内容,第三次按下回车键,则清除本段的列表标记,插字符自动开启并进入下一段。更详细的解释:

◦ 某一段是一级列表,如果下一段也是一级列表,直接回车。
◦ 某一段是一级列表,如果要在它下面增加二级列表,本段输入完成后,连续两次回车。
◦ 某一段是二级列表,如果下一段也是二级列表,直接回车。
◦ 某一段是二级列表,如果取消列表输入,开启正常段落,不输入任何内容,直接回车。
改进:上一段是一级列表时,下一段按 TAB 键之后,是否自动给出同类型二级列表的判断标准由行改为段
• 实现:编辑模式,按下 tab 键后缩进所有已选择的文本(四个空格,以段落为单位集体缩进)。如果此时未选择任何文本,并且上一行是一级列表,则按下 tab 键之后,自动给出同类型二级列表的 Markdown 标记(注意,以上一行为判断依据,而非上一段)。

• 实现:编辑模式,按下 Shift+tab 后,如果未选择任何文本并且当前行有缩进(无论是否 4 个空格),均取消当前行的缩进(注意:此时以插字符所在行为判断依据,而非本段)。按下 Shift + tab 后,如果当前有所选文本,则取消所有已选择文本的缩进(无论是否 4 个空格)。此时,以段落为单位集体“反缩进”。以上情况,如缩进大于 4 个空格,则最多反缩进 4 个空格(正常写作而非展示代码的情况下, 5 个空格以上的缩进应该极罕见,在 Markdown 中也没什么意义)。

• 注:当前有所选内容并且按下 tab 或 Shift +tab 后,完成上述功能的同时,取消选择任何文本。
• 实现: Markdown 标记输入时的自动包裹功能。详解:
◦ 如果当前选择了文本,则输入*,`,~等 Markdown 标记之后,该标记成对出现并自动包裹所选文本。
◦ 输入一个~即可实现双~包裹
◦ 输入`和~之后,插字符光标自动位于结束标记之后,便于用户继续输入
◦ 第一次输入*之后,自动选择原有文本,等待用户输入第二个*。第二个*输入之后,插字符光标自动位于结束标记之后,便于用户继续输入
@TheKiteRunner 先生, Ctrl + C ,无论是复制所选内容,还是不选任何文本状态下复制当前整个段落,我这里测试都正常,无法重现您说的问题。能详细告知该问题出现的“上下文”或“背景情况”吗?或者您再试试看?

预览模式下,如果预览区获取或霸占了键盘焦点, Ctrl + S 快捷键切换模式失效的问题,上面做了回复,不再赘言:)
- 改进:确保 Windows 平台下本程序启动后显示在桌面上并位于最前(强占焦点)。
@hezhile 朋友,刚才我逐行调试并仔细测试了 UI color 设置及恢复默认这两处,也委托两三位朋友做了黑盒测试,均正常,无法重现您的问题。

您能详细告知该问题出现的“上下文”或“背景情况”吗?或者您再试试看?
关于 TheKiteRunner 先生提出的编辑器的智能判断和“人性化”等方面的建议,我刚才考虑了一下。还有一个比较“传统”的思路是使用“配置机制”,类似微软 VS 的做法,可以设置、编辑、导入和导出自定义的配置和操作习惯——因为各个平台下的用户习惯都不一样,有些熟悉了某些编辑工具的用户,也会有比较本能的思维定式和操作习惯。采用某种固定的配置,强制意味太浓,也可能会让一大批用户感到困惑或感觉功能冗余。

使用“配置机制”最大的问题是又回到了主程序不断弹出对话框或小窗口这个烂泥潭中,窗口套窗口,使用体验很差。而且会让一款主打简洁的开源软件变得很“商业”,这一点与 Markdown 的核心原则也是冲突的,会让整个程序显得风格不统一,设计思想混乱。

另一个比较常规的做法就是用户根据已有代码,自行 HACK 或写出适合自己的配置模式。这一点也是开源软件最鼓励的。

比较先进的做法,目前来说是采用基于某些相对成熟的 AI 算法中的“机器学习、策略选择”。也就是:让软件学习并适应用户的习惯,而后在不同的场景和情况下,自动选择最合适的策略。这个方面,我也正在不断学习和领会,之前做的一些商业项目中也有应用,如有可能,希望尽快转化为开源项目的生产力吧:)

关于编辑器“人性化”方面的问题,有时间我再仔细考虑一下。欢迎大家讨论交流,批评指正。
V2EX 的回复,最新的在最下面,各个回复之间区别也不太明显,浏览起来有点不顺手,我还需要进一步习惯:)
大家有问题或 bug 提交,也可以到 github 上,直接针对具体的代码问题更欢迎:)

目前 WDTP 已开放 PR 提交和问题讨论:)项目地址:
https://github.com/LegendRhine/WDTP

谢谢关注!
@anyforever @arens 谢谢二位的支持和鼓励:)
@TheKiteRunner 谢谢您的宝贵意见。 Markdown 字符转义,上一个工作日补上去了,可能还有遗漏,稍后全面测试这一块的时候再完善一下吧:
https://github.com/LegendRhine/WDTP/commit/1c3f9fbbadd88df715a7612e06ee769dd6418abf

编辑器的智能判断和“人性化”方面,这个是一个很细微的琐碎活,程序的主要功能完成并稳定后,我会一点点加进去。

启动后没有位于最前,一般和操作系统的当前状态有关系,似乎 Windows 10 之前的系统,经常出现这个问题。可以强制程序最前,但是这个做法有点“太霸道”了:)稍后我跟一下代码,应该有更好的思路。主要是这个问题在我的本地机上很难重现。

Ctrl + C 复制,还没有发现过这个问题,稍后我仔细试一下。

Windows 平台下,预览模块调用的系统浏览器内核,默认使用 IE 11 。 Windows 这方面很霸道,用了它的东西后,它就会吃掉用户的键盘事件,而后自己消化了。这个目前没有很好的解决办法,一个比较 Ugly 的做法是专门针对 Windows 写一段代码……或者用户将焦点转移到程序的其他地方,或者触摸 /点击“大眼睛”,等等。
@hezhile 谢谢您的宝贵意见。稍后我仔细跟一下,解决后及时列出更新记录:)这个功能的代码:
https://github.com/LegendRhine/WDTP/blob/master/Source/TopToolBar.cpp
Line 666~685
该函数执行后,会回调本类的 paint()方法。都发生在主线程上。
另外,我个人的肤浅之见,除了格式,一份文档的最终呈现,样式这个方面更加重要。 Markdown 借助于 html ,配合强大的 css (静态)、 js (动态),基本可以做到接近完美。

样式方面,我曾考虑过为 WDTP 写一个可视化的 css 编辑器和模板制作 /修改器(或者单独执行的通用型 CSS 编辑 /生成器),采用所设即所得这个模式。由于太费时间,精力不够,就搁置了:)
1 ... 17  18  19  20  21  22  23  24  25  26 ... 27  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1357 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 13ms · UTC 17:31 · PVG 01:31 · LAX 09:31 · JFK 12:31
Developed with CodeLauncher
♥ Do have faith in what you're doing.