可以选择基于用户折叠代码段,整个问题和答案文章,并允许在问题/答案编辑器中定义一些通用的可折叠区域。

非通用的折叠信息可以是

可定义的折叠可以采用任何免费且安全的HTML标记或其他多字符技巧(<>折叠此<>)

评论

通常,我不会在功能请求上称其为赏金,但是我的问题越来越老了,我希望从中获得一些回应。由于所有答案都同等有效,因此我会将赏金授予该人,使他们能够善加利用。

我认为这对这个人是一种欺骗:meta.stackexchange.com/questions/1191/…

我认为我的主题更广泛。

我认为另外一个范围更广,因为那是一个用于隐藏问题/答案任何部分的标签。您的想法只不过是隐藏代码,我认为范围如此狭窄(是正确的词吗?)。

Quote:“允许定义一些通用的可折叠区域”

好吧,明白了……虽然看标题时还不太清楚...而且我仍然认为它们属于同一容器...

我猜一开始你不在那儿。 Rich B的编辑更改了我的原始标题:“代码,阻止,问题和答案折叠”-在历史记录中仍然可见

注意:我刚刚意识到我发布了重复的请求(仅在SO的元数据上)。仍在审查中:meta.stackoverflow.com/questions/302078/collapsible-code-markup

现在还有HTML5详细信息标签。参见meta.stackexchange.com/a/303150/289870

#1 楼

是的,我非常喜欢这个主意。我每隔一段时间就会发布一个答案,其中主要部分实际上很小,但是脚注包含很多代码包-如果可以将这些包折叠起来以使其与其余帖子成比例,那就太好了。

评论


嗯,您是否暗示用户应该能够在其区域中定义默认折叠状态? > <默认情况下未折叠> <,<>默认情况下已折叠<>?

–akarnokd
09年7月14日在19:21

是的,很有可能。

–乔恩·斯基特(Jon Skeet)
09年7月21日在9:08

这是折叠的重要原因。为什么拥有Stack Overflow的权力拒绝了这一点?

– Vaccano
2010年1月28日于4:00

有机会重新考虑这个吗?也请参阅我的问题:meta.stackexchange.com/q/157747/183189

– MarioDS
13年4月26日在18:36



GitHub为此提供了
。对于StackExchange,它可以接受以下属性:
。我认为此功能在提出问题时很有用,以发布环境的详细规格,以防万一其中存在相关因素。

– joeytwiddle
20-10-26在5:17



#2 楼

这项功能要求(已被拒绝)已使用6年了。如果可以重新考虑,我将不胜感激。已经提到了很多用例,但我什至不认为这应该集中在代码块上。由于代码块始终具有滚动条,因此您已经可以用单个代码块填充30k字符限制,而不会占用大量垂直空间。因此,系统从一开始就不鼓励输入大量代码。

但是,我认为可折叠区域对于正常的解释将更为有用。在许多情况下,有一个简单的答案将满足大多数人的需求,然后再进行深入的“如果您真的想知道细节”说明。在这种情况下,对于那些对全部解释不感兴趣的人,我不希望占用过多的屏幕空间,但是我也不想在外部链接到具体细节。

你可能会说“一个很好的答案是专为它的观众,只需选择短期或长版本适当地” - 但我不会只为OP也为以后的游客写答案,所以既要满足的情况下一定会提高答案的实用性。

我也不明白为什么有些人如此强烈地反对:可折叠区域已经成为SE上的一件事。一方面,可以隐藏堆栈片段,但更重要的是,在移动设备上将可破坏区域实现为可折叠区域。如果它们是如此糟糕,为什么首先要将它们放在一个平台上?我们难道不能只是将扰流板变成遍布各处的可塌陷区域吗? (尽管像Stack Snippets这样基于注释的语法比将>!附加到每一行更方便。)

评论


另一个用途:在语言堆栈交换站点中,某些文本可能会多次转录和/或翻译。可折叠的文本块将有助于使答案简短,因为您可以折叠文本的一个版本。

–塞尼哈
17年7月31日在22:27

实际上,我会在psychology.SE等网站上发现更多有用的信息,在这些网站上仅给出引用即可将可验证的内容超出非专家的付费范围,而给出报价通常会使答案相当笨拙。社会科学书籍采用脚注样式A作为细节/引用是有原因的。一些人使用小的字体在psy.SE上对此进行了近似估算,但是我发现该解决方案非常令人讨厌。

–嘶嘶声
18年1月8日在7:04



有关扰流板的更多详细信息:meta.stackexchange.com/questions/1191/…

–Vadzim
18年5月4日在10:53

#3 楼

我喜欢这个主意,特别是因为它可以简化“多语言”问题,使您可以用多种语言的多个代码示例发布问题或答案,而又不会成为阅读的噩梦。

评论


就像MSDN如何在C#,VB和C ++中执行代码示例一样。

–TheTXI
09年7月14日在14:42

@TheTXI:是的。

–GEOCHET
09年7月14日在15:15

对于与语言无关的问题,很好。

–akarnokd
09年7月14日在19:23

#4 楼

对于[R]标签这是一个非常有用的想法,我怀疑还有其他统计/数据繁重的标签。

我们强烈建议我们的用户包括样本数据:

如何制作出色的R可重现示例?

通常是由于统计性质野兽即使仔细挑选样本数据也很难。例如,这个构思周到的帖子:

处理混乱的日期

如果没有巨大的代码转储,根本没有办法包括提问者感兴趣的各种示例。我倾向于把我的问题放在最后,但它仍然是次优的解决方案,它使回答变得更加困难,网站也变得不那么美观。

评论


我同意这个主意,但是约会的日期令人震惊。并不是所有的火车残骸都应该被隐藏起来,那是一个非常令人难忘的火车残骸。不过,你是对的。某些人似乎将其内容发布到pastebin或其他站点,以产生代码折叠的效果。

–迭代器
2011年11月14日下午13:11

#5 楼

我个人很喜欢这个主意。我一直为自己的长期发布代码感到内。但是,我有点怀疑杰夫会同意。 :)

评论


Jeff可以选择退出此功能,而他完全不会体验。

–akarnokd
09年7月14日在19:12

Jeff的论点在软件开发环境中非常有效。但是,StackOverflow不是软件开发环境,也不是IDE。这里是讨论源代码问题的地方。有时您需要共享代码,以便其他人可以运行它-他们不需要检查整个代码段。存在文本粘贴框,并且可以从问题中链接到文本粘贴框,但是,将代码折叠起来并将代码与问题捆绑在StackOverflow上更有意义。然后,这将允许个性化的折叠/展开设置。

–戴夫·贾维斯(Dave Jarvis)
2010-12-8 15:38



杰夫可能讨厌因自己的代码而受指责:

–kekekela
2011年11月14日,下午1:38

您引用的是这篇文章的哪一部分?我宁愿阅读比Jeff写的更多的东西。 :-/

–詹姆斯·海格(James Haigh)
2015年3月10日22:00

哦,等等,这是一个断开的链接。这是Internet存档Wayback Machine捕获的文章,标题为“代码折叠问题”,日期为2008-07-06:web.archive.org/web/20100120154520/https://codinghorror.com/…您看到的就是外部链接的问题,尤其是对于可能设置为过期的粘贴框的情况。

–詹姆斯·海格(James Haigh)
15年3月10日在22:46

(我最初只是在blog.codinghorror.com上看到无关的文章,因为那是不经意间将重定向的链接默默地重定向到301的地方,而我没有注意到,因此,对于您所指的内容它并不明显。)

–詹姆斯·海格(James Haigh)
15年3月10日在22:59

更新了带有@James Haigh提供的回溯链接的链接。谢谢。

–约翰·鲁迪(John Rudy)
15年3月16日在15:48

Jeff实际上拒绝了此功能请求。

–马特
18年7月12日在16:15

#6 楼

您是说像这样的折叠代码片段?




 alert('Most folded code ever!'); 




评论


究竟。但这适用于所有语言甚至伪代码吗?

–恶魔的拥护者
15年12月18日在16:19

@ScottBeeson真是气死了。这个问题感觉就像是美国对Stackoverflow的竞选融资改革;大约有80%的人希望这样做,但是有决策权的人更喜欢继续做其他事情。

–很少需要“莫妮卡在哪里”
2015年12月18日18:58



@SeldomNeedy-是的。我该怎么做才能在SO中折叠代码段?感谢您的帮助。我是否必须添加一些代码,它不是Stackoverflow的内置功能?

–DanielaB67
17年7月28日在14:19



@ DanielaB67即使您已注销,也应该看到“编辑”或“改善此答案”的选项。选择该选项以显示使用的标记。

–很少需要“莫妮卡在哪里”
17年7月28日在22:55



@SeldomNeedy是的,我看到了,谢谢!同时,我在这里得到了答案:meta.stackoverflow.com/a/354002/3362989我在SO中问了问题,并使用了指向您的示例的链接,因此主持人将问题返回给stackexchange :)再次感谢!

–DanielaB67
17年7月29日在0:17



@ColmBhandal TIAS?

–很少需要“莫妮卡在哪里”
20年6月12日在17:43

#7 楼

<details>标记正是用于实现此功能。
对此功能要求的主要批评是必须定义新的语法。 HTML5标准使用<details><summary>标签提供了此功能。示例
<details>
  <summary>Some details</summary>
  <p>More info about the details.</p>
</details>

显示一些带有箭头的详细信息,以单击以显示更多。折叠还是展开:
qJeff2010q
@Jeff说他想避免过多的代码。这已经由硬限制来强制执行,并且了解HTML样式Stackexchange的人不太可能发布不必要的代码。

评论


在SO上编辑帖子时是否有效?

–贾德普·谢卡(Jaideep Shekhar)
20年1月2日,13:01

#8 楼

这将非常好-特别是默认情况下它是关闭的(或仅显示第一行代码)。

评论


第一行很不错,您只需在其中加上简短说明即可。

–akarnokd
09年7月14日在19:22

#9 楼

我喜欢自动(至少)在代码上插入折叠的想法。这将对那些将整个体系结构丢入一个问题的新手有所帮助-与那些完全不提供代码的人相比,我仍然更喜欢这个问题。超过10条线吗?添加滚动条的截止时间是什么?因为那大概是时候了,我们绝对应该弃牌。

评论


高度可定制的折叠设置没有任何麻烦。 jQuery是一个功能强大的库。

–akarnokd
09年7月14日在19:19

#10 楼

这是我对这个问题的解决方案-润滑脂脚本,它将隐藏每个代码块的第一行以外的所有内容,直到单击为止(再次单击以重新折叠该代码块)。这是一个有点破烂的atm,但确实可以在我的计算机上使用。如果您发现其中的任何错误,请告诉我,我将尝试修复它们。

编辑:添加了菜单命令来显示和隐藏所有可折叠的块。

// ==UserScript==
// @name           Code folding
// @namespace      http://stackoverflow.com/
// @include        http://stackoverflow.com/questions/*
// @include        http://meta.stackexchange.com/questions/*
// ==/UserScript==

//default values

// Add a selector for each element that you wish to fold
// to the array below (one array item per selector
var elementsToFold = new Array("pre:has(code)");

// Close elements by default?
var closeByDefault = true;

//-------------------------------
//- Do not edit below this line -
//-------------------------------
function getJQuery() {
    if (typeof unsafeWindow.jQuery == 'undefined') {
        window.setTimeOut( getJQuery, 100 );
    }
    else {
        $ = unsafeWindow.jQuery; letsGo();
    }
}
//add the folded style into the document
var style = window.document.createElement("style");
style.type = "text/css";
style.innerHTML = ".folded {height:1.0em; overflow:hidden;cursor:N-resize;}";
document.getElementsByTagName("HEAD")[0].appendChild(style);

getJQuery();

function letsGo () {
    $(elementsToFold.join(",")).click( function() {
            $(this).toggleClass("folded");
            });
    window.showHideElements = function (event) {
        alert(event.innerHTML);
    }
    window.hideAllElements = function () {
        $(elementsToFold.join(",")).each(function() {
                $(this).addClass("folded");
                });
    }
    window.showAllElements = function () {
        $(elementsToFold.join(",")).each(function() {
                $(this).removeClass("folded");
                });
    }

    if (closeByDefault) {
        $(elementsToFold.join(",")).each(function() {
                $(this).addClass("folded");
                });
    }

    GM_registerMenuCommand("Show all folded blocks", showAllElements);
    GM_registerMenuCommand("Hide all foldable blocks", hideAllElements);
}


评论


我可以使它在Chrome中以某种方式起作用吗?

–akarnokd
09年7月22日在6:40

显然,Chrome具有实验性的油脂猴子脚本支持-以chrome --enable-greasemonkey开头。另一种选择是尝试使用lubresmetal.31tools.com,该网站显然支持大多数油脂猴子脚本。但是,我不使用chrome,因此无法确定。如果您有更多信息,请告诉我,我将相应地更新我的答案。

– a_m0d
09年7月22日在7:00

#11 楼

支持文本或图像的折叠部分也很有用。用法示例:在一个数学Stack Exchange站点上,我可能会写一个答案,其中包含一个很长但是相对没有意思的权利要求证明。由于证明是完整性所必需的,但可能会偏离要点,因此我希望将其折叠起来,直到感兴趣的用户单击为止。
对于图形计算机程序中的问题,我可能会提供一个截图,以说明我想要做。我可能还有一些其他屏幕快照,说明了更多示例;这些可能只会对试图回答我的问题的人感兴趣。
有关多个选项的详细信息。例如,一个用户体验问题可能会问:


某个控件的哪个位置将允许用户最快的导航?


控件上的控件左
(折叠:左侧带有控件的UI实体模型)
(顶部:带有顶部控件的UI实体模型)
(底部:控件顶部的UI实体模型)
:UI原型,控件位于底部)



#12 楼

我想提供一个(但其中一个)提供可折叠元素的正当理由示例:日志文件。有时,您必须提供日志以进行分析,而日志往往很冗长,并且在不丢失潜在有价值信息的情况下无法缩减。但是,没有理由使它们默认为全长。例如,某人可能甚至不看问题就能诊断问题,而某人可能需要日志中的一些线索来找出问题。

#13 楼

他们可以组装类似的东西,他们已经在网站的其他地方使用了这些界面元素:



因此,当然,按箭头会弹出完整的代码块。为了不丢失代码块的宽度,我实际上会做一些不同的事情,但是遵循这些原则会有所帮助。

评论


这与HTML5摘要标记的作用非常接近。参见meta.stackexchange.com/a/303150/289870

– serv-inc
17年11月12日21:30



#14 楼

好点子。我建议也为报价块提供支持。

评论


如果将引用的文本包装在可折叠的区域中,则这是隐式的。

–akarnokd
09年7月14日在19:13

#15 楼

现在怎么样了?

随着实时示例的到来,最好还是不在现场将代码保持在现场的状态,以使实时示例网站脱机或丢失内容,但也可以保持良好状态代码崩溃了(因为它已经很容易获得了,而实际示例倾向于容纳更多代码)。

还好吗?

#16 楼

这是一个好主意,尤其是对于代码。有时我发现自己将相当大数量的示例代码放入答案中,有些人可能只是不想阅读。如果有人愿意,我可以将其折叠起来以供他人跳过。

顺便说一句,这也可以帮助“编码高尔夫”或挑战问题,解决方案或提示可能是折叠起来,这样人们就不需要看到它们了。

评论


这取决于您认为可折叠对象的默认状态。

–akarnokd
09年7月14日在19:17

现在有一个叫做“破坏者”的东西,但是他们仍然占据了内容的所有空间。

–马特
18年7月12日在2:32

#17 楼

我想一开始看到的代码块很小,可​​以扩展到问题的范围之外(以解决水平滚动不太常见的问题)。

#18 楼

我想再次提到这个话题,因为我真的很需要一个可折叠的区域。在某些情况下(我主要与R一起工作),我需要提供更多输入,以便其他人可以帮助我/解决问题。就像多个代码文件一样。将它们每个都放在一个可折叠的区域中非常好,这样其他人就可以轻松地集中精力检查一个文件。这可以极大地提高问题或答案的可读性。

#19 楼

我认为这里的真正问题之一是无法控制该功能的使用方式。不熟悉SE的用户可以使用这种功能来做各种各样的事情,从而可能给正在审核的用户造成耗时的问题。

除此之外,众所周知Google希望您隐藏尽可能少的内容。

我个人很喜欢这个想法,但是有很多值得考虑的实际问题。

#20 楼

行号和代码折叠不属于此处,因为无论如何您都不应该发布大量的代码。如果包含多个代码片段,则问题和/或答案将被删除。

如果“需要”链接到很多代码,请将其托管在其他位置,并提供给我们相关的代码片段

任何鼓励发布大量代码的功能也被设计破坏,并且由于相同的原因而被拒绝-为什么我们要鼓励导致导致不可读帖子的行为?

评论


我可以争论,但我只是接受您的观点。

–akarnokd
09年7月21日在8:55

很可能会有很长的答案,其中包括几个部分,其中有些几乎是偶然的。能够将这些部分折叠起来,将使答案更易于浏览。想要折叠的原因更多,而不仅仅是“一大堆代码”。

–乔恩·斯基特(Jon Skeet)
09年7月21日在9:09

一半的时间,我宁愿折叠文本并看一下代码。

–史蒂文·劳(Steven A. Lowe)
09年7月21日在14:33

@Jeff:请从未来的角度考虑。将代码托管在其他位置并链接到该位置,则意味着当该站点出现故障时,我们最终会获得陈旧的链接,并且这里的答案可能是陈旧的。这种将答案分为两个位置的方法意味着两点失败。在某些情况下,甚至由于简单的语言,也由于其他原因,不可避免地会提供“大量的代码”以提供简单且合法的示例。

–sundar-恢复莫妮卡
09年7月22日在7:00

我也不同意Jeff。...我看不出有什么理由为什么一些合法的问题不会受益于或实际上不需要大量的支持代码。假设有人问一个有关如何处理相当深度的要求的问题....现在,如果我做了类似的事情,我可能愿意发布整个代码文件,因为这只需要几分钟,但是,仔细研究所有内容,只提取相关的点点滴滴,然后发布,希望我没有错过任何重要的事情,嗯,我可能不会打扰。希望您重新考虑一下(折叠和上传)。

–tbone
09年8月21日在20:31

我想指出的是,如果您链​​接到大量代码的pastebins,则某些用户会投反对票,并投票赞成关闭垃圾邮件。

– Macha
09-10-17在13:08

@杰夫;您需要定义“大量”。我有几个问题需要与代码无关的代码,这仅仅是因为如果我不发布它,我知道第一个注释将是“向我们展示代码”。

–劳伦斯·多尔(Lawrence Dol)
2010-12-23在0:04

@Jeff:这是一个很好的答案的示例,如果默认情况下折叠代码,则更好:stackoverflow.com/questions/5038169/…

–劳伦斯·多尔(Lawrence Dol)
2011-02-20 21:37

@杰夫:另外,我认为,根据这个问题的投票方式,我需要重新考虑拒绝投票的决定,假设投票代表了社区。

–劳伦斯·多尔(Lawrence Dol)
2011-02-20 21:38

@Jeff-您可能对该问题感兴趣,该问题是在有人在此处发布有关如何以多种方式链接DLL的答案时创建的。我的回答是“滚动条显示在25行,您会得到3万个字符-使用它们!”问这个问题时,您是否有滚动条?如果没有,我认为最好重新考虑一下。

–凯文·维米尔(Kevin Vermeer)
11-11-14在1:41



@Jeff在实践中,我已经看到其他人通过pastebin遵循了这个建议。

–迭代器
2011年11月14日下午13:16

@Jeff,只是因为您无法想到一个正当的理由,并不意味着就没有。考虑日志文件。有时,您必须提供日志以进行分析,而日志往往很冗长,并且在不丢失潜在有价值信息的情况下无法缩减。但是,没有理由使它们默认为全长。例如,某人可能甚至不看问题就能诊断问题,而其他人可能需要从日志中找出一些线索来找出问题。

– Synetech
14年4月21日在17:00

“关于”页面上说,stackoverflow只是问题和答案,而不是闲聊。但是现实往往是:问题,上下文文本墙,评论,第一答案,上下文文本墙,第二答案。同样,这不仅涉及代码块,还涉及任何人认为有意义的额外/背景/上下文信息。特别是在meta **讨论中,问题部分必定会成为一篇文章,指出正/反/相关工作,替代方案等。

–tkruse
17年12月3日,下午3:39

meta.stackexchange.com/a/230135/393735

–马特
18年7月16日在19:57