Update library homepage
[company-nginx.git] / company-nginx.el
blob95e0b5c46b5b2dee9571589c918a7999c8f91d97
1 ;;; company-nginx.el --- company-mode keywords support for nginx-mode
3 ;; Authors: stardiviner <numbchild@gmail.com>
4 ;; Package-Requires: ((emacs "24") cl-lib company)
5 ;; Package-Version: 0.2
6 ;; Keywords: company nginx
7 ;; homepage: https://repo.or.cz/company-nginx.git
9 ;; You should have received a copy of the GNU General Public License
10 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
12 ;;; Time-stamp: <2018-06-04 07:57:58 stardiviner>
14 ;;; Commentary:
16 ;;; Usage:
18 ;; To enable nginx keywords, you need to add following config to your init file:
20 ;; (add-hook 'nginx-mode-hook
21 ;; (lambda () (set (make-local-variable 'company-backends)
22 ;; (append '((company-nginx-keywords)) company-backends))))
24 ;;; Code:
26 (require 'cl-lib)
27 (require 'company)
29 (defconst company-nginx-keywords
30 '("absolute_redirect" "accept_mutex" "accept_mutex_delay" "access_log" "access_log"
31 "add_after_body" "add_before_body" "add_header" "add_trailer" "addition_types" "aio"
32 "aio_write" "alias" "allow" "allow" "ancient_browser" "ancient_browser_value" "api"
33 "auth_basic" "auth_basic_user_file" "auth_http" "auth_http_header"
34 "auth_http_pass_client_cert" "auth_http_timeout" "auth_jwt" "auth_jwt_claim_set"
35 "auth_jwt_header_set" "auth_jwt_key_file" "auth_jwt_leeway" "auth_request"
36 "auth_request_set" "autoindex" "autoindex_exact_size" "autoindex_format"
37 "autoindex_localtime" "break" "charset" "charset_map" "charset_types"
38 "chunked_transfer_encoding" "client_body_buffer_size" "client_body_in_file_only"
39 "client_body_in_single_buffer" "client_body_temp_path" "client_body_timeout"
40 "client_header_buffer_size" "client_header_timeout" "client_max_body_size"
41 "connection_pool_size" "create_full_put_path" "daemon" "dav_access" "dav_methods"
42 "debug_connection" "debug_points" "default_type" "deny" "deny" "directio"
43 "directio_alignment" "disable_symlinks" "empty_gif" "env" "error_log" "error_page" "etag"
44 "events" "expires" "f4f" "f4f_buffer_size" "fastcgi_bind" "fastcgi_buffer_size"
45 "fastcgi_buffering" "fastcgi_buffers" "fastcgi_busy_buffers_size" "fastcgi_cache"
46 "fastcgi_cache_background_update" "fastcgi_cache_bypass" "fastcgi_cache_key"
47 "fastcgi_cache_lock" "fastcgi_cache_lock_age" "fastcgi_cache_lock_timeout"
48 "fastcgi_cache_max_range_offset" "fastcgi_cache_methods" "fastcgi_cache_min_uses"
49 "fastcgi_cache_path" "fastcgi_cache_purge" "fastcgi_cache_revalidate"
50 "fastcgi_cache_use_stale" "fastcgi_cache_valid" "fastcgi_catch_stderr"
51 "fastcgi_connect_timeout" "fastcgi_force_ranges" "fastcgi_hide_header"
52 "fastcgi_ignore_client_abort" "fastcgi_ignore_headers" "fastcgi_index"
53 "fastcgi_intercept_errors" "fastcgi_keep_conn" "fastcgi_limit_rate"
54 "fastcgi_max_temp_file_size" "fastcgi_next_upstream" "fastcgi_next_upstream_timeout"
55 "fastcgi_next_upstream_tries" "fastcgi_no_cache" "fastcgi_param" "fastcgi_pass"
56 "fastcgi_pass_header" "fastcgi_pass_request_body" "fastcgi_pass_request_headers"
57 "fastcgi_read_timeout" "fastcgi_request_buffering" "fastcgi_send_lowat"
58 "fastcgi_send_timeout" "fastcgi_split_path_info" "fastcgi_store" "fastcgi_store_access"
59 "fastcgi_temp_file_write_size" "fastcgi_temp_path" "flv" "geo" "geo" "geoip_city"
60 "geoip_city" "geoip_country" "geoip_country" "geoip_org" "geoip_org" "geoip_proxy"
61 "geoip_proxy_recursive" "google_perftools_profiles" "grpc_bind" "grpc_buffer_size"
62 "grpc_connect_timeout" "grpc_hide_header" "grpc_ignore_headers" "grpc_intercept_errors"
63 "grpc_next_upstream" "grpc_next_upstream_timeout" "grpc_next_upstream_tries" "grpc_pass"
64 "grpc_pass_header" "grpc_read_timeout" "grpc_send_timeout" "grpc_set_header"
65 "grpc_ssl_certificate" "grpc_ssl_certificate_key" "grpc_ssl_ciphers" "grpc_ssl_crl"
66 "grpc_ssl_name" "grpc_ssl_password_file" "grpc_ssl_protocols" "grpc_ssl_server_name"
67 "grpc_ssl_session_reuse" "grpc_ssl_trusted_certificate" "grpc_ssl_verify"
68 "grpc_ssl_verify_depth" "gunzip" "gunzip_buffers" "gzip" "gzip_buffers" "gzip_comp_level"
69 "gzip_disable" "gzip_http_version" "gzip_min_length" "gzip_proxied" "gzip_static"
70 "gzip_types" "gzip_vary" "hash" "hash" "health_check" "health_check"
71 "health_check_timeout" "hls" "hls_buffers" "hls_forward_args" "hls_fragment"
72 "hls_mp4_buffer_size" "hls_mp4_max_buffer_size" "http" "http2_body_preread_size"
73 "http2_chunk_size" "http2_idle_timeout" "http2_max_concurrent_pushes"
74 "http2_max_concurrent_streams" "http2_max_field_size" "http2_max_header_size"
75 "http2_max_requests" "http2_push" "http2_push_preload" "http2_recv_buffer_size"
76 "http2_recv_timeout" "if" "if_modified_since" "ignore_invalid_headers" "image_filter"
77 "image_filter_buffer" "image_filter_interlace" "image_filter_jpeg_quality"
78 "image_filter_sharpen" "image_filter_transparency" "image_filter_webp_quality" "imap_auth"
79 "imap_capabilities" "imap_client_buffer" "include" "index" "internal" "ip_hash"
80 "js_access" "js_content" "js_filter" "js_include" "js_include" "js_preread" "js_set"
81 "js_set" "keepalive" "keepalive_disable" "keepalive_requests" "keepalive_timeout" "keyval"
82 "keyval" "keyval_zone" "keyval_zone" "large_client_header_buffers" "least_conn"
83 "least_conn" "least_time" "least_time" "limit_conn" "limit_conn" "limit_conn_log_level"
84 "limit_conn_log_level" "limit_conn_status" "limit_conn_zone" "limit_conn_zone"
85 "limit_except" "limit_rate" "limit_rate_after" "limit_req" "limit_req_log_level"
86 "limit_req_status" "limit_req_zone" "limit_zone" "lingering_close" "lingering_time"
87 "lingering_timeout" "listen" "listen" "listen" "load_module" "location" "lock_file"
88 "log_format" "log_format" "log_not_found" "log_subrequest" "mail" "map" "map"
89 "map_hash_bucket_size" "map_hash_bucket_size" "map_hash_max_size" "map_hash_max_size"
90 "master_process" "match" "match" "max_ranges" "memcached_bind" "memcached_buffer_size"
91 "memcached_connect_timeout" "memcached_force_ranges" "memcached_gzip_flag"
92 "memcached_next_upstream" "memcached_next_upstream_timeout"
93 "memcached_next_upstream_tries" "memcached_pass" "memcached_read_timeout"
94 "memcached_send_timeout" "merge_slashes" "min_delete_depth" "mirror" "mirror_request_body"
95 "modern_browser" "modern_browser_value" "mp4" "mp4_buffer_size" "mp4_limit_rate"
96 "mp4_limit_rate_after" "mp4_max_buffer_size" "msie_padding" "msie_refresh" "multi_accept"
97 "ntlm" "open_file_cache" "open_file_cache_errors" "open_file_cache_min_uses"
98 "open_file_cache_valid" "open_log_file_cache" "open_log_file_cache" "output_buffers"
99 "override_charset" "pcre_jit" "perl" "perl_modules" "perl_require" "perl_set" "pid"
100 "pop3_auth" "pop3_capabilities" "port_in_redirect" "postpone_output" "preread_buffer_size"
101 "preread_timeout" "protocol" "proxy_bind" "proxy_bind" "proxy_buffer" "proxy_buffer_size"
102 "proxy_buffer_size" "proxy_buffering" "proxy_buffers" "proxy_busy_buffers_size"
103 "proxy_cache" "proxy_cache_background_update" "proxy_cache_bypass"
104 "proxy_cache_convert_head" "proxy_cache_key" "proxy_cache_lock" "proxy_cache_lock_age"
105 "proxy_cache_lock_timeout" "proxy_cache_max_range_offset" "proxy_cache_methods"
106 "proxy_cache_min_uses" "proxy_cache_path" "proxy_cache_purge" "proxy_cache_revalidate"
107 "proxy_cache_use_stale" "proxy_cache_valid" "proxy_connect_timeout"
108 "proxy_connect_timeout" "proxy_cookie_domain" "proxy_cookie_path" "proxy_download_rate"
109 "proxy_force_ranges" "proxy_headers_hash_bucket_size" "proxy_headers_hash_max_size"
110 "proxy_hide_header" "proxy_http_version" "proxy_ignore_client_abort"
111 "proxy_ignore_headers" "proxy_intercept_errors" "proxy_limit_rate"
112 "proxy_max_temp_file_size" "proxy_method" "proxy_next_upstream" "proxy_next_upstream"
113 "proxy_next_upstream_timeout" "proxy_next_upstream_timeout" "proxy_next_upstream_tries"
114 "proxy_next_upstream_tries" "proxy_no_cache" "proxy_pass" "proxy_pass"
115 "proxy_pass_error_message" "proxy_pass_header" "proxy_pass_request_body"
116 "proxy_pass_request_headers" "proxy_protocol" "proxy_protocol_timeout"
117 "proxy_read_timeout" "proxy_redirect" "proxy_request_buffering" "proxy_responses"
118 "proxy_send_lowat" "proxy_send_timeout" "proxy_set_body" "proxy_set_header" "proxy_ssl"
119 "proxy_ssl_certificate" "proxy_ssl_certificate" "proxy_ssl_certificate_key"
120 "proxy_ssl_certificate_key" "proxy_ssl_ciphers" "proxy_ssl_ciphers" "proxy_ssl_crl"
121 "proxy_ssl_crl" "proxy_ssl_name" "proxy_ssl_name" "proxy_ssl_password_file"
122 "proxy_ssl_password_file" "proxy_ssl_protocols" "proxy_ssl_protocols"
123 "proxy_ssl_server_name" "proxy_ssl_server_name" "proxy_ssl_session_reuse"
124 "proxy_ssl_session_reuse" "proxy_ssl_trusted_certificate" "proxy_ssl_trusted_certificate"
125 "proxy_ssl_verify" "proxy_ssl_verify" "proxy_ssl_verify_depth" "proxy_ssl_verify_depth"
126 "proxy_store" "proxy_store_access" "proxy_temp_file_write_size" "proxy_temp_path"
127 "proxy_timeout" "proxy_timeout" "proxy_upload_rate" "queue" "random_index" "read_ahead"
128 "real_ip_header" "real_ip_recursive" "recursive_error_pages" "referer_hash_bucket_size"
129 "referer_hash_max_size" "request_pool_size" "reset_timedout_connection" "resolver"
130 "resolver" "resolver" "resolver_timeout" "resolver_timeout" "resolver_timeout" "return"
131 "return" "rewrite" "rewrite_log" "root" "satisfy" "scgi_bind" "scgi_buffer_size"
132 "scgi_buffering" "scgi_buffers" "scgi_busy_buffers_size" "scgi_cache"
133 "scgi_cache_background_update" "scgi_cache_bypass" "scgi_cache_key" "scgi_cache_lock"
134 "scgi_cache_lock_age" "scgi_cache_lock_timeout" "scgi_cache_max_range_offset"
135 "scgi_cache_methods" "scgi_cache_min_uses" "scgi_cache_path" "scgi_cache_purge"
136 "scgi_cache_revalidate" "scgi_cache_use_stale" "scgi_cache_valid" "scgi_connect_timeout"
137 "scgi_force_ranges" "scgi_hide_header" "scgi_ignore_client_abort" "scgi_ignore_headers"
138 "scgi_intercept_errors" "scgi_limit_rate" "scgi_max_temp_file_size" "scgi_next_upstream"
139 "scgi_next_upstream_timeout" "scgi_next_upstream_tries" "scgi_no_cache" "scgi_param"
140 "scgi_pass" "scgi_pass_header" "scgi_pass_request_body" "scgi_pass_request_headers"
141 "scgi_read_timeout" "scgi_request_buffering" "scgi_send_timeout" "scgi_store"
142 "scgi_store_access" "scgi_temp_file_write_size" "scgi_temp_path" "secure_link"
143 "secure_link_md5" "secure_link_secret" "send_lowat" "send_timeout" "sendfile"
144 "sendfile_max_chunk" "server" "server" "server" "server" "server" "server_name"
145 "server_name" "server_name_in_redirect" "server_names_hash_bucket_size"
146 "server_names_hash_max_size" "server_tokens" "session_log" "session_log_format"
147 "session_log_zone" "set" "set_real_ip_from" "set_real_ip_from" "slice" "smtp_auth"
148 "smtp_capabilities" "smtp_client_buffer" "smtp_greeting_delay" "source_charset"
149 "spdy_chunk_size" "spdy_headers_comp" "split_clients" "split_clients" "ssi"
150 "ssi_last_modified" "ssi_min_file_chunk" "ssi_silent_errors" "ssi_types"
151 "ssi_value_length" "ssl" "ssl" "ssl_buffer_size" "ssl_certificate" "ssl_certificate"
152 "ssl_certificate" "ssl_certificate_key" "ssl_certificate_key" "ssl_certificate_key"
153 "ssl_ciphers" "ssl_ciphers" "ssl_ciphers" "ssl_client_certificate"
154 "ssl_client_certificate" "ssl_client_certificate" "ssl_crl" "ssl_crl" "ssl_crl"
155 "ssl_dhparam" "ssl_dhparam" "ssl_dhparam" "ssl_ecdh_curve" "ssl_ecdh_curve"
156 "ssl_ecdh_curve" "ssl_engine" "ssl_handshake_timeout" "ssl_password_file"
157 "ssl_password_file" "ssl_password_file" "ssl_prefer_server_ciphers"
158 "ssl_prefer_server_ciphers" "ssl_prefer_server_ciphers" "ssl_preread" "ssl_protocols"
159 "ssl_protocols" "ssl_protocols" "ssl_session_cache" "ssl_session_cache"
160 "ssl_session_cache" "ssl_session_ticket_key" "ssl_session_ticket_key"
161 "ssl_session_ticket_key" "ssl_session_tickets" "ssl_session_tickets" "ssl_session_tickets"
162 "ssl_session_timeout" "ssl_session_timeout" "ssl_session_timeout" "ssl_stapling"
163 "ssl_stapling_file" "ssl_stapling_responder" "ssl_stapling_verify"
164 "ssl_trusted_certificate" "ssl_trusted_certificate" "ssl_trusted_certificate"
165 "ssl_verify_client" "ssl_verify_client" "ssl_verify_client" "ssl_verify_depth"
166 "ssl_verify_depth" "ssl_verify_depth" "starttls" "state" "state" "status" "status_format"
167 "status_zone" "sticky" "sticky_cookie_insert" "stream" "stub_status" "sub_filter"
168 "sub_filter_last_modified" "sub_filter_once" "sub_filter_types"
169 "subrequest_output_buffer_size" "tcp_nodelay" "tcp_nodelay" "tcp_nopush" "thread_pool"
170 "timeout" "timer_resolution" "try_files" "types" "types_hash_bucket_size"
171 "types_hash_max_size" "underscores_in_headers" "uninitialized_variable_warn" "upstream"
172 "upstream" "upstream_conf" "use" "user" "userid" "userid_domain" "userid_expires"
173 "userid_mark" "userid_name" "userid_p3p" "userid_path" "userid_service" "uwsgi_bind"
174 "uwsgi_buffer_size" "uwsgi_buffering" "uwsgi_buffers" "uwsgi_busy_buffers_size"
175 "uwsgi_cache" "uwsgi_cache_background_update" "uwsgi_cache_bypass" "uwsgi_cache_key"
176 "uwsgi_cache_lock" "uwsgi_cache_lock_age" "uwsgi_cache_lock_timeout"
177 "uwsgi_cache_max_range_offset" "uwsgi_cache_methods" "uwsgi_cache_min_uses"
178 "uwsgi_cache_path" "uwsgi_cache_purge" "uwsgi_cache_revalidate" "uwsgi_cache_use_stale"
179 "uwsgi_cache_valid" "uwsgi_connect_timeout" "uwsgi_force_ranges" "uwsgi_hide_header"
180 "uwsgi_ignore_client_abort" "uwsgi_ignore_headers" "uwsgi_intercept_errors"
181 "uwsgi_limit_rate" "uwsgi_max_temp_file_size" "uwsgi_modifier1" "uwsgi_modifier2"
182 "uwsgi_next_upstream" "uwsgi_next_upstream_timeout" "uwsgi_next_upstream_tries"
183 "uwsgi_no_cache" "uwsgi_param" "uwsgi_pass" "uwsgi_pass_header" "uwsgi_pass_request_body"
184 "uwsgi_pass_request_headers" "uwsgi_read_timeout" "uwsgi_request_buffering"
185 "uwsgi_send_timeout" "uwsgi_ssl_certificate" "uwsgi_ssl_certificate_key"
186 "uwsgi_ssl_ciphers" "uwsgi_ssl_crl" "uwsgi_ssl_name" "uwsgi_ssl_password_file"
187 "uwsgi_ssl_protocols" "uwsgi_ssl_server_name" "uwsgi_ssl_session_reuse"
188 "uwsgi_ssl_trusted_certificate" "uwsgi_ssl_verify" "uwsgi_ssl_verify_depth" "uwsgi_store"
189 "uwsgi_store_access" "uwsgi_temp_file_write_size" "uwsgi_temp_path" "valid_referers"
190 "variables_hash_bucket_size" "variables_hash_bucket_size" "variables_hash_max_size"
191 "variables_hash_max_size" "worker_aio_requests" "worker_connections" "worker_cpu_affinity"
192 "worker_priority" "worker_processes" "worker_rlimit_core" "worker_rlimit_nofile"
193 "worker_shutdown_timeout" "working_directory" "xclient" "xml_entities"
194 "xslt_last_modified" "xslt_param" "xslt_string_param" "xslt_stylesheet" "xslt_types"
195 "zone" "zone" "zone_sync" "zone_sync_buffers" "zone_sync_connect_retry_interval"
196 "zone_sync_connect_timeout" "zone_sync_interval" "zone_sync_recv_buffer_size"
197 "zone_sync_server" "zone_sync_ssl" "zone_sync_ssl_certificate"
198 "zone_sync_ssl_certificate_key" "zone_sync_ssl_ciphers" "zone_sync_ssl_crl"
199 "zone_sync_ssl_password_file" "zone_sync_ssl_protocols"
200 "zone_sync_ssl_trusted_certificate" "zone_sync_ssl_verify" "zone_sync_ssl_verify_depth"
201 "zone_sync_timeout"))
203 ;;;###autoload
204 (defun company-nginx (command &optional arg &rest ignored)
205 "Nginx directive backend for the company mode."
207 (interactive (list 'interactive))
208 (cl-case command
209 (interactive (company-begin-backend 'company-nginx))
210 (prefix (and (eq major-mode 'nginx-mode)
211 (company-grab-symbol)))
212 (candidates
213 (cl-remove-if-not
214 (lambda (c) (string-prefix-p arg c)) company-nginx-keywords))))
216 (provide 'company-nginx)
218 ;;; company-nginx.el ends here