aboutsummaryrefslogtreecommitdiffhomepage
path: root/core/init.lua
blob: a9a7d554f5995d6641bd3a5c50925bda932fcdfa (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
-- Copyright 2007-2012 Mitchell mitchell<att>caladbolg.net. See LICENSE.

_RELEASE = "Textadept 5.0 alpha"

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`][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](../modules/io.html).
-- * `_L` [table]: Contains all messages used by Textadept for localization.
-- * `RESETTING` [bool]: If [`reset()`](../modules/_G.html#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.1/manual.html#pdf-package.path

---
-- 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
]]