From 6738dce6a99f3863b5257e08a1af997349eb134d Mon Sep 17 00:00:00 2001 From: Sacha Chua Date: Thu, 22 Oct 2020 00:49:30 -0400 Subject: First try at schedule --- 2020/schedule/22.md | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 2020/schedule/22.md (limited to '2020/schedule/22.md') diff --git a/2020/schedule/22.md b/2020/schedule/22.md new file mode 100644 index 00000000..23892451 --- /dev/null +++ b/2020/schedule/22.md @@ -0,0 +1,77 @@ +# Powering-up Special Blocks +Sunday, Nov 29 2020, 9:33 AM - 9:53 AM +Musa Al-hassy + +Users will generally only make use of a few predefined \`special +blocks', such as \`example, centre, quote', and will not bother with +the effort required to make new ones. When new encapsulating notions +are required, users will either fallback on HTML or LaTeX specific +solutions, usually littered with \`#+ATTR' clauses to pass around +configurations or parameters. + +Efforts have been exerted to mitigate the trouble of producing new +special blocks. However, the issue of passing parameters is still +handled in a clumsy fashion; e.g., by having parameters be expressed +in a special block's content using specific keywords. + +We present a novel approach to making special blocks in a familiar +fashion and their use also in a familiar fashion. We achieve the +former by presenting \`\`defblock'', an anaphoric macro exceedingly +similar to \`\`defun'', and for the latter we mimic the usual +\`\`src''-block syntax for argument passing to support special blocks. + +For instance, here is a sample declaration. + + (defblock stutter () (reps 2) + "Output the CONTENTS of the block REPS many times" + (org-parse (s-repeat reps contents))) + +Here is an invocation that passes an *optional* argument; which +defaults to 2 when not given. + +
+

+Emacs for the win ⌣̈ +

+ +
+ +Upon export, to HTML or LaTeX for instance, the contents of this block +are repeated (\`stuttered') 5 times. The use of \`\`src''-like +invocation may lead to a decrease in \`#+ATTR' clauses. + +In the presentation, we aim to show a few \`practical' special blocks +that users may want: A block that … + +- translates *some selected* text —useful for multilingual blogs +- hides *some selected* text —useful for learning, quizzes +- folds/boxes text —useful in blogs for folding away details + +In particular, all of these examples will be around ~5 lines long! + +We also have a larger collection of more useful block types, already +implemented. + +The notable features of the system are as follows. + +- Familiar \`\`defun'' syntax for making block —\`\`defblock'' +- Familiar \`\`src'' syntax for passing arguments —e.g., \`\`:key + value'' +- Fine-grained control over export translation phases —c.f., + \`\`org-parse'' above +- **Modular**: New blocks can be made out of existing blocks really + quickly using \`\`blockcall'' —similar to Lisp's \`\`funcall''. We + will show how to fuse two blocks to make a new one, also within ~5 + lines. + +It is hoped that the ease of creating custom special blocks will be a +gateway for many Emacs users to start using Lisp. + + + + +Back to the [[schedule]] + +All times are approximate, and we might shuffle talks around as needed. Please check https://emacsconf.org/2020 a few days before the start of the conference for instructions on how to watch and participate. + +[[!meta title="Powering-up Special Blocks"]] -- cgit v1.2.3