Deprecated: Return type of I::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/public/kirby/toolkit/lib/i.php on line 62

Deprecated: Return type of I::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/public/kirby/toolkit/lib/i.php on line 91

Deprecated: Return type of I::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/public/kirby/toolkit/lib/i.php on line 71

Deprecated: Return type of I::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/public/kirby/toolkit/lib/i.php on line 101

Deprecated: Return type of I::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/public/kirby/toolkit/lib/i.php on line 53

Deprecated: Return type of Collection::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/public/kirby/toolkit/lib/collection.php on line 80

Deprecated: parse_str(): Passing null to parameter #1 ($string) of type string is deprecated in /home/public/kirby/toolkit/lib/url.php on line 135
One Tap Less | 1Writer — The actionable text editor for iPhone.

1Writer — The actionable text editor for iPhone.


Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /home/public/kirby/toolkit/lib/str.php on line 506

Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /home/public/kirby/toolkit/lib/str.php on line 506

Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /home/public/kirby/toolkit/lib/str.php on line 506

Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /home/public/kirby/toolkit/lib/str.php on line 506

Warning: Trying to access array offset on value of type null in /home/public/kirby/vendors/parsedownextra.php on line 241

Warning: Trying to access array offset on value of type null in /home/public/kirby/vendors/parsedownextra.php on line 241

Deprecated: preg_match(): Passing null to parameter #2 ($subject) of type string is deprecated in /home/public/kirby/vendors/parsedownextra.php on line 241

Warning: Trying to access array offset on value of type null in /home/public/kirby/vendors/parsedownextra.php on line 305

Deprecated: substr(): Passing null to parameter #2 ($offset) of type int is deprecated in /home/public/kirby/vendors/parsedownextra.php on line 305

Warning: Trying to access array offset on value of type null in /home/public/kirby/vendors/parsedownextra.php on line 305

Deprecated: substr(): Passing null to parameter #2 ($offset) of type int is deprecated in /home/public/kirby/vendors/parsedownextra.php on line 305

Warning: Trying to access array offset on value of type null in /home/public/kirby/vendors/parsedownextra.php on line 305

Deprecated: substr(): Passing null to parameter #2 ($offset) of type int is deprecated in /home/public/kirby/vendors/parsedownextra.php on line 305

Warning: Trying to access array offset on value of type null in /home/public/kirby/vendors/parsedownextra.php on line 305

Deprecated: substr(): Passing null to parameter #2 ($offset) of type int is deprecated in /home/public/kirby/vendors/parsedownextra.php on line 305

Warning: Trying to access array offset on value of type null in /home/public/kirby/vendors/parsedownextra.php on line 305

Deprecated: substr(): Passing null to parameter #2 ($offset) of type int is deprecated in /home/public/kirby/vendors/parsedownextra.php on line 305

Warning: Trying to access array offset on value of type null in /home/public/kirby/vendors/parsedownextra.php on line 305

Deprecated: substr(): Passing null to parameter #2 ($offset) of type int is deprecated in /home/public/kirby/vendors/parsedownextra.php on line 305

Warning: Trying to access array offset on value of type null in /home/public/kirby/vendors/parsedownextra.php on line 305

Deprecated: substr(): Passing null to parameter #2 ($offset) of type int is deprecated in /home/public/kirby/vendors/parsedownextra.php on line 305

Warning: Trying to access array offset on value of type null in /home/public/kirby/vendors/parsedownextra.php on line 305

Deprecated: substr(): Passing null to parameter #2 ($offset) of type int is deprecated in /home/public/kirby/vendors/parsedownextra.php on line 305

This was a tough week for every geek without an iPad out there, the release of Editorial outshone every other launch of the week. I felt lonely until one app I was eager for reached the AppStore, unfortunately, it was buried by all the headlines for Editorial's myriad of features and only a few heard of 1Writer before me.

Don't get me wrong, this article would never intend to bash Editorial, I'm envying every single iPad user of the world this week, even those who use it exclusively for a larger Fruit Ninja screen. 1Writer is promising and fresh, it's unfair to let it fall under obscurity.

Oh, did I tell you it supports custom actions? I've never been a fan of Drafts to write long pieces and always appealed to Byword. 1Writer still doesn't makes me as comfortable as Byword does, but it packs a nice punch.

Great markdown bars with quick preview and share, Text Expander support, x-callback-url, hashtags, Dropbox and iCloud storage, CloudApp or Evernote integration and even possibility to use it as a plain-text to-do list.

You probably came over to read on custom actions, right? You can start by reading the official documents on its url scheme. I won't post a plethora of examples, but I'll teach you some parameters. 1Writer offers the following to be sent to other applications:

  • [text] — document content or selected text;
  • [name] — document name, with extension;
  • [title] — document name, without extension;
  • [todo] — a single to-do;
  • [todos,] — list of to-dos separated by ",". Replace "," with another separator.

The document parameters were pretty straightforward, yet I couldn't bear the same for the to-do actions, so I decided to investigate. I created a Drafts action to install actions on 1Writer, you can grab it here.

onewriter://x-callback-url/import-action?name=[[title]]&url=[[body]]

I began with a simple action to export a single to-do from 1Writer and send it to Drafts. The results were fascinating. Actions applied to to-dos have their own folder, which only appears when the doc you're sharing contains any to-do. There it can export to Reminders. When I used my aforementioned rule it asked me which to-do I'd like to send to Drafts, as you can see below.

After this experience I suspected that the other parameter would send all my tasks to Drafts, however I was intrigued by the possibility to change separators. For the first test I basically ran the same action as before, replacing [todo] for [todos,] this time. 1Writer prompted me if I wanted to send only complete or incomplete todos, or just all of them. The result was a perfect comma-separated list.

I played safe, so I decided to try different separators. I managed to use every relevant possibility, besides line breaks or spaces. Your separators can be longer than a single character and contain any kind of character but "\". Leaving only [todos] lead me to an error as well, so you're obliged to include a separator. I've sent an email asking the developer about it.

This article was completely written in 1Writer and published using a Kirby-only Pythonista action. The structure of a great iOS app lies here, it may not compete against Editorial, but it has a place in my iPhone now.