You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

111 lines
3.8 KiB

# Blogging with org-mode
# Wait, what?
My coworker makes infinite fun of me because I do everything in
Emacs. He's a proficient Vim user and uses it as a text editor like a
master. Emacs, however, is almost a full operating system for me. Even
though I haven't figured out how to do video editing in Emacs (😂),
blogging is a task that's possible to do with it.
I run a self-hosted [Wordpress] instance on [Scaleway]. This is an
affordable set up that gives me extreme flexibility.
=> https://wordpress.org/ Wordpress
=> https://www.scaleway.com/en/ Scaleway
# The setup
As I described on my [previous post], I use [org2blog] as the blogging
package to post to Wordpress. I have the following block on my
`.emacs' file.
```
(require 'org2blog-autoloads)
(require 'netrc)
(require 'auth-source)
(let (credentials)
(add-to-list 'auth-sources "~/.authinfo")
(setq credentials (auth-source-user-and-password "arenzana.org"))
(setq org2blog/wp-blog-alist
`(("arenzanaorg"
:url "https://arenzana.org/xmlrpc.php"
:username ,(car credentials)
:password ,(cadr credentials)
:default-title "Hello World"
:default-categories ("emacs")
:tags-as-categories nil))))
(setq org2blog/wp-use-sourcecode-shortcode nil)
;; removed light="true"
(setq org2blog/wp-sourcecode-default-params nil)
;; target language needs to be in here
(setq org2blog/wp-sourcecode-langs
'("actionscript3" "bash" "coldfusion" "cpp" "csharp" "css" "delphi"
"erlang" "fsharp" "diff" "groovy" "javascript" "java" "javafx" "matlab"
"objc" "perl" "php" "text" "powershell" "python" "ruby" "scala" "sql"
"vb" "xml" "go" "sh" "emacs-lisp" "lisp" "lua"))
;; this will use emacs syntax higlighting in your #+BEGIN_SRC
;; <language> <your-code> #+END_SRC code blocks.
(setq org-src-fontify-natively t)
```
Naturally, I don't post my credentials as part of my `.emacs' since I
keep it under version control. Instead, I store it under
`${HOME}/.authinfo.gpg' like this:
```
machine arenzana.org
login admin
password "mypassword"
```
These credentials are called when loading the `netrc' package and
`auth-source'.
The Lisp block creates a new blog instance called `arenzanaorg' (in
case you want to have more than one blog). Include the XML RPC
endpoint, credentials, and some defaults. In addition to this, I
enable code highlighting. This is actually not working very well for
me, because the CSS uses a very bright yellow color to represent
strings for the `emacs-lisp' language (as you can see on previous
posts). Instead, I'm just using the `#+BEGING_SRC #+END_SRC' blocks
(without specifying the language) to post code blocks. This gives grey
blocks, but at least they're readable. I've tried different options,
without success. I'm not a front end developer, so to be honest, I've
struggled working with all the CSS options for the HTML export option
of org2blog.
=> https://arenzana.org/2019/04/emacs-org-mode/ previous post
=> https://github.com/org2blog/org2blog org2blog
# The Workflow
The workflow is fairly simple for what I do. `M-x
org2blog/wp-new-entry'. The first time you call this, it will prompt
you to log in. Make sure you do so. Then it will open an `Org' buffer
where you can edit the defaults and type away.
Once I'm done, I issue `M-x org2blog/wp-post-buffer'. This will upload
the draft and give me the option to display the preview, where I can
see what things will look like prior to publishing. After I'm happy
with the final edits, I issue `M-x
org2blog/wp-post-bufffer-and-publish'. This will post directly to
Wordpress.
# Caveats
* As I described above, syntax highlighting for emacs-lisp is not
great and it doesn't support Go (my language of choice).
* Attaching images to a blog post is something I do after the fact,
once the draft is up. I haven't figured out a good way to upload and
link images to a post straight from org2blog.