├── .no-sublime-package ├── Pebble.py ├── Pebble.sublime-build ├── Pebble.sublime-commands ├── Pebble.sublime-settings ├── README.md ├── generate_completions.py ├── pebble.sublime-completions └── pebble_worker.sublime-completions /.no-sublime-package: -------------------------------------------------------------------------------- 1 | generate_completions.py 2 | -------------------------------------------------------------------------------- /Pebble.py: -------------------------------------------------------------------------------- 1 | import sublime, sublime_plugin 2 | import subprocess 3 | import os 4 | import shlex 5 | 6 | settings = sublime.load_settings('Pebble.sublime-settings') 7 | 8 | class Pref: 9 | def load(self): 10 | Pref.pebble_path = settings.get('pebble_path', 'pebble') 11 | Pref.pebble_phone = settings.get('pebble_phone', None) 12 | 13 | Pref = Pref() 14 | Pref.load() 15 | settings.add_on_change('reload', lambda: Pref.load()) 16 | 17 | class PebbleCommand(sublime_plugin.WindowCommand): 18 | def __init__(self, *args, **kwargs): 19 | super(PebbleCommand, self).__init__(*args, **kwargs) 20 | 21 | def run(self, *args, **kwargs): 22 | try: 23 | self.PROJECT_PATH = self.window.folders()[0] 24 | 25 | if os.path.isfile("%s" % os.path.join(self.PROJECT_PATH, 'appinfo.json')): 26 | self.command = kwargs.get('command', None) 27 | self.fill = kwargs.get('fill', False) 28 | self.fill_label = kwargs.get('fill_label', None) 29 | self.fields_accept = kwargs.get('fields_accept', None) 30 | self.args = ['python', Pref.pebble_path] 31 | 32 | if self.command is None: 33 | self.window.show_input_panel('Command name w/o args:', '', self.on_command_custom, None, None) 34 | else: 35 | self.on_command(self.command) 36 | else: 37 | sublime.status_message('App info not found'); 38 | except IndexError: 39 | sublime.status_message('Please open a Pebble project') 40 | 41 | def on_command(self, command): 42 | self.args.extend(shlex.split(str(self.command))) 43 | 44 | if self.fill is True: 45 | self.window.show_input_panel(self.fill_label, "", self.on_fill_in, None, None) 46 | else: 47 | self.on_done() 48 | 49 | def on_fill_in(self, fill_in): 50 | self.args.extend(shlex.split(str(fill_in))) 51 | 52 | if self.fields_accept is True: 53 | self.window.show_input_panel(self.fields_label, "", self.on_fields, None, None) 54 | else: 55 | self.on_done() 56 | 57 | def on_fields(self, fields): 58 | if fields != '': 59 | self.args.append(fields) 60 | self.on_done() 61 | else: 62 | self.on_done() 63 | 64 | def on_command_custom(self, command): 65 | self.args.extend(shlex.split(str(command))) 66 | self.on_done() 67 | 68 | def on_done(self): 69 | if self.command == 'set_pebble_phone': 70 | settings = sublime.load_settings('Pebble.sublime-settings') 71 | settings.set('pebble_phone', self.args[2]) 72 | sublime.save_settings('Pebble.sublime-settings') 73 | else: 74 | # Add the phone IP 75 | self.args.append('--phone') 76 | self.args.append(Pref.pebble_phone) 77 | 78 | if os.name != 'posix': 79 | self.args = subprocess.list2cmdline(self.args) 80 | 81 | try: 82 | self.window.run_command('exec', { 83 | "cmd": self.args, 84 | "shell": False, 85 | "working_dir": self.PROJECT_PATH 86 | }) 87 | except IOError: 88 | sublime.status_message('IOError - Command aborted') 89 | -------------------------------------------------------------------------------- /Pebble.sublime-build: -------------------------------------------------------------------------------- 1 | { 2 | "working_dir": "${project_path:${folder}}", 3 | "cmd": ["pebble", "build"], 4 | "variants": 5 | [ 6 | { 7 | "cmd": ["pebble", "build"], 8 | "name": "PebbleBuild" 9 | }, 10 | { 11 | "cmd": ["pebble", "install", "--emulator", "chalk"], 12 | "name": "Run on Pebble Time Round" 13 | }, 14 | { 15 | "cmd": ["pebble", "install", "--emulator", "basalt"], 16 | "name": "Run on Pebble Time" 17 | }, 18 | { 19 | "cmd": ["pebble", "install", "--emulator", "aplite"], 20 | "name": "Run on Pebble Classic" 21 | }, 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /Pebble.sublime-commands: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "caption": "Pebble: Build", 4 | "command": "pebble", 5 | "args": { 6 | "command": "build" 7 | } 8 | }, 9 | { 10 | "caption": "Pebble: Clean", 11 | "command": "pebble", 12 | "args": { 13 | "command": "clean" 14 | } 15 | }, 16 | { 17 | "caption": "Pebble: Install", 18 | "command": "pebble", 19 | "args": { 20 | "command": "install" 21 | } 22 | }, 23 | { 24 | "caption": "Pebble: Screenshot", 25 | "command": "pebble", 26 | "args": { 27 | "command": "screenshot" 28 | } 29 | }, 30 | { 31 | "caption": "Pebble: Ping", 32 | "command": "pebble", 33 | "args": { 34 | "command": "ping" 35 | } 36 | }, 37 | { 38 | "caption": "Pebble: List", 39 | "command": "pebble", 40 | "args": { 41 | "command": "list" 42 | } 43 | }, 44 | { 45 | "caption": "Pebble: Set Phone", 46 | "command": "pebble", 47 | "args": { 48 | "command": "set_pebble_phone", 49 | "fill": true, 50 | "fill_label": "Enter your phones IP address" 51 | } 52 | }, 53 | { 54 | "caption": "Pebble: Custom Command", 55 | "command": "pebble" 56 | } 57 | ] 58 | -------------------------------------------------------------------------------- /Pebble.sublime-settings: -------------------------------------------------------------------------------- 1 | { 2 | "pebble_path": "pebble", 3 | "pebble_phone": null 4 | } 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Sublime Pebble 2 | 3 | Sublime Pebble aims to be the ultimate package to help developers write watch faces and applications for their [Pebble](https://getpebble.com/) devices. 4 | 5 | This is a work in progress, so there isn't much going on yet, but it will be improved upon! 6 | 7 | # Contributing 8 | 9 | Feel free to contribute! There is a lot left to do, commands to add, things to make better. The only thing I ask is that you stick to the styles and standards already used. 10 | 11 | # What is this? 12 | 13 | ## Compatibility 14 | Sublime Pebble is currently compatible with `V2.7` of the SDK. 15 | 16 | ## Installation 17 | 18 | You can install via Package Control, just search "Pebble". 19 | 20 | ## Commands 21 | 22 | Sublime Pebble uses the command palette to respond to these commands: 23 | 24 | 1. `build` 25 | 2. `clean` 26 | 3. `install` 27 | 4. `screenshot` 28 | 5. `ping` 29 | 6. `list` 30 | 31 | You can also supply a custom command (without parameters at the moment). 32 | 33 | ## Completions 34 | 35 | Currently there are only completions for the Foundation set of modules and a subset of the constant values. 36 | 37 | # License 38 | 39 | [MIT](http://jbrooksuk.mit-license.org) 40 | -------------------------------------------------------------------------------- /generate_completions.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # encoding: utf-8 3 | 4 | """ 5 | Generate sublime-completions file from Pebble header file. 6 | Usage : python generate.py /path/to/pebble.h /path/to/pebble.sublime-completions 7 | """ 8 | 9 | import sys 10 | import getopt 11 | import re 12 | 13 | def generate(header, output): 14 | pattern = r'^\w+\*?\s+\*?(\w+)\(([^\\/\(\)]*)\);' 15 | regex = re.compile(pattern, re.MULTILINE) 16 | 17 | f = open(header,'r') 18 | procs = [(i.group(1), i.group(2)) for i in regex.finditer(f.read())] 19 | f.close() 20 | 21 | content = '' 22 | content += '{\n' 23 | content += '\t"scope": "source",\n' 24 | content += '\t"completions": [\n' 25 | 26 | for i, proc in enumerate(procs): 27 | content += '\t\t{"trigger": "' + proc[0] + '", "contents": "' + proc[0] + '(' 28 | 29 | varnames = proc[1].split(',') 30 | for j, varname in enumerate(varnames): 31 | varname = varname.split()[-1].split('*')[-1] 32 | content += '${' + str(j+1) + ':' + varname + '}' 33 | if j < len(varnames) - 1: content += ',' 34 | 35 | content += ');"}' 36 | if i < len(procs) - 1: content += ',' 37 | content += '\n' 38 | 39 | content += '\t]\n' 40 | content += '}\n' 41 | 42 | f = open(output,"w") 43 | f.write(content) 44 | f.close() 45 | 46 | 47 | def main(): 48 | # parse command line options 49 | try: 50 | opts, args = getopt.getopt(sys.argv[1:], "h", ["help"]) 51 | except getopt.error, msg: 52 | print msg 53 | print "for help use --help" 54 | sys.exit(2) 55 | # process options 56 | for o, a in opts: 57 | if o in ("-h", "--help"): 58 | print __doc__ 59 | sys.exit(0) 60 | # process arguments 61 | if(len(args) == 2): 62 | generate(args[0], args[1]) 63 | else: 64 | print "2 arguments are expected" 65 | print "for help use --help" 66 | sys.exit(2) 67 | 68 | if __name__ == "__main__": 69 | sys.exit(main()) 70 | -------------------------------------------------------------------------------- /pebble.sublime-completions: -------------------------------------------------------------------------------- 1 | { 2 | "scope": "source", 3 | "completions": [ 4 | {"trigger": "watch_info_get_model", "contents": "watch_info_get_model(${1:void});"}, 5 | {"trigger": "watch_info_get_firmware_version", "contents": "watch_info_get_firmware_version(${1:void});"}, 6 | {"trigger": "watch_info_get_color", "contents": "watch_info_get_color(${1:void});"}, 7 | {"trigger": "sin_lookup", "contents": "sin_lookup(${1:angle});"}, 8 | {"trigger": "cos_lookup", "contents": "cos_lookup(${1:angle});"}, 9 | {"trigger": "atan2_lookup", "contents": "atan2_lookup(${1:y},${2:x});"}, 10 | {"trigger": "clock_copy_time_string", "contents": "clock_copy_time_string(${1:buffer},${2:size});"}, 11 | {"trigger": "clock_is_24h_style", "contents": "clock_is_24h_style(${1:void});"}, 12 | {"trigger": "clock_to_timestamp", "contents": "clock_to_timestamp(${1:day},${2:hour},${3:minute});"}, 13 | {"trigger": "clock_is_timezone_set", "contents": "clock_is_timezone_set(${1:void});"}, 14 | {"trigger": "clock_get_timezone", "contents": "clock_get_timezone(${1:timezone},${2:buffer_size});"}, 15 | {"trigger": "bluetooth_connection_service_peek", "contents": "bluetooth_connection_service_peek(${1:void});"}, 16 | {"trigger": "bluetooth_connection_service_subscribe", "contents": "bluetooth_connection_service_subscribe(${1:handler});"}, 17 | {"trigger": "bluetooth_connection_service_unsubscribe", "contents": "bluetooth_connection_service_unsubscribe(${1:void});"}, 18 | {"trigger": "app_focus_service_subscribe", "contents": "app_focus_service_subscribe(${1:handler});"}, 19 | {"trigger": "app_focus_service_unsubscribe", "contents": "app_focus_service_unsubscribe(${1:void});"}, 20 | {"trigger": "battery_state_service_subscribe", "contents": "battery_state_service_subscribe(${1:handler});"}, 21 | {"trigger": "battery_state_service_unsubscribe", "contents": "battery_state_service_unsubscribe(${1:void});"}, 22 | {"trigger": "battery_state_service_peek", "contents": "battery_state_service_peek(${1:void});"}, 23 | {"trigger": "accel_service_peek", "contents": "accel_service_peek(${1:data});"}, 24 | {"trigger": "accel_service_set_sampling_rate", "contents": "accel_service_set_sampling_rate(${1:rate});"}, 25 | {"trigger": "accel_service_set_samples_per_update", "contents": "accel_service_set_samples_per_update(${1:num_samples});"}, 26 | {"trigger": "accel_data_service_subscribe", "contents": "accel_data_service_subscribe(${1:samples_per_update},${2:handler});"}, 27 | {"trigger": "accel_data_service_unsubscribe", "contents": "accel_data_service_unsubscribe(${1:void});"}, 28 | {"trigger": "accel_tap_service_subscribe", "contents": "accel_tap_service_subscribe(${1:handler});"}, 29 | {"trigger": "accel_tap_service_unsubscribe", "contents": "accel_tap_service_unsubscribe(${1:void});"}, 30 | {"trigger": "accel_raw_data_service_subscribe", "contents": "accel_raw_data_service_subscribe(${1:samples_per_update},${2:handler});"}, 31 | {"trigger": "compass_service_set_heading_filter", "contents": "compass_service_set_heading_filter(${1:filter});"}, 32 | {"trigger": "compass_service_subscribe", "contents": "compass_service_subscribe(${1:handler});"}, 33 | {"trigger": "compass_service_unsubscribe", "contents": "compass_service_unsubscribe(${1:void});"}, 34 | {"trigger": "compass_service_peek", "contents": "compass_service_peek(${1:data});"}, 35 | {"trigger": "tick_timer_service_subscribe", "contents": "tick_timer_service_subscribe(${1:tick_units},${2:handler});"}, 36 | {"trigger": "tick_timer_service_unsubscribe", "contents": "tick_timer_service_unsubscribe(${1:void});"}, 37 | {"trigger": "data_logging_create", "contents": "data_logging_create(${1:tag},${2:item_type},${3:item_length},${4:resume});"}, 38 | {"trigger": "data_logging_finish", "contents": "data_logging_finish(${1:logging_session});"}, 39 | {"trigger": "data_logging_log", "contents": "data_logging_log(${1:logging_session},${2:data},${3:num_items});"}, 40 | {"trigger": "uuid_equal", "contents": "uuid_equal(${1:uu1},${2:uu2});"}, 41 | {"trigger": "uuid_to_string", "contents": "uuid_to_string(${1:uuid},${2:buffer});"}, 42 | {"trigger": "dict_calc_buffer_size", "contents": "dict_calc_buffer_size(${1:tuple_count},${2:...});"}, 43 | {"trigger": "dict_size", "contents": "dict_size(${1:iter});"}, 44 | {"trigger": "dict_write_begin", "contents": "dict_write_begin(${1:iter},${2:buffer},${3:size});"}, 45 | {"trigger": "dict_write_data", "contents": "dict_write_data(${1:iter},${2:key},${3:data},${4:size});"}, 46 | {"trigger": "dict_write_cstring", "contents": "dict_write_cstring(${1:iter},${2:key},${3:cstring});"}, 47 | {"trigger": "dict_write_int", "contents": "dict_write_int(${1:iter},${2:key},${3:integer},${4:width_bytes},${5:is_signed});"}, 48 | {"trigger": "dict_write_uint8", "contents": "dict_write_uint8(${1:iter},${2:key},${3:value});"}, 49 | {"trigger": "dict_write_uint16", "contents": "dict_write_uint16(${1:iter},${2:key},${3:value});"}, 50 | {"trigger": "dict_write_uint32", "contents": "dict_write_uint32(${1:iter},${2:key},${3:value});"}, 51 | {"trigger": "dict_write_int8", "contents": "dict_write_int8(${1:iter},${2:key},${3:value});"}, 52 | {"trigger": "dict_write_int16", "contents": "dict_write_int16(${1:iter},${2:key},${3:value});"}, 53 | {"trigger": "dict_write_int32", "contents": "dict_write_int32(${1:iter},${2:key},${3:value});"}, 54 | {"trigger": "dict_write_end", "contents": "dict_write_end(${1:iter});"}, 55 | {"trigger": "dict_serialize_tuplets", "contents": "dict_serialize_tuplets(${1:callback},${2:context},${3:tuplets},${4:tuplets_count});"}, 56 | {"trigger": "dict_serialize_tuplets_to_buffer", "contents": "dict_serialize_tuplets_to_buffer(${1:tuplets},${2:tuplets_count},${3:buffer},${4:size_in_out});"}, 57 | {"trigger": "dict_serialize_tuplets_to_buffer_with_iter", "contents": "dict_serialize_tuplets_to_buffer_with_iter(${1:iter},${2:tuplets},${3:tuplets_count},${4:buffer},${5:size_in_out});"}, 58 | {"trigger": "dict_write_tuplet", "contents": "dict_write_tuplet(${1:iter},${2:tuplet});"}, 59 | {"trigger": "dict_calc_buffer_size_from_tuplets", "contents": "dict_calc_buffer_size_from_tuplets(${1:tuplets},${2:tuplets_count});"}, 60 | {"trigger": "dict_merge", "contents": "dict_merge(${1:dest},${2:dest_max_size_in_out},${3:source},${4:update_existing_keys_only},${5:key_callback},${6:context});"}, 61 | {"trigger": "dict_find", "contents": "dict_find(${1:iter},${2:key});"}, 62 | {"trigger": "app_message_open", "contents": "app_message_open(${1:size_inbound},${2:size_outbound});"}, 63 | {"trigger": "app_message_deregister_callbacks", "contents": "app_message_deregister_callbacks(${1:void});"}, 64 | {"trigger": "app_message_get_context", "contents": "app_message_get_context(${1:void});"}, 65 | {"trigger": "app_message_set_context", "contents": "app_message_set_context(${1:context});"}, 66 | {"trigger": "app_message_register_inbox_received", "contents": "app_message_register_inbox_received(${1:received_callback});"}, 67 | {"trigger": "app_message_register_inbox_dropped", "contents": "app_message_register_inbox_dropped(${1:dropped_callback});"}, 68 | {"trigger": "app_message_register_outbox_sent", "contents": "app_message_register_outbox_sent(${1:sent_callback});"}, 69 | {"trigger": "app_message_register_outbox_failed", "contents": "app_message_register_outbox_failed(${1:failed_callback});"}, 70 | {"trigger": "app_message_inbox_size_maximum", "contents": "app_message_inbox_size_maximum(${1:void});"}, 71 | {"trigger": "app_message_outbox_size_maximum", "contents": "app_message_outbox_size_maximum(${1:void});"}, 72 | {"trigger": "app_message_outbox_begin", "contents": "app_message_outbox_begin(${1:iterator});"}, 73 | {"trigger": "app_message_outbox_send", "contents": "app_message_outbox_send(${1:void});"}, 74 | {"trigger": "app_sync_init", "contents": "app_sync_init(${1:s},${2:buffer},${3:buffer_size},${4:keys_and_initial_values},${5:count},${6:tuple_changed_callback},${7:error_callback},${8:context});"}, 75 | {"trigger": "app_sync_deinit", "contents": "app_sync_deinit(${1:s});"}, 76 | {"trigger": "app_sync_set", "contents": "app_sync_set(${1:s},${2:keys_and_values_to_update},${3:count});"}, 77 | {"trigger": "resource_get_handle", "contents": "resource_get_handle(${1:resource_id});"}, 78 | {"trigger": "resource_size", "contents": "resource_size(${1:h});"}, 79 | {"trigger": "resource_load", "contents": "resource_load(${1:h},${2:buffer},${3:max_length});"}, 80 | {"trigger": "resource_load_byte_range", "contents": "resource_load_byte_range(${1:h},${2:start_offset},${3:buffer},${4:num_bytes});"}, 81 | {"trigger": "app_event_loop", "contents": "app_event_loop(${1:void});"}, 82 | {"trigger": "app_worker_is_running", "contents": "app_worker_is_running(${1:void});"}, 83 | {"trigger": "app_worker_launch", "contents": "app_worker_launch(${1:void});"}, 84 | {"trigger": "app_worker_kill", "contents": "app_worker_kill(${1:void});"}, 85 | {"trigger": "app_worker_message_subscribe", "contents": "app_worker_message_subscribe(${1:handler});"}, 86 | {"trigger": "app_worker_message_unsubscribe", "contents": "app_worker_message_unsubscribe(${1:void});"}, 87 | {"trigger": "app_worker_send_message", "contents": "app_worker_send_message(${1:type},${2:data});"}, 88 | {"trigger": "app_comm_set_sniff_interval", "contents": "app_comm_set_sniff_interval(${1:interval});"}, 89 | {"trigger": "app_comm_get_sniff_interval", "contents": "app_comm_get_sniff_interval(${1:void});"}, 90 | {"trigger": "psleep", "contents": "psleep(${1:millis});"}, 91 | {"trigger": "app_timer_register", "contents": "app_timer_register(${1:timeout_ms},${2:callback},${3:callback_data});"}, 92 | {"trigger": "app_timer_reschedule", "contents": "app_timer_reschedule(${1:timer_handle},${2:new_timeout_ms});"}, 93 | {"trigger": "app_timer_cancel", "contents": "app_timer_cancel(${1:timer_handle});"}, 94 | {"trigger": "heap_bytes_free", "contents": "heap_bytes_free(${1:void});"}, 95 | {"trigger": "heap_bytes_used", "contents": "heap_bytes_used(${1:void});"}, 96 | {"trigger": "persist_exists", "contents": "persist_exists(${1:key});"}, 97 | {"trigger": "persist_get_size", "contents": "persist_get_size(${1:key});"}, 98 | {"trigger": "persist_read_bool", "contents": "persist_read_bool(${1:key});"}, 99 | {"trigger": "persist_read_int", "contents": "persist_read_int(${1:key});"}, 100 | {"trigger": "persist_read_data", "contents": "persist_read_data(${1:key},${2:buffer},${3:buffer_size});"}, 101 | {"trigger": "persist_read_string", "contents": "persist_read_string(${1:key},${2:buffer},${3:buffer_size});"}, 102 | {"trigger": "persist_write_bool", "contents": "persist_write_bool(${1:key},${2:value});"}, 103 | {"trigger": "persist_write_int", "contents": "persist_write_int(${1:key},${2:value});"}, 104 | {"trigger": "persist_write_data", "contents": "persist_write_data(${1:key},${2:data},${3:size});"}, 105 | {"trigger": "persist_write_string", "contents": "persist_write_string(${1:key},${2:cstring});"}, 106 | {"trigger": "persist_delete", "contents": "persist_delete(${1:key});"}, 107 | {"trigger": "wakeup_service_subscribe", "contents": "wakeup_service_subscribe(${1:handler});"}, 108 | {"trigger": "wakeup_schedule", "contents": "wakeup_schedule(${1:timestamp},${2:cookie},${3:notify_if_missed});"}, 109 | {"trigger": "wakeup_cancel", "contents": "wakeup_cancel(${1:wakeup_id});"}, 110 | {"trigger": "wakeup_cancel_all", "contents": "wakeup_cancel_all(${1:void});"}, 111 | {"trigger": "wakeup_get_launch_event", "contents": "wakeup_get_launch_event(${1:wakeup_id},${2:cookie});"}, 112 | {"trigger": "wakeup_query", "contents": "wakeup_query(${1:wakeup_id},${2:timestamp});"}, 113 | {"trigger": "launch_reason", "contents": "launch_reason(${1:void});"}, 114 | {"trigger": "launch_get_args", "contents": "launch_get_args(${1:void});"}, 115 | {"trigger": "gcolor_equal", "contents": "gcolor_equal(${1:x},${2:y});"}, 116 | {"trigger": "gpoint_equal", "contents": "gpoint_equal(${1:point_a},${2:point_b});"}, 117 | {"trigger": "gsize_equal", "contents": "gsize_equal(${1:size_a},${2:size_b});"}, 118 | {"trigger": "grect_equal", "contents": "grect_equal(${1:rect_a},${2:rect_b});"}, 119 | {"trigger": "grect_is_empty", "contents": "grect_is_empty(${1:rect});"}, 120 | {"trigger": "grect_standardize", "contents": "grect_standardize(${1:rect});"}, 121 | {"trigger": "grect_clip", "contents": "grect_clip(${1:rect_to_clip},${2:rect_clipper});"}, 122 | {"trigger": "grect_contains_point", "contents": "grect_contains_point(${1:rect},${2:point});"}, 123 | {"trigger": "grect_center_point", "contents": "grect_center_point(${1:rect});"}, 124 | {"trigger": "grect_crop", "contents": "grect_crop(${1:rect},${2:crop_size_px});"}, 125 | {"trigger": "gbitmap_get_bytes_per_row", "contents": "gbitmap_get_bytes_per_row(${1:bitmap});"}, 126 | {"trigger": "gbitmap_get_format", "contents": "gbitmap_get_format(${1:bitmap});"}, 127 | {"trigger": "gbitmap_get_data", "contents": "gbitmap_get_data(${1:bitmap});"}, 128 | {"trigger": "gbitmap_set_data", "contents": "gbitmap_set_data(${1:bitmap},${2:data},${3:format},${4:row_size_bytes},${5:free_on_destroy});"}, 129 | {"trigger": "gbitmap_get_bounds", "contents": "gbitmap_get_bounds(${1:bitmap});"}, 130 | {"trigger": "gbitmap_set_bounds", "contents": "gbitmap_set_bounds(${1:bitmap},${2:bounds});"}, 131 | {"trigger": "gbitmap_get_palette", "contents": "gbitmap_get_palette(${1:bitmap});"}, 132 | {"trigger": "gbitmap_set_palette", "contents": "gbitmap_set_palette(${1:bitmap},${2:palette},${3:free_on_destroy});"}, 133 | {"trigger": "gbitmap_create_with_resource", "contents": "gbitmap_create_with_resource(${1:resource_id});"}, 134 | {"trigger": "gbitmap_create_with_data", "contents": "gbitmap_create_with_data(${1:data});"}, 135 | {"trigger": "gbitmap_create_as_sub_bitmap", "contents": "gbitmap_create_as_sub_bitmap(${1:base_bitmap},${2:sub_rect});"}, 136 | {"trigger": "gbitmap_create_from_png_data", "contents": "gbitmap_create_from_png_data(${1:png_data},${2:png_data_size});"}, 137 | {"trigger": "gbitmap_create_blank", "contents": "gbitmap_create_blank(${1:size},${2:format});"}, 138 | {"trigger": "gbitmap_create_blank_with_palette", "contents": "gbitmap_create_blank_with_palette(${1:size},${2:format},${3:palette},${4:free_on_destroy});"}, 139 | {"trigger": "gbitmap_create_palettized_from_1bit", "contents": "gbitmap_create_palettized_from_1bit(${1:src_bitmap});"}, 140 | {"trigger": "gbitmap_destroy", "contents": "gbitmap_destroy(${1:bitmap});"}, 141 | {"trigger": "gbitmap_sequence_create_with_resource", "contents": "gbitmap_sequence_create_with_resource(${1:resource_id});"}, 142 | {"trigger": "gbitmap_sequence_update_bitmap_next_frame", "contents": "gbitmap_sequence_update_bitmap_next_frame(${1:bitmap_sequence},${2:bitmap},${3:delay_ms});"}, 143 | {"trigger": "gbitmap_sequence_update_bitmap_by_elapsed", "contents": "gbitmap_sequence_update_bitmap_by_elapsed(${1:bitmap_sequence},${2:bitmap},${3:elapsed_ms});"}, 144 | {"trigger": "gbitmap_sequence_destroy", "contents": "gbitmap_sequence_destroy(${1:bitmap_sequence});"}, 145 | {"trigger": "gbitmap_sequence_restart", "contents": "gbitmap_sequence_restart(${1:bitmap_sequence});"}, 146 | {"trigger": "gbitmap_sequence_get_current_frame_idx", "contents": "gbitmap_sequence_get_current_frame_idx(${1:bitmap_sequence});"}, 147 | {"trigger": "gbitmap_sequence_get_total_num_frames", "contents": "gbitmap_sequence_get_total_num_frames(${1:bitmap_sequence});"}, 148 | {"trigger": "gbitmap_sequence_get_play_count", "contents": "gbitmap_sequence_get_play_count(${1:bitmap_sequence});"}, 149 | {"trigger": "gbitmap_sequence_set_play_count", "contents": "gbitmap_sequence_set_play_count(${1:bitmap_sequence},${2:play_count});"}, 150 | {"trigger": "gbitmap_sequence_get_bitmap_size", "contents": "gbitmap_sequence_get_bitmap_size(${1:bitmap_sequence});"}, 151 | {"trigger": "grect_align", "contents": "grect_align(${1:rect},${2:inside_rect},${3:alignment},${4:clip});"}, 152 | {"trigger": "graphics_context_set_stroke_color", "contents": "graphics_context_set_stroke_color(${1:ctx},${2:color});"}, 153 | {"trigger": "graphics_context_set_fill_color", "contents": "graphics_context_set_fill_color(${1:ctx},${2:color});"}, 154 | {"trigger": "graphics_context_set_text_color", "contents": "graphics_context_set_text_color(${1:ctx},${2:color});"}, 155 | {"trigger": "graphics_context_set_compositing_mode", "contents": "graphics_context_set_compositing_mode(${1:ctx},${2:mode});"}, 156 | {"trigger": "graphics_context_set_antialiased", "contents": "graphics_context_set_antialiased(${1:ctx},${2:enable});"}, 157 | {"trigger": "graphics_context_set_stroke_width", "contents": "graphics_context_set_stroke_width(${1:ctx},${2:stroke_width});"}, 158 | {"trigger": "graphics_draw_pixel", "contents": "graphics_draw_pixel(${1:ctx},${2:point});"}, 159 | {"trigger": "graphics_draw_line", "contents": "graphics_draw_line(${1:ctx},${2:p0},${3:p1});"}, 160 | {"trigger": "graphics_draw_rect", "contents": "graphics_draw_rect(${1:ctx},${2:rect});"}, 161 | {"trigger": "graphics_fill_rect", "contents": "graphics_fill_rect(${1:ctx},${2:rect},${3:corner_radius},${4:corner_mask});"}, 162 | {"trigger": "graphics_draw_circle", "contents": "graphics_draw_circle(${1:ctx},${2:p},${3:radius});"}, 163 | {"trigger": "graphics_fill_circle", "contents": "graphics_fill_circle(${1:ctx},${2:p},${3:radius});"}, 164 | {"trigger": "graphics_draw_round_rect", "contents": "graphics_draw_round_rect(${1:ctx},${2:rect},${3:radius});"}, 165 | {"trigger": "graphics_draw_bitmap_in_rect", "contents": "graphics_draw_bitmap_in_rect(${1:ctx},${2:bitmap},${3:rect});"}, 166 | {"trigger": "graphics_capture_frame_buffer", "contents": "graphics_capture_frame_buffer(${1:ctx});"}, 167 | {"trigger": "graphics_capture_frame_buffer_format", "contents": "graphics_capture_frame_buffer_format(${1:ctx},${2:format});"}, 168 | {"trigger": "graphics_release_frame_buffer", "contents": "graphics_release_frame_buffer(${1:ctx},${2:buffer});"}, 169 | {"trigger": "graphics_frame_buffer_is_captured", "contents": "graphics_frame_buffer_is_captured(${1:ctx});"}, 170 | {"trigger": "graphics_draw_rotated_bitmap", "contents": "graphics_draw_rotated_bitmap(${1:ctx},${2:src},${3:src_ic},${4:rotation},${5:dest_ic});"}, 171 | {"trigger": "gdraw_command_draw", "contents": "gdraw_command_draw(${1:ctx},${2:command});"}, 172 | {"trigger": "gdraw_command_get_type", "contents": "gdraw_command_get_type(${1:command});"}, 173 | {"trigger": "gdraw_command_set_fill_color", "contents": "gdraw_command_set_fill_color(${1:command},${2:fill_color});"}, 174 | {"trigger": "gdraw_command_get_fill_color", "contents": "gdraw_command_get_fill_color(${1:command});"}, 175 | {"trigger": "gdraw_command_set_stroke_color", "contents": "gdraw_command_set_stroke_color(${1:command},${2:stroke_color});"}, 176 | {"trigger": "gdraw_command_get_stroke_color", "contents": "gdraw_command_get_stroke_color(${1:command});"}, 177 | {"trigger": "gdraw_command_set_stroke_width", "contents": "gdraw_command_set_stroke_width(${1:command},${2:stroke_width});"}, 178 | {"trigger": "gdraw_command_get_stroke_width", "contents": "gdraw_command_get_stroke_width(${1:command});"}, 179 | {"trigger": "gdraw_command_get_num_points", "contents": "gdraw_command_get_num_points(${1:command});"}, 180 | {"trigger": "gdraw_command_set_point", "contents": "gdraw_command_set_point(${1:command},${2:point_idx},${3:point});"}, 181 | {"trigger": "gdraw_command_get_point", "contents": "gdraw_command_get_point(${1:command},${2:point_idx});"}, 182 | {"trigger": "gdraw_command_set_radius", "contents": "gdraw_command_set_radius(${1:command},${2:radius});"}, 183 | {"trigger": "gdraw_command_get_radius", "contents": "gdraw_command_get_radius(${1:command});"}, 184 | {"trigger": "gdraw_command_set_path_open", "contents": "gdraw_command_set_path_open(${1:command},${2:path_open});"}, 185 | {"trigger": "gdraw_command_get_path_open", "contents": "gdraw_command_get_path_open(${1:command});"}, 186 | {"trigger": "gdraw_command_set_hidden", "contents": "gdraw_command_set_hidden(${1:command},${2:hidden});"}, 187 | {"trigger": "gdraw_command_get_hidden", "contents": "gdraw_command_get_hidden(${1:command});"}, 188 | {"trigger": "gdraw_command_frame_draw", "contents": "gdraw_command_frame_draw(${1:ctx},${2:sequence},${3:frame},${4:offset});"}, 189 | {"trigger": "gdraw_command_frame_set_duration", "contents": "gdraw_command_frame_set_duration(${1:frame},${2:duration});"}, 190 | {"trigger": "gdraw_command_frame_get_duration", "contents": "gdraw_command_frame_get_duration(${1:frame});"}, 191 | {"trigger": "gdraw_command_image_create_with_resource", "contents": "gdraw_command_image_create_with_resource(${1:resource_id});"}, 192 | {"trigger": "gdraw_command_image_clone", "contents": "gdraw_command_image_clone(${1:image});"}, 193 | {"trigger": "gdraw_command_image_destroy", "contents": "gdraw_command_image_destroy(${1:image});"}, 194 | {"trigger": "gdraw_command_image_draw", "contents": "gdraw_command_image_draw(${1:ctx},${2:image},${3:offset});"}, 195 | {"trigger": "gdraw_command_image_get_bounds_size", "contents": "gdraw_command_image_get_bounds_size(${1:image});"}, 196 | {"trigger": "gdraw_command_image_set_bounds_size", "contents": "gdraw_command_image_set_bounds_size(${1:image},${2:size});"}, 197 | {"trigger": "gdraw_command_image_get_command_list", "contents": "gdraw_command_image_get_command_list(${1:image});"}, 198 | {"trigger": "gdraw_command_list_iterate", "contents": "gdraw_command_list_iterate(${1:command_list},${2:handle_command},${3:callback_context});"}, 199 | {"trigger": "gdraw_command_list_draw", "contents": "gdraw_command_list_draw(${1:ctx},${2:command_list});"}, 200 | {"trigger": "gdraw_command_list_get_command", "contents": "gdraw_command_list_get_command(${1:command_list},${2:command_idx});"}, 201 | {"trigger": "gdraw_command_list_get_num_commands", "contents": "gdraw_command_list_get_num_commands(${1:command_list});"}, 202 | {"trigger": "gdraw_command_sequence_create_with_resource", "contents": "gdraw_command_sequence_create_with_resource(${1:resource_id});"}, 203 | {"trigger": "gdraw_command_sequence_clone", "contents": "gdraw_command_sequence_clone(${1:sequence});"}, 204 | {"trigger": "gdraw_command_sequence_destroy", "contents": "gdraw_command_sequence_destroy(${1:sequence});"}, 205 | {"trigger": "gdraw_command_sequence_get_frame_by_elapsed", "contents": "gdraw_command_sequence_get_frame_by_elapsed(${1:sequence},${2:elapsed_ms});"}, 206 | {"trigger": "gdraw_command_sequence_get_frame_by_index", "contents": "gdraw_command_sequence_get_frame_by_index(${1:sequence},${2:index});"}, 207 | {"trigger": "gdraw_command_sequence_get_bounds_size", "contents": "gdraw_command_sequence_get_bounds_size(${1:sequence});"}, 208 | {"trigger": "gdraw_command_sequence_set_bounds_size", "contents": "gdraw_command_sequence_set_bounds_size(${1:sequence},${2:size});"}, 209 | {"trigger": "gdraw_command_sequence_get_play_count", "contents": "gdraw_command_sequence_get_play_count(${1:sequence});"}, 210 | {"trigger": "gdraw_command_sequence_set_play_count", "contents": "gdraw_command_sequence_set_play_count(${1:sequence},${2:play_count});"}, 211 | {"trigger": "gdraw_command_sequence_get_total_duration", "contents": "gdraw_command_sequence_get_total_duration(${1:sequence});"}, 212 | {"trigger": "gdraw_command_sequence_get_num_frames", "contents": "gdraw_command_sequence_get_num_frames(${1:sequence});"}, 213 | {"trigger": "gpath_create", "contents": "gpath_create(${1:init});"}, 214 | {"trigger": "gpath_destroy", "contents": "gpath_destroy(${1:gpath});"}, 215 | {"trigger": "gpath_draw_filled", "contents": "gpath_draw_filled(${1:ctx},${2:path});"}, 216 | {"trigger": "gpath_draw_outline", "contents": "gpath_draw_outline(${1:ctx},${2:path});"}, 217 | {"trigger": "gpath_rotate_to", "contents": "gpath_rotate_to(${1:path},${2:angle});"}, 218 | {"trigger": "gpath_move_to", "contents": "gpath_move_to(${1:path},${2:point});"}, 219 | {"trigger": "gpath_draw_outline_open", "contents": "gpath_draw_outline_open(${1:ctx},${2:path});"}, 220 | {"trigger": "fonts_get_system_font", "contents": "fonts_get_system_font(${1:font_key});"}, 221 | {"trigger": "fonts_load_custom_font", "contents": "fonts_load_custom_font(${1:handle});"}, 222 | {"trigger": "fonts_unload_custom_font", "contents": "fonts_unload_custom_font(${1:font});"}, 223 | {"trigger": "graphics_draw_text", "contents": "graphics_draw_text(${1:ctx},${2:text},${3:font},${4:box},${5:overflow_mode},${6:alignment},${7:layout});"}, 224 | {"trigger": "graphics_text_layout_get_content_size", "contents": "graphics_text_layout_get_content_size(${1:text},${2:font},${3:box},${4:overflow_mode},${5:alignment});"}, 225 | {"trigger": "click_number_of_clicks_counted", "contents": "click_number_of_clicks_counted(${1:recognizer});"}, 226 | {"trigger": "click_recognizer_get_button_id", "contents": "click_recognizer_get_button_id(${1:recognizer});"}, 227 | {"trigger": "click_recognizer_is_repeating", "contents": "click_recognizer_is_repeating(${1:recognizer});"}, 228 | {"trigger": "layer_create", "contents": "layer_create(${1:frame});"}, 229 | {"trigger": "layer_create_with_data", "contents": "layer_create_with_data(${1:frame},${2:data_size});"}, 230 | {"trigger": "layer_destroy", "contents": "layer_destroy(${1:layer});"}, 231 | {"trigger": "layer_mark_dirty", "contents": "layer_mark_dirty(${1:layer});"}, 232 | {"trigger": "layer_set_update_proc", "contents": "layer_set_update_proc(${1:layer},${2:update_proc});"}, 233 | {"trigger": "layer_set_frame", "contents": "layer_set_frame(${1:layer},${2:frame});"}, 234 | {"trigger": "layer_get_frame", "contents": "layer_get_frame(${1:layer});"}, 235 | {"trigger": "layer_set_bounds", "contents": "layer_set_bounds(${1:layer},${2:bounds});"}, 236 | {"trigger": "layer_get_bounds", "contents": "layer_get_bounds(${1:layer});"}, 237 | {"trigger": "layer_remove_from_parent", "contents": "layer_remove_from_parent(${1:child});"}, 238 | {"trigger": "layer_remove_child_layers", "contents": "layer_remove_child_layers(${1:parent});"}, 239 | {"trigger": "layer_add_child", "contents": "layer_add_child(${1:parent},${2:child});"}, 240 | {"trigger": "layer_insert_below_sibling", "contents": "layer_insert_below_sibling(${1:layer_to_insert},${2:below_sibling_layer});"}, 241 | {"trigger": "layer_insert_above_sibling", "contents": "layer_insert_above_sibling(${1:layer_to_insert},${2:above_sibling_layer});"}, 242 | {"trigger": "layer_set_hidden", "contents": "layer_set_hidden(${1:layer},${2:hidden});"}, 243 | {"trigger": "layer_get_hidden", "contents": "layer_get_hidden(${1:layer});"}, 244 | {"trigger": "layer_set_clips", "contents": "layer_set_clips(${1:layer},${2:clips});"}, 245 | {"trigger": "layer_get_clips", "contents": "layer_get_clips(${1:layer});"}, 246 | {"trigger": "layer_get_data", "contents": "layer_get_data(${1:layer});"}, 247 | {"trigger": "window_create", "contents": "window_create(${1:void});"}, 248 | {"trigger": "window_destroy", "contents": "window_destroy(${1:window});"}, 249 | {"trigger": "window_set_click_config_provider", "contents": "window_set_click_config_provider(${1:window},${2:click_config_provider});"}, 250 | {"trigger": "window_set_click_config_provider_with_context", "contents": "window_set_click_config_provider_with_context(${1:window},${2:click_config_provider},${3:context});"}, 251 | {"trigger": "window_get_click_config_provider", "contents": "window_get_click_config_provider(${1:window});"}, 252 | {"trigger": "window_get_click_config_context", "contents": "window_get_click_config_context(${1:window});"}, 253 | {"trigger": "window_set_window_handlers", "contents": "window_set_window_handlers(${1:window},${2:handlers});"}, 254 | {"trigger": "window_set_background_color", "contents": "window_set_background_color(${1:window},${2:background_color});"}, 255 | {"trigger": "window_set_status_bar_icon", "contents": "window_set_status_bar_icon(${1:window},${2:icon});"}, 256 | {"trigger": "window_is_loaded", "contents": "window_is_loaded(${1:window});"}, 257 | {"trigger": "window_set_user_data", "contents": "window_set_user_data(${1:window},${2:data});"}, 258 | {"trigger": "window_get_user_data", "contents": "window_get_user_data(${1:window});"}, 259 | {"trigger": "window_single_click_subscribe", "contents": "window_single_click_subscribe(${1:button_id},${2:handler});"}, 260 | {"trigger": "window_single_repeating_click_subscribe", "contents": "window_single_repeating_click_subscribe(${1:button_id},${2:repeat_interval_ms},${3:handler});"}, 261 | {"trigger": "window_multi_click_subscribe", "contents": "window_multi_click_subscribe(${1:button_id},${2:min_clicks},${3:max_clicks},${4:timeout},${5:last_click_only},${6:handler});"}, 262 | {"trigger": "window_long_click_subscribe", "contents": "window_long_click_subscribe(${1:button_id},${2:delay_ms},${3:down_handler},${4:up_handler});"}, 263 | {"trigger": "window_raw_click_subscribe", "contents": "window_raw_click_subscribe(${1:button_id},${2:down_handler},${3:up_handler},${4:context});"}, 264 | {"trigger": "window_set_click_context", "contents": "window_set_click_context(${1:button_id},${2:context});"}, 265 | {"trigger": "window_stack_push", "contents": "window_stack_push(${1:window},${2:animated});"}, 266 | {"trigger": "window_stack_pop", "contents": "window_stack_pop(${1:animated});"}, 267 | {"trigger": "window_stack_pop_all", "contents": "window_stack_pop_all(${1:animated});"}, 268 | {"trigger": "window_stack_remove", "contents": "window_stack_remove(${1:window},${2:animated});"}, 269 | {"trigger": "window_stack_get_top_window", "contents": "window_stack_get_top_window(${1:void});"}, 270 | {"trigger": "window_stack_contains_window", "contents": "window_stack_contains_window(${1:window});"}, 271 | {"trigger": "animation_destroy", "contents": "animation_destroy(${1:animation});"}, 272 | {"trigger": "animation_clone", "contents": "animation_clone(${1:from});"}, 273 | {"trigger": "animation_sequence_create", "contents": "animation_sequence_create(${1:animation_a},${2:animation_b},${3:animation_c},${4:...});"}, 274 | {"trigger": "animation_sequence_create_from_array", "contents": "animation_sequence_create_from_array(${1:animation_array},${2:array_len});"}, 275 | {"trigger": "animation_spawn_create", "contents": "animation_spawn_create(${1:animation_a},${2:animation_b},${3:animation_c},${4:...});"}, 276 | {"trigger": "animation_spawn_create_from_array", "contents": "animation_spawn_create_from_array(${1:animation_array},${2:array_len});"}, 277 | {"trigger": "animation_set_elapsed", "contents": "animation_set_elapsed(${1:animation},${2:elapsed_ms});"}, 278 | {"trigger": "animation_get_elapsed", "contents": "animation_get_elapsed(${1:animation},${2:elapsed_ms});"}, 279 | {"trigger": "animation_set_reverse", "contents": "animation_set_reverse(${1:animation},${2:reverse});"}, 280 | {"trigger": "animation_get_reverse", "contents": "animation_get_reverse(${1:animation});"}, 281 | {"trigger": "animation_set_play_count", "contents": "animation_set_play_count(${1:animation},${2:play_count});"}, 282 | {"trigger": "animation_get_play_count", "contents": "animation_get_play_count(${1:animation});"}, 283 | {"trigger": "animation_set_duration", "contents": "animation_set_duration(${1:animation},${2:duration_ms});"}, 284 | {"trigger": "animation_get_duration", "contents": "animation_get_duration(${1:animation},${2:include_delay},${3:include_play_count});"}, 285 | {"trigger": "animation_set_delay", "contents": "animation_set_delay(${1:animation},${2:delay_ms});"}, 286 | {"trigger": "animation_get_delay", "contents": "animation_get_delay(${1:animation});"}, 287 | {"trigger": "animation_set_curve", "contents": "animation_set_curve(${1:animation},${2:curve});"}, 288 | {"trigger": "animation_get_curve", "contents": "animation_get_curve(${1:animation});"}, 289 | {"trigger": "animation_set_custom_curve", "contents": "animation_set_custom_curve(${1:animation},${2:curve_function});"}, 290 | {"trigger": "animation_get_custom_curve", "contents": "animation_get_custom_curve(${1:animation});"}, 291 | {"trigger": "animation_set_handlers", "contents": "animation_set_handlers(${1:animation},${2:callbacks},${3:context});"}, 292 | {"trigger": "animation_get_context", "contents": "animation_get_context(${1:animation});"}, 293 | {"trigger": "animation_schedule", "contents": "animation_schedule(${1:animation});"}, 294 | {"trigger": "animation_unschedule", "contents": "animation_unschedule(${1:animation});"}, 295 | {"trigger": "animation_unschedule_all", "contents": "animation_unschedule_all(${1:void});"}, 296 | {"trigger": "animation_is_scheduled", "contents": "animation_is_scheduled(${1:animation});"}, 297 | {"trigger": "animation_set_implementation", "contents": "animation_set_implementation(${1:animation},${2:implementation});"}, 298 | {"trigger": "property_animation_create_layer_frame", "contents": "property_animation_create_layer_frame(${1:layer},${2:from_frame},${3:to_frame});"}, 299 | {"trigger": "property_animation_create_bounds_origin", "contents": "property_animation_create_bounds_origin(${1:layer},${2:from},${3:to});"}, 300 | {"trigger": "property_animation_create", "contents": "property_animation_create(${1:implementation},${2:subject},${3:from_value},${4:to_value});"}, 301 | {"trigger": "property_animation_destroy", "contents": "property_animation_destroy(${1:property_animation});"}, 302 | {"trigger": "property_animation_update_int16", "contents": "property_animation_update_int16(${1:property_animation},${2:distance_normalized});"}, 303 | {"trigger": "property_animation_update_uint32", "contents": "property_animation_update_uint32(${1:property_animation},${2:distance_normalized});"}, 304 | {"trigger": "property_animation_update_gpoint", "contents": "property_animation_update_gpoint(${1:property_animation},${2:distance_normalized});"}, 305 | {"trigger": "property_animation_update_grect", "contents": "property_animation_update_grect(${1:property_animation},${2:distance_normalized});"}, 306 | {"trigger": "property_animation_get_animation", "contents": "property_animation_get_animation(${1:property_animation});"}, 307 | {"trigger": "property_animation_subject", "contents": "property_animation_subject(${1:property_animation},${2:subject},${3:set});"}, 308 | {"trigger": "property_animation_from", "contents": "property_animation_from(${1:property_animation},${2:from},${3:size},${4:set});"}, 309 | {"trigger": "property_animation_to", "contents": "property_animation_to(${1:property_animation},${2:to},${3:size},${4:set});"}, 310 | {"trigger": "text_layer_create", "contents": "text_layer_create(${1:frame});"}, 311 | {"trigger": "text_layer_destroy", "contents": "text_layer_destroy(${1:text_layer});"}, 312 | {"trigger": "text_layer_get_layer", "contents": "text_layer_get_layer(${1:text_layer});"}, 313 | {"trigger": "text_layer_set_text", "contents": "text_layer_set_text(${1:text_layer},${2:text});"}, 314 | {"trigger": "text_layer_set_background_color", "contents": "text_layer_set_background_color(${1:text_layer},${2:color});"}, 315 | {"trigger": "text_layer_set_text_color", "contents": "text_layer_set_text_color(${1:text_layer},${2:color});"}, 316 | {"trigger": "text_layer_set_overflow_mode", "contents": "text_layer_set_overflow_mode(${1:text_layer},${2:line_mode});"}, 317 | {"trigger": "text_layer_set_font", "contents": "text_layer_set_font(${1:text_layer},${2:font});"}, 318 | {"trigger": "text_layer_set_text_alignment", "contents": "text_layer_set_text_alignment(${1:text_layer},${2:text_alignment});"}, 319 | {"trigger": "text_layer_get_content_size", "contents": "text_layer_get_content_size(${1:text_layer});"}, 320 | {"trigger": "text_layer_set_size", "contents": "text_layer_set_size(${1:text_layer},${2:max_size});"}, 321 | {"trigger": "scroll_layer_create", "contents": "scroll_layer_create(${1:frame});"}, 322 | {"trigger": "scroll_layer_destroy", "contents": "scroll_layer_destroy(${1:scroll_layer});"}, 323 | {"trigger": "scroll_layer_get_layer", "contents": "scroll_layer_get_layer(${1:scroll_layer});"}, 324 | {"trigger": "scroll_layer_add_child", "contents": "scroll_layer_add_child(${1:scroll_layer},${2:child});"}, 325 | {"trigger": "scroll_layer_set_click_config_onto_window", "contents": "scroll_layer_set_click_config_onto_window(${1:scroll_layer},${2:window});"}, 326 | {"trigger": "scroll_layer_set_callbacks", "contents": "scroll_layer_set_callbacks(${1:scroll_layer},${2:callbacks});"}, 327 | {"trigger": "scroll_layer_set_context", "contents": "scroll_layer_set_context(${1:scroll_layer},${2:context});"}, 328 | {"trigger": "scroll_layer_set_content_offset", "contents": "scroll_layer_set_content_offset(${1:scroll_layer},${2:offset},${3:animated});"}, 329 | {"trigger": "scroll_layer_get_content_offset", "contents": "scroll_layer_get_content_offset(${1:scroll_layer});"}, 330 | {"trigger": "scroll_layer_set_content_size", "contents": "scroll_layer_set_content_size(${1:scroll_layer},${2:size});"}, 331 | {"trigger": "scroll_layer_get_content_size", "contents": "scroll_layer_get_content_size(${1:scroll_layer});"}, 332 | {"trigger": "scroll_layer_set_frame", "contents": "scroll_layer_set_frame(${1:scroll_layer},${2:frame});"}, 333 | {"trigger": "scroll_layer_scroll_up_click_handler", "contents": "scroll_layer_scroll_up_click_handler(${1:recognizer},${2:context});"}, 334 | {"trigger": "scroll_layer_scroll_down_click_handler", "contents": "scroll_layer_scroll_down_click_handler(${1:recognizer},${2:context});"}, 335 | {"trigger": "scroll_layer_set_shadow_hidden", "contents": "scroll_layer_set_shadow_hidden(${1:scroll_layer},${2:hidden});"}, 336 | {"trigger": "scroll_layer_get_shadow_hidden", "contents": "scroll_layer_get_shadow_hidden(${1:scroll_layer});"}, 337 | {"trigger": "menu_cell_basic_draw", "contents": "menu_cell_basic_draw(${1:ctx},${2:cell_layer},${3:title},${4:subtitle},${5:icon});"}, 338 | {"trigger": "menu_cell_title_draw", "contents": "menu_cell_title_draw(${1:ctx},${2:cell_layer},${3:title});"}, 339 | {"trigger": "menu_cell_basic_header_draw", "contents": "menu_cell_basic_header_draw(${1:ctx},${2:cell_layer},${3:title});"}, 340 | {"trigger": "menu_index_compare", "contents": "menu_index_compare(${1:a},${2:b});"}, 341 | {"trigger": "menu_layer_create", "contents": "menu_layer_create(${1:frame});"}, 342 | {"trigger": "menu_layer_destroy", "contents": "menu_layer_destroy(${1:menu_layer});"}, 343 | {"trigger": "menu_layer_get_layer", "contents": "menu_layer_get_layer(${1:menu_layer});"}, 344 | {"trigger": "menu_layer_get_scroll_layer", "contents": "menu_layer_get_scroll_layer(${1:menu_layer});"}, 345 | {"trigger": "menu_layer_set_callbacks", "contents": "menu_layer_set_callbacks(${1:menu_layer},${2:callback_context},${3:callbacks});"}, 346 | {"trigger": "menu_layer_set_click_config_onto_window", "contents": "menu_layer_set_click_config_onto_window(${1:menu_layer},${2:window});"}, 347 | {"trigger": "menu_layer_set_selected_next", "contents": "menu_layer_set_selected_next(${1:menu_layer},${2:up},${3:scroll_align},${4:animated});"}, 348 | {"trigger": "menu_layer_set_selected_index", "contents": "menu_layer_set_selected_index(${1:menu_layer},${2:index},${3:scroll_align},${4:animated});"}, 349 | {"trigger": "menu_layer_get_selected_index", "contents": "menu_layer_get_selected_index(${1:menu_layer});"}, 350 | {"trigger": "menu_layer_reload_data", "contents": "menu_layer_reload_data(${1:menu_layer});"}, 351 | {"trigger": "menu_cell_layer_is_highlighted", "contents": "menu_cell_layer_is_highlighted(${1:cell_layer});"}, 352 | {"trigger": "menu_layer_set_normal_colors", "contents": "menu_layer_set_normal_colors(${1:menu_layer},${2:background},${3:foreground});"}, 353 | {"trigger": "menu_layer_set_highlight_colors", "contents": "menu_layer_set_highlight_colors(${1:menu_layer},${2:background},${3:foreground});"}, 354 | {"trigger": "menu_layer_pad_bottom_enable", "contents": "menu_layer_pad_bottom_enable(${1:menu_layer},${2:enable});"}, 355 | {"trigger": "simple_menu_layer_create", "contents": "simple_menu_layer_create(${1:frame},${2:window},${3:sections},${4:num_sections},${5:callback_context});"}, 356 | {"trigger": "simple_menu_layer_destroy", "contents": "simple_menu_layer_destroy(${1:menu_layer});"}, 357 | {"trigger": "simple_menu_layer_get_layer", "contents": "simple_menu_layer_get_layer(${1:simple_menu});"}, 358 | {"trigger": "simple_menu_layer_get_selected_index", "contents": "simple_menu_layer_get_selected_index(${1:simple_menu});"}, 359 | {"trigger": "simple_menu_layer_set_selected_index", "contents": "simple_menu_layer_set_selected_index(${1:simple_menu},${2:index},${3:animated});"}, 360 | {"trigger": "simple_menu_layer_get_menu_layer", "contents": "simple_menu_layer_get_menu_layer(${1:simple_menu});"}, 361 | {"trigger": "action_bar_layer_create", "contents": "action_bar_layer_create(${1:void});"}, 362 | {"trigger": "action_bar_layer_destroy", "contents": "action_bar_layer_destroy(${1:action_bar_layer});"}, 363 | {"trigger": "action_bar_layer_get_layer", "contents": "action_bar_layer_get_layer(${1:action_bar_layer});"}, 364 | {"trigger": "action_bar_layer_set_context", "contents": "action_bar_layer_set_context(${1:action_bar},${2:context});"}, 365 | {"trigger": "action_bar_layer_set_click_config_provider", "contents": "action_bar_layer_set_click_config_provider(${1:action_bar},${2:click_config_provider});"}, 366 | {"trigger": "action_bar_layer_set_icon", "contents": "action_bar_layer_set_icon(${1:action_bar},${2:button_id},${3:icon});"}, 367 | {"trigger": "action_bar_layer_clear_icon", "contents": "action_bar_layer_clear_icon(${1:action_bar},${2:button_id});"}, 368 | {"trigger": "action_bar_layer_add_to_window", "contents": "action_bar_layer_add_to_window(${1:action_bar},${2:window});"}, 369 | {"trigger": "action_bar_layer_remove_from_window", "contents": "action_bar_layer_remove_from_window(${1:action_bar});"}, 370 | {"trigger": "action_bar_layer_set_background_color", "contents": "action_bar_layer_set_background_color(${1:action_bar},${2:background_color});"}, 371 | {"trigger": "action_bar_layer_set_icon_animated", "contents": "action_bar_layer_set_icon_animated(${1:action_bar},${2:button_id},${3:icon},${4:animated});"}, 372 | {"trigger": "action_bar_layer_set_icon_press_animation", "contents": "action_bar_layer_set_icon_press_animation(${1:action_bar},${2:button_id},${3:animation});"}, 373 | {"trigger": "status_bar_layer_create", "contents": "status_bar_layer_create(${1:void});"}, 374 | {"trigger": "status_bar_layer_destroy", "contents": "status_bar_layer_destroy(${1:status_bar_layer});"}, 375 | {"trigger": "status_bar_layer_get_layer", "contents": "status_bar_layer_get_layer(${1:status_bar_layer});"}, 376 | {"trigger": "status_bar_layer_get_background_color", "contents": "status_bar_layer_get_background_color(${1:status_bar_layer});"}, 377 | {"trigger": "status_bar_layer_get_foreground_color", "contents": "status_bar_layer_get_foreground_color(${1:status_bar_layer});"}, 378 | {"trigger": "status_bar_layer_set_colors", "contents": "status_bar_layer_set_colors(${1:status_bar_layer},${2:background},${3:foreground});"}, 379 | {"trigger": "status_bar_layer_set_separator_mode", "contents": "status_bar_layer_set_separator_mode(${1:status_bar_layer},${2:mode});"}, 380 | {"trigger": "bitmap_layer_create", "contents": "bitmap_layer_create(${1:frame});"}, 381 | {"trigger": "bitmap_layer_destroy", "contents": "bitmap_layer_destroy(${1:bitmap_layer});"}, 382 | {"trigger": "bitmap_layer_get_layer", "contents": "bitmap_layer_get_layer(${1:bitmap_layer});"}, 383 | {"trigger": "bitmap_layer_set_bitmap", "contents": "bitmap_layer_set_bitmap(${1:bitmap_layer},${2:bitmap});"}, 384 | {"trigger": "bitmap_layer_set_alignment", "contents": "bitmap_layer_set_alignment(${1:bitmap_layer},${2:alignment});"}, 385 | {"trigger": "bitmap_layer_set_background_color", "contents": "bitmap_layer_set_background_color(${1:bitmap_layer},${2:color});"}, 386 | {"trigger": "bitmap_layer_set_compositing_mode", "contents": "bitmap_layer_set_compositing_mode(${1:bitmap_layer},${2:mode});"}, 387 | {"trigger": "rot_bitmap_layer_create", "contents": "rot_bitmap_layer_create(${1:bitmap});"}, 388 | {"trigger": "rot_bitmap_layer_destroy", "contents": "rot_bitmap_layer_destroy(${1:bitmap});"}, 389 | {"trigger": "rot_bitmap_layer_set_corner_clip_color", "contents": "rot_bitmap_layer_set_corner_clip_color(${1:bitmap},${2:color});"}, 390 | {"trigger": "rot_bitmap_layer_set_angle", "contents": "rot_bitmap_layer_set_angle(${1:bitmap},${2:angle});"}, 391 | {"trigger": "rot_bitmap_layer_increment_angle", "contents": "rot_bitmap_layer_increment_angle(${1:bitmap},${2:angle_change});"}, 392 | {"trigger": "rot_bitmap_set_src_ic", "contents": "rot_bitmap_set_src_ic(${1:bitmap},${2:ic});"}, 393 | {"trigger": "rot_bitmap_set_compositing_mode", "contents": "rot_bitmap_set_compositing_mode(${1:bitmap},${2:mode});"}, 394 | {"trigger": "number_window_create", "contents": "number_window_create(${1:label},${2:callbacks},${3:callback_context});"}, 395 | {"trigger": "number_window_destroy", "contents": "number_window_destroy(${1:number_window});"}, 396 | {"trigger": "number_window_set_label", "contents": "number_window_set_label(${1:numberwindow},${2:label});"}, 397 | {"trigger": "number_window_set_max", "contents": "number_window_set_max(${1:numberwindow},${2:max});"}, 398 | {"trigger": "number_window_set_min", "contents": "number_window_set_min(${1:numberwindow},${2:min});"}, 399 | {"trigger": "number_window_set_value", "contents": "number_window_set_value(${1:numberwindow},${2:value});"}, 400 | {"trigger": "number_window_set_step_size", "contents": "number_window_set_step_size(${1:numberwindow},${2:step});"}, 401 | {"trigger": "number_window_get_value", "contents": "number_window_get_value(${1:numberwindow});"}, 402 | {"trigger": "number_window_get_window", "contents": "number_window_get_window(${1:numberwindow});"}, 403 | {"trigger": "vibes_cancel", "contents": "vibes_cancel(${1:void});"}, 404 | {"trigger": "vibes_short_pulse", "contents": "vibes_short_pulse(${1:void});"}, 405 | {"trigger": "vibes_long_pulse", "contents": "vibes_long_pulse(${1:void});"}, 406 | {"trigger": "vibes_double_pulse", "contents": "vibes_double_pulse(${1:void});"}, 407 | {"trigger": "vibes_enqueue_custom_pattern", "contents": "vibes_enqueue_custom_pattern(${1:pattern});"}, 408 | {"trigger": "light_enable_interaction", "contents": "light_enable_interaction(${1:void});"}, 409 | {"trigger": "light_enable", "contents": "light_enable(${1:enable});"}, 410 | {"trigger": "strftime", "contents": "strftime(${1:s},${2:maxsize},${3:format},${4:tm_p});"}, 411 | {"trigger": "mktime", "contents": "mktime(${1:tb});"}, 412 | {"trigger": "time", "contents": "time(${1:tloc});"}, 413 | {"trigger": "difftime", "contents": "difftime(${1:end},${2:beginning});"}, 414 | {"trigger": "time_ms", "contents": "time_ms(${1:t_utc},${2:out_ms});"} 415 | ] 416 | } 417 | -------------------------------------------------------------------------------- /pebble_worker.sublime-completions: -------------------------------------------------------------------------------- 1 | { 2 | "scope": "source", 3 | "completions": [ 4 | {"trigger": "watch_info_get_model", "contents": "watch_info_get_model(${1:void});"}, 5 | {"trigger": "watch_info_get_firmware_version", "contents": "watch_info_get_firmware_version(${1:void});"}, 6 | {"trigger": "watch_info_get_color", "contents": "watch_info_get_color(${1:void});"}, 7 | {"trigger": "sin_lookup", "contents": "sin_lookup(${1:angle});"}, 8 | {"trigger": "cos_lookup", "contents": "cos_lookup(${1:angle});"}, 9 | {"trigger": "atan2_lookup", "contents": "atan2_lookup(${1:y},${2:x});"}, 10 | {"trigger": "clock_copy_time_string", "contents": "clock_copy_time_string(${1:buffer},${2:size});"}, 11 | {"trigger": "clock_is_24h_style", "contents": "clock_is_24h_style(${1:void});"}, 12 | {"trigger": "clock_to_timestamp", "contents": "clock_to_timestamp(${1:day},${2:hour},${3:minute});"}, 13 | {"trigger": "clock_is_timezone_set", "contents": "clock_is_timezone_set(${1:void});"}, 14 | {"trigger": "clock_get_timezone", "contents": "clock_get_timezone(${1:timezone},${2:buffer_size});"}, 15 | {"trigger": "bluetooth_connection_service_peek", "contents": "bluetooth_connection_service_peek(${1:void});"}, 16 | {"trigger": "bluetooth_connection_service_subscribe", "contents": "bluetooth_connection_service_subscribe(${1:handler});"}, 17 | {"trigger": "bluetooth_connection_service_unsubscribe", "contents": "bluetooth_connection_service_unsubscribe(${1:void});"}, 18 | {"trigger": "battery_state_service_subscribe", "contents": "battery_state_service_subscribe(${1:handler});"}, 19 | {"trigger": "battery_state_service_unsubscribe", "contents": "battery_state_service_unsubscribe(${1:void});"}, 20 | {"trigger": "battery_state_service_peek", "contents": "battery_state_service_peek(${1:void});"}, 21 | {"trigger": "accel_service_peek", "contents": "accel_service_peek(${1:data});"}, 22 | {"trigger": "accel_service_set_sampling_rate", "contents": "accel_service_set_sampling_rate(${1:rate});"}, 23 | {"trigger": "accel_service_set_samples_per_update", "contents": "accel_service_set_samples_per_update(${1:num_samples});"}, 24 | {"trigger": "accel_data_service_subscribe", "contents": "accel_data_service_subscribe(${1:samples_per_update},${2:handler});"}, 25 | {"trigger": "accel_data_service_unsubscribe", "contents": "accel_data_service_unsubscribe(${1:void});"}, 26 | {"trigger": "accel_tap_service_subscribe", "contents": "accel_tap_service_subscribe(${1:handler});"}, 27 | {"trigger": "accel_tap_service_unsubscribe", "contents": "accel_tap_service_unsubscribe(${1:void});"}, 28 | {"trigger": "accel_raw_data_service_subscribe", "contents": "accel_raw_data_service_subscribe(${1:samples_per_update},${2:handler});"}, 29 | {"trigger": "compass_service_set_heading_filter", "contents": "compass_service_set_heading_filter(${1:filter});"}, 30 | {"trigger": "compass_service_subscribe", "contents": "compass_service_subscribe(${1:handler});"}, 31 | {"trigger": "compass_service_unsubscribe", "contents": "compass_service_unsubscribe(${1:void});"}, 32 | {"trigger": "compass_service_peek", "contents": "compass_service_peek(${1:data});"}, 33 | {"trigger": "tick_timer_service_subscribe", "contents": "tick_timer_service_subscribe(${1:tick_units},${2:handler});"}, 34 | {"trigger": "tick_timer_service_unsubscribe", "contents": "tick_timer_service_unsubscribe(${1:void});"}, 35 | {"trigger": "data_logging_create", "contents": "data_logging_create(${1:tag},${2:item_type},${3:item_length},${4:resume});"}, 36 | {"trigger": "data_logging_finish", "contents": "data_logging_finish(${1:logging_session});"}, 37 | {"trigger": "data_logging_log", "contents": "data_logging_log(${1:logging_session},${2:data},${3:num_items});"}, 38 | {"trigger": "uuid_equal", "contents": "uuid_equal(${1:uu1},${2:uu2});"}, 39 | {"trigger": "uuid_to_string", "contents": "uuid_to_string(${1:uuid},${2:buffer});"}, 40 | {"trigger": "dict_calc_buffer_size", "contents": "dict_calc_buffer_size(${1:tuple_count},${2:...});"}, 41 | {"trigger": "dict_size", "contents": "dict_size(${1:iter});"}, 42 | {"trigger": "dict_write_begin", "contents": "dict_write_begin(${1:iter},${2:buffer},${3:size});"}, 43 | {"trigger": "dict_write_data", "contents": "dict_write_data(${1:iter},${2:key},${3:data},${4:size});"}, 44 | {"trigger": "dict_write_cstring", "contents": "dict_write_cstring(${1:iter},${2:key},${3:cstring});"}, 45 | {"trigger": "dict_write_int", "contents": "dict_write_int(${1:iter},${2:key},${3:integer},${4:width_bytes},${5:is_signed});"}, 46 | {"trigger": "dict_write_uint8", "contents": "dict_write_uint8(${1:iter},${2:key},${3:value});"}, 47 | {"trigger": "dict_write_uint16", "contents": "dict_write_uint16(${1:iter},${2:key},${3:value});"}, 48 | {"trigger": "dict_write_uint32", "contents": "dict_write_uint32(${1:iter},${2:key},${3:value});"}, 49 | {"trigger": "dict_write_int8", "contents": "dict_write_int8(${1:iter},${2:key},${3:value});"}, 50 | {"trigger": "dict_write_int16", "contents": "dict_write_int16(${1:iter},${2:key},${3:value});"}, 51 | {"trigger": "dict_write_int32", "contents": "dict_write_int32(${1:iter},${2:key},${3:value});"}, 52 | {"trigger": "dict_write_end", "contents": "dict_write_end(${1:iter});"}, 53 | {"trigger": "dict_serialize_tuplets", "contents": "dict_serialize_tuplets(${1:callback},${2:context},${3:tuplets},${4:tuplets_count});"}, 54 | {"trigger": "dict_serialize_tuplets_to_buffer", "contents": "dict_serialize_tuplets_to_buffer(${1:tuplets},${2:tuplets_count},${3:buffer},${4:size_in_out});"}, 55 | {"trigger": "dict_serialize_tuplets_to_buffer_with_iter", "contents": "dict_serialize_tuplets_to_buffer_with_iter(${1:iter},${2:tuplets},${3:tuplets_count},${4:buffer},${5:size_in_out});"}, 56 | {"trigger": "dict_write_tuplet", "contents": "dict_write_tuplet(${1:iter},${2:tuplet});"}, 57 | {"trigger": "dict_calc_buffer_size_from_tuplets", "contents": "dict_calc_buffer_size_from_tuplets(${1:tuplets},${2:tuplets_count});"}, 58 | {"trigger": "dict_merge", "contents": "dict_merge(${1:dest},${2:dest_max_size_in_out},${3:source},${4:update_existing_keys_only},${5:key_callback},${6:context});"}, 59 | {"trigger": "dict_find", "contents": "dict_find(${1:iter},${2:key});"}, 60 | {"trigger": "worker_event_loop", "contents": "worker_event_loop(${1:void});"}, 61 | {"trigger": "worker_launch_app", "contents": "worker_launch_app(${1:void});"}, 62 | {"trigger": "app_worker_is_running", "contents": "app_worker_is_running(${1:void});"}, 63 | {"trigger": "app_worker_launch", "contents": "app_worker_launch(${1:void});"}, 64 | {"trigger": "app_worker_kill", "contents": "app_worker_kill(${1:void});"}, 65 | {"trigger": "app_worker_message_subscribe", "contents": "app_worker_message_subscribe(${1:handler});"}, 66 | {"trigger": "app_worker_message_unsubscribe", "contents": "app_worker_message_unsubscribe(${1:void});"}, 67 | {"trigger": "app_worker_send_message", "contents": "app_worker_send_message(${1:type},${2:data});"}, 68 | {"trigger": "psleep", "contents": "psleep(${1:millis});"}, 69 | {"trigger": "app_timer_register", "contents": "app_timer_register(${1:timeout_ms},${2:callback},${3:callback_data});"}, 70 | {"trigger": "app_timer_reschedule", "contents": "app_timer_reschedule(${1:timer_handle},${2:new_timeout_ms});"}, 71 | {"trigger": "app_timer_cancel", "contents": "app_timer_cancel(${1:timer_handle});"}, 72 | {"trigger": "heap_bytes_free", "contents": "heap_bytes_free(${1:void});"}, 73 | {"trigger": "heap_bytes_used", "contents": "heap_bytes_used(${1:void});"}, 74 | {"trigger": "persist_exists", "contents": "persist_exists(${1:key});"}, 75 | {"trigger": "persist_get_size", "contents": "persist_get_size(${1:key});"}, 76 | {"trigger": "persist_read_bool", "contents": "persist_read_bool(${1:key});"}, 77 | {"trigger": "persist_read_int", "contents": "persist_read_int(${1:key});"}, 78 | {"trigger": "persist_read_data", "contents": "persist_read_data(${1:key},${2:buffer},${3:buffer_size});"}, 79 | {"trigger": "persist_read_string", "contents": "persist_read_string(${1:key},${2:buffer},${3:buffer_size});"}, 80 | {"trigger": "persist_write_bool", "contents": "persist_write_bool(${1:key},${2:value});"}, 81 | {"trigger": "persist_write_int", "contents": "persist_write_int(${1:key},${2:value});"}, 82 | {"trigger": "persist_write_data", "contents": "persist_write_data(${1:key},${2:data},${3:size});"}, 83 | {"trigger": "persist_write_string", "contents": "persist_write_string(${1:key},${2:cstring});"}, 84 | {"trigger": "persist_delete", "contents": "persist_delete(${1:key});"}, 85 | {"trigger": "strftime", "contents": "strftime(${1:s},${2:maxsize},${3:format},${4:tm_p});"}, 86 | {"trigger": "mktime", "contents": "mktime(${1:tb});"}, 87 | {"trigger": "time", "contents": "time(${1:tloc});"}, 88 | {"trigger": "difftime", "contents": "difftime(${1:end},${2:beginning});"}, 89 | {"trigger": "time_ms", "contents": "time_ms(${1:t_utc},${2:out_ms});"} 90 | ] 91 | } 92 | --------------------------------------------------------------------------------