Although I like Microsoft OneNote and use it continuously, it does have a few failings. One of these is the inability to set the default styles and layout for text.
In particular, when you create a new paragraph or list entry in OneNote, the default – non-changeable – setting is to have no white space between the paragraphs.
This is very poor design and makes more than a small amount of text quite unreadable. I’ve raised this with Microsoft but who knows if or when it might be sorted.
In the mean time, I need a far quicker way of changing this. Currently, I’ve had to:
- Select the container with the text I want to format
- Use the menu to show the List Task Pane ([alt]o/L)
- Mouse click on the text box to change (you cannot tab into it)
- Change the 0.00 pt default to something like the 6.00 pt that I prefer
- Close the List Task Pane
Not nice!
Having determined that there is nothing clever that can be done in OneNote, I decided that the old standy “AutoHotKey” would be useful. So I’ve created a script for AutoHotKey that will change the inter-list gap for the currently selected container.
; [win]-z Set OneNote list to 6pt separation
#z::
; We need a partial title match but we will also reset to previous setting
oldTitleMatchMode := A_TitleMatchMode
SetTitleMatchMode, 2
debug := 1 ; Set to 1 to output debug messages, or 0
winTitlePart := " - Microsoft Office OneNote" ; Partial title of ON windows
winText := "List" ; Text to identify List Task Pane - Visible Window Text: MsoDockRight, Task Pane, List
listDefault := "0.00 pt" ; The default setting for list separation between items
listNew := "6.00 pt" ; My desired spacing between list items
; Only do something if ON is the active window
IfWinActive, %winTitlePart%
{
; We need the List Task Pane to be visible
IfWinNotExist, %winTitlePart%, %winText%
{
;IfEqual, debug, 1, MsgBox List not active
; Send chars to activate menu, can't use WinMenuSelectItem with Office apps
; SendPlay is used to prevent the Windows key locking the PC (Win+L)
SendPlay, !oL
}
; List Task Pane should now be visible, save the existing setting
ControlGetText, Var1 , RichEdit20W2, %winTitlePart%, %winText%
; If the current setting is the default setting then make the change
if Var1 = %listDefault%
{
; Focus on the input box & set the text
ControlFocus, RichEdit20W2, %winTitlePart%, %winText%
ControlSetText, RichEdit20W2, %listNew%, %winTitlePart%, %winText%
; This is optional to check if we were successful
ControlGetText, Var2 , RichEdit20W2, %winTitlePart%, %winText%
if ErrorLevel ; i.e. it's not blank or zero then error
MsgBox, %Var1% - %Var2% - Problem - %ErrorLevel%.
else
IfEqual, debug, 1, MsgBox, OK - %Var1% - %Var2%.
}
; Close the List Task Pane (actually it closes the Task Pane, period, sorry)
SendPlay, ^{F1}
}
else ; ON not active so do nothing
IfEqual, debug, 1, MsgBox, OneNote not active
SetTitleMatchMode, %oldTitleMatchMode%
return
OK, so it’s a bit rough-and-ready but it does save a whole lot of time. I’ve got this in my default AHK script so it is loaded whenever I log in and is activated with [win]z.