Chopin – Nocturne Op. 9, No. 2 in Eb Major
The famous Nocturne in Eb Major by Chopin.
Read more about my piano recording series here.
Related posts:
Chopin – Nocturne Op. 9, No. 2 in Eb Major
The famous Nocturne in Eb Major by Chopin.
Read more about my piano recording series here.
Related posts:
Chopin – Prelude Op. 28, No. 4 in E minor
Another short Prelude by le maître.
Read more about my piano recording series here.
Related posts:
Chopin – Mazurka in Ab Major, Op. 24, No. 3
A light mazurka that I found when leafing through my Chopin score collection.
Read more about my piano recording series here.
Related posts:
Chopin – Nocturne Op. 72, No. 1 in E minor
An emotional Nocturne by Chopin. It starts out melancholy, but the greyness passes away as the piece journeys to its E major resolution.
Read more about my piano recording series here.
Related posts:
Beethoven – Sonata Op. 27, No. 2 (Moonlight), 2nd movement
The second movement of Beethoven’s famous Moonlight Sonata (No. 14).
Read more about my piano recording series here.
Related posts:
Beethoven – Sonata Op. 27, No. 2 (Moonlight), 1st movement
The first movement of Beethoven’s famous Moonlight Sonata No. 14 in C# minor.
Read more about my piano recording series here.
Related posts:
Diakonos - version 0.8.12
Version 0.8.12 of Diakonos is now available.
The keying system of Diakonos has been refactored. What this means to the end user is the input line now supports the full range of keys. For example, keys like the Home and End keys actually produce multiple characters of input each, and so would not function properly in older versions. They are now are properly supported. As part of this new implementation, the notion of keying modes has been introduced. For now, there are only two hard-coded modes: “edit” and “input”. There is now an mkey
configuration directive, used to bind a function to a key chord or sequence under a specific mode. The old directive, key
is equivalent to mkey edit
, and so acts as a shorthand.
Another nice enhancement to input is the fact that the input line can now scroll left and right, to allow proper editing of long inputs (inputs wider than the screen or terminal).
This version includes in the tarballs files that can be used to provide tab completion for Diakonos under bash and zsh. Of course, all shells already provide tab completion for files and directories, but with the provided files, you can also have completion of session names for use with diakonos -s <session>
.
A new select_wrapping_block
function has been added, with a default keychord of Alt-space. This function will select all lines at the current level of indentation (or deeper). That is, you can select the current code block with it. You can press Alt-space additional times to quickly and easily select increasingly shallower parent blocks.
The find functionality of Diakonos has been enhanced: if you perform a search with text selected, the search is restricted to the selected text. Put these two new features together, and you have a way to restrict searches to code blocks — something I find quite cool and useful. Haven’t you ever wanted to know “where else do I reference this variable within this method?” or asked similar questions? Well now you can find out things like this very easily.
The cursor stack was broken in the last release, but it has been repaired and also enhanced. The cursor stack is now cross-buffer, instead of buffer-specific. This lets you return to logical work areas no matter which buffers they are in. (For those of you that don’t know, the cursor stack is essentially the equivalent of your web browser’s Back and Forward functionality, except within your editor.)
Diakonos git integration got a big boost recently, by way of a really cool git tool called tig. Of course, tig is neither required for Diakonos operation, nor bundled with Diakonos. However, if you install it, and also install the Diakonos git extension, then you get one-key access (F9) to a slick curses interface to git. If you are a git user, I certainly recommend you take tig for a whirl. With dk-git and tig, we Diakonos users get something comparable to emacs’ magit.
The full set of changes is listed in greater detail in the changelog:
As usual, report any bugs here, or come visit me in IRC!
Related posts:
Diakonos - version 0.8.11
Version 0.8.11 of Diakonos is now available.
This release brings a handful of minor feature enhancements and fixes, but the most important addition is the new extension system.
Diakonos has been scriptable for many versions now, but with this release I have baked in an official system and structure for extensions. Diakonos dances to the same tune as Ruby, insofar as it exposes pretty much the entire core to any enterprising developer who wants to add new features. Later on, I’ll describe some of the ways a programmer might extend Diakonos, but first, let’s take a look at the Hello World extension that comes with the Diakonos tarball.
Every extension must have an info.yaml
file. This YAML file contains lots of information about the extension. Here are the contents of the info.yaml
file of the Hello World extension:
name: Hello World description: An example of a Diakonos extension author: name: Pistos email: somebody@example.com uri: http://blog.purepistos.net version: 1.0.0 uris: homepage: http://github.com/Pistos/diakonos/tree/master/extensions/dk-hello-world repository: git://github.com/Pistos/diakonos.git licence: MIT requirements: diakonos: minimum: 0.8.11 tested: - 0.8.11 gems: # - gemname: # minimum: 1.0.0 # tested: # - 1.0.0 # - 1.1.0 notes: > This extension adds a hello_world function to Diakonos. Pressing Shift-F11 will activate the function.
I think the file contents and format are self-explanatory. The only thing to keep in mind is that the requirements
key is required. All other items are optional. The fields are all fully described in Diakonos’ built-in help.
Besides the info.yaml
file, an extension can have one or more .conf
and .rb
files. The .conf
files are of the same format as normal Diakonos configuration files. The Ruby (.rb
) files are where all the code of the extension is placed.
Here is the code of the Hello World extension:
module Diakonos module Functions def hello_world @current_buffer.paste "Hello, world!" end end end
In it, a new function, hello_world
, is defined. Obviously, it pastes “Hello, world!” into the current buffer (at the current cursor position).
The Hello World conf file has just this line:
key f23 hello_world
So, once the Hello World extension is loaded, you can press Shift-F11, and you’ll receive the well-known greeting.
Extensions are simply self-contained directories of files, and so can be packaged into tarballs, made into git repositories, or whatever strikes your fancy.
To install an extension, just copy or unpack (or even symlink) its directory under ~/.diakonos/extensions/. For example, ~/.diakonos/extensions/dk-hello-world/.
To activate an extension, use the load_extension
directive in your Diakonos configuration. For example:
load_extension dk-hello-world
You can see what extensions are loaded and active with the new About page, accessible with default hotkey F11. Any extensions that failed to load will also be listed.
An extension might do any number of things, like:
The range of possibilities is very broad. I have begun filling out source code documentation for Diakonos. I hope to add more and more documentation with each release. The current docs can be accessed at http://purepistos.net/diakonos/rdoc/. As of this writing, it’s quite incomplete, but at least the classes and methods are enumerated. Since this documentation is sparse, don’t be afraid to dive right into the source code. Although I am continually refactoring, and some [very] old code is still hanging around, I think most of the codebase is readable and understandable. Also, of course, you can always come and ask questions in our IRC channel if you need help with writing extensions, or using Diakonos in general.
A few extensions have already been made to help exemplify the new extension system. Check out their source to learn more about extending Diakonos.
Here is the detailed changelog for this release:
Report any bugs here, or come visit me in IRC!
Related posts:
Diakonos - version 0.8.10
Version 0.8.10 of Diakonos is now available.
With this release, I’d like to welcome Dominik Honnef (dominikh) to the Diakonos development team. He has already made several contributions, including some fixes which were cherry-picked from the master development branch and included in this version. His other contributions to date will be seen in the next version (0.8.11), and I think we can expect more from him in future versions.
Starting with this version, Ruby 1.8 support is officially dropped. Diakonos will now only run on Ruby 1.9. There’s no need to rush the upgrade on your systems; it is quite possible to have both 1.8 and 1.9 installed on the same system. Search the web for how to do this.
go_to_char (Alt-N) and go_to_char_previous (Alt-P) have been added. These let you move the cursor directly to a specific nearby character.
The shell command has been adjusted a little, so that the results buffer is no longer cluttered with the command that was run.
The way you activate Klipper synchronization has been centralized and simplified. You now simply set “clipboard.external klipper”, instead of setting each clipboard-related key mapping. Along with this change, xclip support was added. This will let non-KDE users synchronize their X clipboard with Diakonos.
Sessions have been improved a bit: Cursor position is now saved, and Diakonos also remembers which was the current buffer when restoring a session.
Basic pair highlighting and jumping was added. Matching brackets are now highlighted, and you can press Alt-{ to jump to a match.
Dynamic prefix expansion was added. With this feature, you can complete long words — good for those of us who don’t like to type a lot. Type the beginning of a long variable name, or such, then press Alt-E. Diakonos will complete the word using a word found in the open buffers (the most frequently used one). Press Alt-E more times to cycle through all the matches. Here is a screencast which shows this feature in action:
Here is the full changelog for this version:
Report any bugs here, or come visit me in IRC!
Related posts:
Diakonos - version 0.8.9
Version 0.8.9 of Diakonos is now available.
This release is primarily an internal refactor release. The only changes visible to the user are bug fixes. These include improvements to the installer, and vastly improved handling of X windows pasting. No more brutally slow terminal pasting!
The changes are listed in greater detail in the changelog:
Report any bugs here, or come visit me in IRC!
Related posts:
New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.
Keep up with the latest Advogato features by reading the Advogato status blog.
If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!