aboutsummaryrefslogtreecommitdiff
path: root/doc/08_Themes.md
blob: 64d721c514cf2bfd4c7997e702e3bf5b2ba901b0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# Themes

Textadept's look and feel can be customized with themes. The themes that come
with Textadept are `light`, `dark`, and `term`. By default the `light` theme is
used for GUI environments and `term` for terminal environments. To change the
theme, create a `~/.textadept/theme` and/or `~/.textadept/theme_term` whose
first lines of text are the names of the themes you would like to use.

![Light Theme](images/lighttheme.png)
    
![Dark Theme](images/darktheme.png)

Themes apply to all buffers. You cannot assign a theme to a particular file or
filetype. You can change things like tab and indent settings per filetype
however by creating a [language-specific module].

[language-specific module]: 7_Modules.html#Buffer.Properties

## Creating or Modifying Themes

Each theme is a single folder on the filesystem composed of three files:
`lexer.lua`, `buffer.lua`, and `view.lua`. It is recommended to put themes in
your `~/.textadept/themes/` directory so they will not be overwritten when you
update Textadept. Themes in that directory override any themes in Textadept's
`themes/` directory. This means that if you have your own `light` theme, it will
be loaded instead of the one that comes with Textadept.

To use a theme not located in `~/.textadept/themes/` or Textadept's `themes/`
directory, you need to specify an absolute path to the theme's folder in your
`~/.textadept/theme` file.

### Lexer

Textadept uses lexers to assign names to buffer elements like comments, strings,
and keywords. These elements are assigned styles composed of font and color
information in the theme's `lexer.lua`. See the `Styling Tokens` section of the
[lexer][] page for more information on how to create styles and colors.

[lexer]: api/lexer.html

### Buffer

`buffer.lua` contains buffer-specific properties like indentation size and
whether or not to use tabs. For example, to set the default tab size to 4 and
use tabs:

    buffer.tab_width = 4
    buffer.use_tabs = true
    buffer.indent = 4

See the [LuaDoc][] for documentation on the properties.

[LuaDoc]: api/buffer.html

### View

`view.lua` contains view-specific properties like caret and selection colors.
See the [LuaDoc][] for documentation on the properties.

[LuaDoc]: api/buffer.html

## Testing Themes

You can reload or switch between themes on the fly using `Ctrl+Shift+T` (⌘⇧T on
Mac OSX), but be aware that the Scintilla views do not reset themselves, so any
options set explicitly in the previous theme's `view.lua` file that are not set
explicitly in the new theme will carry over. The switch feature is intended
primarily for theme exploration and/or development and can be slow when many
buffers or views are open.

Any errors that occur in the theme are printed to `io.stderr`.

## Theming the GUI

There is no way to theme GUI controls like text fields and buttons from within
Textadept. Instead, use [GTK Resource files][]. The `GtkWindow` name is
`textadept`. For example, styling all text fields with a
`"textadept-entry-style"` would be done like this:

    widget "textadept*GtkEntry*" style "textadept-entry-style"

[GTK Resource files]: http://library.gnome.org/devel/gtk/stable/gtk-Resource-Files.html

## Getting Themes

For now, user-created themes are obtained from the [wiki][]. The classic `dark`,
`light`, and `scite` themes prior to version 4.3 have been moved there.

[wiki]: http://foicica.com/wiki/textadept