1. The speech preset highlights everything inside the preset tag, for example:
<preset id='speech'>You <a exist="-10439655" coord="2524,1836" noun="help">say</a></preset>, "All hope is lost."
The game only puts the preset tag around "You say", so that's all that gets highlighted. You could create your own highlight to highlight the entire line. Something like this would likely highlight all speech, but might also highlight some non-speech if it includes a comma/space/quote and ends with a quote:
Code:
<highlight fg='whatever bg='whatever'>^[A-z][a-z]+ .*?, ".*?"$</highlight>
To avoid highlighting non-speech, you could go through the list of speech verbs and add all the first and third person versions, which sounds like a very annoying task. Here's a start to that:
Code:
<highlight fg='whatever bg='whatever'>^[A-z][a-z]+ .*?(?:say|says|whisper|whispers|accuse|accuses|etc), ".*?"$</highlight>
Keep in mind that if the speech preset is set to a different color, "You say" will still show up as that color. Each bit of text can only have one foreground color and one background color. If two highlights match like in this case, the highlight affecting less text takes precedence. However, foreground and background are considered separately, so if no background is set the for the shorter highlight, the background for the longer highlight will still be in effect.
Whisper is part of the speech preset.
roomName highlights the entire roomName. Maybe you're looking for the roomDesc preset?
monsterBold highlights as much as other frontends do.
familiar, thoughts, and voln only highlights those things if they're in the main window, and they should highlight the whole line when that's the case.
2. To add a speech window, you just need to edit the layout. If you wanted the speech window to be three lines tall and above the input line, you first need to shorten the height of the main window by three lines.
Here's part of my config; yours might be different:
Code:
<window class='text' top='6' left='12' width='cols-12' height='lines-7' value='main' buffer-size='3000' />
You can tell this is the main window because of the value='main'. This causes all the main game text to be sent to this window.
When dealing with the top, left, width, and height of the windows, "cols" and "lines" are the only two variables. They refer the the total number of columns and lines in the terminal. These are needed for a layout to resize windows when the terminal changes sizes. As you might expect, making the main window three lines shorter would look like this:
Code:
<window class='text' top='6' left='12' width='cols-12' height='lines-10' value='main' buffer-size='3000' />
Now to put in the new window, we'll copy the left and width values. The top will simply be the top of the main window plus its height. And the height will of course be 3. Value will be speech, so that the speech stream gets sent there.
Code:
<window class='text' top='lines-4' left='12' width='cols-12' height='3' value='speech' buffer-size='3000' />
Another option is to just add the speech stream to your thought window, since windows can have more than one stream:
Code:
<window class='text' top='0' left='0' height='6' width='cols' value='lnet,thoughts,voln,speech' buffer-size='1000' />
I'm not sure if that's a good idea, but hey, you can do it.
3. For me, hitting the home or end keys sends me to the front or end of the line. ctrl+left and ctrl+right sends me one word to the left or right. However, different terminals use different key codes for these things. The relevant lines from the config file are:
Code:
<key id='home' action='cursor_home'/>
<key id='end' action='cursor_end'/>
<key id='545' action='cursor_word_left'/>
<key id='560' action='cursor_word_right'/>
If these aren't working because your terminal uses different keycodes, or if you'd just rather have it use that weird cmd/option key like you're used to, type ".keycode" into the frontend (and hit enter), and then hit the key combination you want. It might tell you the correct key code you need to stick into the "id" attribute to map it to the action you want. It's also possible that the cmd/option key works as its own key, and not a modifier that will give you a single key code for a cmd/option+other_key combination. In that case, you would need to do something like:
Code:
<key id='keycode_for_cmd/option'>
<key id='second_keycode' action='cursor_home'/>
<key id='third_keycode' action='cursor_end'/>
</key>
It's also possible that the terminal will not send that keycode to profanity at all, and it simply can't be used with that terminal.
4. Sure, add 1 to the top of the main window, and subtract 1 from its height.