aboutsummaryrefslogtreecommitdiff
path: root/core/init.lua
blob: 8f7fd360722801ca161da1141ccddefb86bd98e2 (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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
-- Copyright 2007-2012 Mitchell mitchell<att>caladbolg.net. See LICENSE.

_RELEASE = "Textadept 5.1"

package.path = _HOME..'/core/?.lua;'..package.path
os.setlocale('C', 'collate')

if jit then require 'compat' end -- compatibility for LuaJIT
_SCINTILLA = require 'iface'
args = require 'args'
_L = require 'locale'
events = require 'events'
require 'file_io'
require 'gui'
keys = require 'keys'

_LEXERPATH = _USERHOME..'/lexers/?.lua;'.._HOME..'/lexers'

gui.set_theme()

_M = {} -- modules table

--[[ This comment is for LuaDoc.
--- Extends Lua's _G table to provide extra functions and fields.
module('_G')]]

-- Markdown:
-- ## Fields
--
-- * `_HOME` [string]
--   Path to the directory containing Textadept.
-- * `_LEXERPATH` [string]
--   Paths to lexers, formatted like [`package.path`][].
-- * `_RELEASE` [string]
--   The Textadept release version.
-- * `_USERHOME` [string]
--   Path to the user's `~/.textadept/`.
-- * `_CHARSET` [string]
--   The character set encoding of the filesystem.
--   This is used in [File I/O][].
-- * `RESETTING` [bool]
--   If [`reset()`](#reset) has been called, this flag is `true` while the Lua
--   state is being re-initialized.
-- * `WIN32` [bool]
--   If Textadept is running on Windows, this flag is `true`.
-- * `OSX` [bool]
--   If Textadept is running on Mac OSX, this flag is `true`.
--
-- [`package.path`]: http://www.lua.org/manual/5.2/manual.html#pdf-package.path
-- [File I/O]: io.html

---
-- Calls `dofile()` on the given filename in the user's Textadept directory.
-- Errors are printed to the Textadept message buffer.
-- @param filename The name of the file (not path).
-- @return true if successful; false otherwise.
-- @see dofile
function user_dofile(filename)
  if not lfs.attributes(_USERHOME..'/'..filename) then return false end
  local ok, err = pcall(dofile, _USERHOME..'/'..filename)
  if not ok then gui.print(err) end
  return ok
end

--[[ The tables below were defined in C.

---
-- Command line parameters.
-- @class table
-- @name arg
local arg

---
-- Table of all open buffers in Textadept.
-- Numeric keys have buffer values and buffer keys have their associated numeric
-- keys.
-- @class table
-- @name _BUFFERS
-- @usage _BUFFERS[1] contains the first buffer.
-- @usage _BUFFERS[buffer] returns the index of the current buffer in _BUFFERS.
local _BUFFERS

---
-- Table of all views in Textadept.
-- Numeric keys have view values and view keys have their associated numeric
-- keys.
-- @class table
-- @name _VIEWS
-- @usage _VIEWS[1] contains the first view.
-- @usage _VIEWS[view] returns the index of the current view in _VIEWS.
local _VIEWS

-- The functions below are Lua C functions.

---
-- Creates a new buffer.
-- Generates a `BUFFER_NEW` event.
-- @return the new buffer.
-- @class function
-- @name new_buffer
local new_buffer

---
-- Quits Textadept.
-- @class function
-- @name quit
local quit

---
-- Resets the Lua state by reloading all init scripts.
-- Language-specific modules for opened files are NOT reloaded. Re-opening the
-- files that use them will reload those modules.
-- This function is useful for modifying init scripts (such as the user's
-- `modules/textadept/keys.lua`) on the fly without having to restart Textadept.
-- `_G.RESETTING` is set to `true` when re-initing the Lua State. Any scripts
-- that need to differentiate between startup and reset can utilize this
-- variable.
-- @class function
-- @name reset
local reset

---
-- Calls a given function after an interval of time.
-- To repeatedly call the function, return true inside the function. A `nil` or
-- `false` return value stops repetition.
-- @param interval The interval in seconds to call the function after.
-- @param f The function to call.
-- @param ... Additional arguments to pass to `f`.
-- @class function
-- @name timeout
local timeout
]]