This definitely isn't a language feature, but an editor feature. The `#pragma mark` is used for Xcode, but Visual Studio uses `#pragma region` and `#pragma endregion` (VS Code may as well) for C/C++ (because of -Wall -Werror, unknown pragmas may be warned and/or errored). C# apparently uses `//#region` and `//#endregion`, but this isn't recognized in VS Code for C/C++.
Not all clients will support it, but the LSP defines a `Folding Range Request` ( https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_foldingRange) that could be defined matching either `@doc group: NAME` or `# mark: NAME` or something, so IMO this would be something to propose to the Elixir LS team, because it would provide nice features across all supporting editors. I don't think that `@doc group: NAME` is the correct choice, because doc sections are folded together for functions of the same name. -a On Mon, Mar 17, 2025 at 7:24 PM Jean Klingler <sabiw...@gmail.com> wrote: > The ExDoc part of the story is already covered by @doc group I think: > > https://hexdocs.pm/ex_doc/Mix.Tasks.Docs.html#module-grouping-functions-types-and-callbacks > > Given @doc group matches the idea of indicating the logical grouping of > functions, introducing something else for a similar purpose at the language > level might be redundant? > I'm not sure if IDEs could leverage them somehow to achieve what you have > in mind. > > Cheers, > Jean > > Le mar. 18 mars 2025 à 05:38, 'Mark Madsen' via elixir-lang-core < > elixir-lang-core@googlegroups.com> a écrit : > >> Has there been any discussion around adding a module attribute @mark to >> Elixir that would function as a code organization tool similar to Swift's // >> MARK: or Objective-C's #pragma mark? >> >> -- WHY -- >> As an example I've found that when developing Phoenix LiveView >> applications, modules often accumulate numerous handle_event/3 and >> handle_info/2 callback functions and it would be nice to have a way to >> organize things. >> >> I understand that right now we can add comments, and we have compiler >> warnings. But nothing official an editor can support. Given that we want >> all the handle_event and handle_info functions together this seems like the >> way. >> >> Clearly it would be optional. But it would be beneficial. >> >> My proposal would: >> >> 1. Introduce @mark as a special module attribute recognized by the >> Elixir compiler >> 2. Enable IDE/editor integration for code navigation and folding >> based on these marks >> 3. Potentially allow documentation tools like ExDoc to use these >> marks in module documentation >> >> The primary benefit would be improved code organization and readability >> in larger modules where related functions need to stay together but would >> benefit from visual separation and navigation support. >> Thoughts? >> >> I'm not asking someone to write this for me... but would like to >> understand if something like this would be accepted before working on it. >> >> Thanks, >> >> Mark >> >> -- >> You received this message because you are subscribed to the Google Groups >> "elixir-lang-core" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to elixir-lang-core+unsubscr...@googlegroups.com. >> To view this discussion visit >> https://groups.google.com/d/msgid/elixir-lang-core/ebb12c67-1e90-430b-89c6-c78702e4c1d7n%40googlegroups.com >> <https://groups.google.com/d/msgid/elixir-lang-core/ebb12c67-1e90-430b-89c6-c78702e4c1d7n%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > -- > You received this message because you are subscribed to the Google Groups > "elixir-lang-core" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to elixir-lang-core+unsubscr...@googlegroups.com. > To view this discussion visit > https://groups.google.com/d/msgid/elixir-lang-core/CANnyohazJAaHk3DxrPgkrbT4x%3DPPE06KZcK-XkiL178XuXnvrQ%40mail.gmail.com > <https://groups.google.com/d/msgid/elixir-lang-core/CANnyohazJAaHk3DxrPgkrbT4x%3DPPE06KZcK-XkiL178XuXnvrQ%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > -- Austin Ziegler • halosta...@gmail.com • aus...@halostatue.ca http://www.halostatue.ca/ • http://twitter.com/halostatue -- You received this message because you are subscribed to the Google Groups "elixir-lang-core" group. To unsubscribe from this group and stop receiving emails from it, send an email to elixir-lang-core+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/elixir-lang-core/CAJ4ekQuaNr81JY5sVG4dRbOzL3U9B1mHgkz7i6w%3DEZWdLwxkBw%40mail.gmail.com.