Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

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

# vim: ft=python fileencoding=utf-8 sts=4 sw=4 et: 

 

# Copyright 2014-2018 Florian Bruhin (The Compiler) <mail@qutebrowser.org> 

# 

# This file is part of qutebrowser. 

# 

# qutebrowser is free software: you can redistribute it and/or modify 

# it under the terms of the GNU General Public License as published by 

# the Free Software Foundation, either version 3 of the License, or 

# (at your option) any later version. 

# 

# qutebrowser is distributed in the hope that it will be useful, 

# but WITHOUT ANY WARRANTY; without even the implied warranty of 

# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 

# GNU General Public License for more details. 

# 

# You should have received a copy of the GNU General Public License 

# along with qutebrowser. If not, see <http://www.gnu.org/licenses/>. 

 

"""Functions that return config-related completion models.""" 

 

from qutebrowser.config import configdata, configexc 

from qutebrowser.completion.models import completionmodel, listcategory, util 

from qutebrowser.commands import runners, cmdexc 

 

 

def option(*, info): 

"""A CompletionModel filled with settings and their descriptions.""" 

model = completionmodel.CompletionModel(column_widths=(20, 70, 10)) 

options = ((opt.name, opt.description, info.config.get_str(opt.name)) 

for opt in configdata.DATA.values()) 

model.add_category(listcategory.ListCategory("Options", options)) 

return model 

 

 

def customized_option(*, info): 

"""A CompletionModel filled with set settings and their descriptions.""" 

model = completionmodel.CompletionModel(column_widths=(20, 70, 10)) 

options = ((opt.name, opt.description, info.config.get_str(opt.name)) 

for opt, _value in info.config) 

model.add_category(listcategory.ListCategory("Customized options", 

options)) 

return model 

 

 

def value(optname, *_values, info): 

"""A CompletionModel filled with setting values. 

 

Args: 

optname: The name of the config option this model shows. 

_values: The values already provided on the command line. 

info: A CompletionInfo instance. 

""" 

model = completionmodel.CompletionModel(column_widths=(30, 70, 0)) 

 

try: 

current = info.config.get_str(optname) 

except configexc.NoOptionError: 

return None 

 

opt = info.config.get_opt(optname) 

default = opt.typ.to_str(opt.default) 

cur_cat = listcategory.ListCategory( 

"Current/Default", 

[(current, "Current value"), (default, "Default value")]) 

model.add_category(cur_cat) 

 

vals = opt.typ.complete() 

if vals is not None: 

model.add_category(listcategory.ListCategory("Completions", vals)) 

return model 

 

 

def bind(key, *, info): 

"""A CompletionModel filled with all bindable commands and descriptions. 

 

Args: 

key: the key being bound. 

""" 

model = completionmodel.CompletionModel(column_widths=(20, 60, 20)) 

data = [] 

 

cmd_text = info.keyconf.get_command(key, 'normal') 

if cmd_text: 

parser = runners.CommandParser() 

try: 

cmd = parser.parse(cmd_text).cmd 

except cmdexc.NoSuchCommandError: 

data.append((cmd_text, '(Current) Invalid command!', key)) 

else: 

data.append((cmd_text, '(Current) {}'.format(cmd.desc), key)) 

 

cmd_text = info.keyconf.get_command(key, 'normal', default=True) 

if cmd_text: 

parser = runners.CommandParser() 

cmd = parser.parse(cmd_text).cmd 

data.append((cmd_text, '(Default) {}'.format(cmd.desc), key)) 

 

if data: 

model.add_category(listcategory.ListCategory("Current/Default", data)) 

 

cmdlist = util.get_cmd_completions(info, include_hidden=True, 

include_aliases=True) 

model.add_category(listcategory.ListCategory("Commands", cmdlist)) 

return model