天道酬勤,学无止境

indentation

Vim:用制表符缩进,用空格对齐(Vim: Indent with tabs, align with spaces)

问题 我已经阅读了几个问题和答案: Vim:使用制表符进行缩进,使用空格与 C 源文件对齐 Vim:将连续线与空格对齐 但他们都没有为我提供解决方案。 我真的很想应用“用制表符缩进,用空格对齐”的原则,但是当涉及到自动缩进时,我没有教 Vim 如何正确地做到这一点。 考虑代码,假设tabstops == 3 , shiftwidth == 3 ( >--表示制表符, . (点)表示空格): { >--long a = 1, >-->--..b = 2, >-->--..c = 3; } 因此,它尽可能地使用制表符缩进,然后用空格填充其余部分。 但这实际上是一个非常糟糕的方法:当有人用不同的标签大小阅读这段代码时,代码就会变得一团糟。 下面是标签大小等于 8 个字符时的样子: { >-------long a = 1, >------->-------..b = 2, >------->-------..c = 3; } 这太可怕了。 问题是 Vim 不区分缩进和对齐。 无论标签大小如何,为了使它看起来正确,代码应该这样缩进: { >--long a = 1, >--.....b = 2, >--.....c = 3; } 然后,无论选项卡大小如何,此代码看起来都不错。 例如,8 个字符: { >-------long a = 1, >-------.....b = 2, >----

2021-09-19 12:01:10    分类:技术分享    vim   alignment   indentation   auto-indent

支持分号插入的 Vim 中 JavaScript 的 AutoIndent(AutoIndent for JavaScript in Vim that understands Semicolon Insertion)

问题 当换行符起作用时,我不会以分号结束我的 JavaScript 语句。 请不要着火。 我的问题是,是否有适用于 vim 的自动缩进包? 这是一个多么愚蠢的例子: $(function(){ var foo // code starts here, // The following line breaks things, but adding a comment to it fixes things ({a:1}) var foo // everything is stuck left now. ({a:1}) var foo // previous line justifies all following lines wherever you put it function flat(){ var foo // function starts out right, but the next line dedents it ({a:1}) var foo } var foo // now we're over here if (foo) { var foo // this if block doesn't close properly } else if (foo){ // add a comment here to dedent the else body var foo }

2021-09-16 08:59:45    分类:技术分享    javascript   vim   indentation

是否可以使用 fparsec 解析“off-side”(基于缩进的)语言?(Is possible to parse “off-side” (indentation-based) languages with fparsec?)

问题 我希望将 FParsec 用于类似 python 的语言,基于缩进。 我知道这必须在词法分析阶段完成,但 FParsec 没有词法分析阶段。 是否可以使用 FParsec,或者,如何在词法分析后提供它? PD:我是 F# 新手,但对其他语言有经验 回答1 是的,这是可能的。 这是 FParsec 作者的一篇相关文章。 如果你想更深入地研究这个主题,这篇论文可能值得一读。 论文指出,有多个基于Parsec的缩进感知解析包,Parsec是启发FParsec的解析器组合器。 FParsec 没有单独的词法分析阶段,而是将词法分析和解析融合到一个阶段。 与解析器生成器 (fslex/fsyacc) 相比,IMO 缩进感知解析更适合使用解析器组合器 (FParsec) 完成。 原因是您需要手动跟踪当前缩进并根据上下文报告良好的错误消息。

2021-09-16 02:24:21    分类:技术分享    parsing   f#   indentation   fparsec

设置自动缩进不缩进标签(Set auto-indent not to indent labels)

问题 我在 Windows 上使用 Eclipse CDT。 我应该补充一点,总的来说,我对自动格式化功能感到高兴。 但有一件事困扰着我。 我不知道如何配置 Eclipse 以不缩进带有标签的行。 这就是我要的: void myfunc() { goto MYLABEL; MYLABEL: return; } 但我得到的是: void myfunc() { goto MYLABEL; MYLABEL: return; } 我如何配置Eclipse得到正是我想要的? 在Code Style --> Formatter ,“缩进”下没有“标签”部分。 回答1 这是eclipse中的一个错误。 我在 2009 年提交了它,但尚未修复。 C/C++ 开发工具插件似乎维护得很差,因为我有很多未解决的错误和增强请求,这些问题已经消失了多年。 https://bugs.eclipse.org/bugs/show_bug.cgi?id=268404

2021-09-13 09:50:52    分类:技术分享    eclipse   eclipse-cdt   indentation   auto-indent

如何在elisp中获得可靠的缩进(How to get reliable indentation in elisp)

问题 我是 Emacs 的新手。 我正在尝试编写一个适用于所有模式的 elisp 函数。 具体来说,我想编写一个函数来插入大括号(有点像insert-parentheses ),就像下面的键序列对只支持自动缩进的哑编辑器所做的那样: "{" <ret> "}" <up-arrow> <end> <ret> <tab> 此键序列适用于 Java 和 C# (bsd) 样式缩进。 我需要它在所有大括号 emacs 模式和纯文本文件中工作 - 我有其他没有 emacs 模式但仍然使用大括号的格式。 这是我的第 12 次尝试: (defun insert-braces-macro () (interactive) (insert "{") (newline) (indent-relative t) (insert "}") (forward-line -1) (end-of-line) (newline) (indent-relative t) (indent-relative nil)) 不幸的是,这并不完全正确。 我不认为indent-relative是正确的函数,因为它在 Java 风格中没有正确缩进: f | 扩展为: f { | } 在 C 模式下: somelongword another | 扩展为: somelongword another { | } 但是indent

2021-09-12 23:03:44    分类:技术分享    emacs   elisp   indentation   auto-indent

Sublime Text 缩进问题(Sublime Text indentation issue)

问题 我在组合 html 和 jsp 标签时遇到了缩进问题。 重现步骤: 文件 > 新建文件 (Ctrl+N) 查看 > 语法 > Java > Java 服务器页面 (JSP) 粘贴以下代码: <ul> <c:if test="${a > 0}"> <li>a</li> </c:if> </ul> 选择所有内容 (Ctrl+A) 并运行 Ctrl+Shift+P > Indentation: Reindent Lines 结果是: <ul> <c:if test="${a > 0}"> <li>a</li> </c:if> </ul> 在 Windows 7 x64 下测试运行 Build 3047。 有什么线索吗? 回答1 对于 ST2: 打开 html 包并编辑Packages/HTML/Miscellaneous.tmPreferences文件。 用下面的文本替换文本。 下面的正则表达式接受<c:if>格式的基本 jsp 标签和 JSP 注释。 这不会格式化脚本。 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist

2021-09-12 22:06:10    分类:技术分享    jsp   jstl   indentation   sublimetext   sublimetext3

ScintillaNET 中的缩进和智能缩进(Indentation and smart indent in ScintillaNET)

问题 有人可以向我描述如何在 Scintilla.net 中进行缩进吗? this.scintilla1.Indentation.SmartIndentType = ScintillaNet.SmartIndent.Simple; 我对需要做什么才能让它发挥作用感到困惑。 有人可以描述需要实现哪些事件处理程序才能使缩进工作吗? 回答1 诀窍是将Indentation.IndentWidth设置为8 ,如果Indentation.TabWidth也设置为8 。 五言的Indentation.SmartIndentType仍然必须设置为Simple 。 回答2 对于希望添加缩进的人 - 请注意 ScintillaNET 3.x+ 没有在基本代码中内置缩进。 至少,不是从 3.6.3 开始。 有关将缩进命令直接发送到 Scintilla 的示例,请参阅此消息。 有关 ScintillaNET 中一个简单缩进系统的信息,请参阅来自 jacobslusser(ScintillaNET 的维护者)的信息的消息。

2021-09-11 04:48:45    分类:技术分享    c#   .net   indentation   scintilla

inconsistent indentation with Python after split

edit in progress will re-submit sometimes later edit in progress will re-submit sometimes later edit in progress will re-submit sometimes later

2021-09-08 18:31:06    分类:问答    python   mysql   split   warnings   indentation

Automatically convert indentation from 2 to 4 spaces in Sublime Text 3

There are a few topics about auto-conversion of the indentation in Sublime Text, but I didn't find the way to do it automatically. Many files I download have indentation of 2, which I hate, so I want to convert them to 4. What I do is: Select Tab size: 2 Convert indentation to Tabs Select Tab size: 4 Convert indentation to Spaces I don't think I need to mention that it's too much work for every single file. Some people suggest Reindent option, but for my experience, it almost never works correctly. Is there some build-it way, or perhaps a package to convert indentation in one step?

2021-09-08 03:54:14    分类:问答    sublimetext3   sublimetext   indentation

Specific Indentation error in nested if statement in for loop

I have the following code and in the login feature, the output is erroneous (a logic error). It basically prints "invalid username and password" until it gets to the right one, and then prints "correct login". ERRONEOUS OUTPUT: For example, with the test data: user3 and pass3, the output is: *****LOGIN SCREEN****** Username: user3 Password: pass3 invalid username or password invalid username or password correct login >>> Here is the code in question, with reference to the LOGIN function: usernames=["user1","user2","user3"] passwords=["pass1","pass2","pass3"] def main(): mainmenu() def mainmenu

2021-09-07 06:32:15    分类:问答    python   loops   for-loop   indentation