aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--ide/coqide.ml16
-rw-r--r--ide/preferences.ml26
2 files changed, 20 insertions, 22 deletions
diff --git a/ide/coqide.ml b/ide/coqide.ml
index 8b164d234..59b4e3f5e 100644
--- a/ide/coqide.ml
+++ b/ide/coqide.ml
@@ -916,20 +916,12 @@ let template_item (text, offset, len, key) =
in
item name ~label ~callback:(cb_on_current_term callback) ~accel:(modifier^key)
-(** Create menu items for pairs (query, shortcut key).
- If the shortcut key is not in the range 'a'-'z','A'-'Z', it will be ignored. *)
-
+(** Create menu items for pairs (query, shortcut key). *)
let user_queries_items menu_name item_name l =
- let valid_key k = Int.equal (CString.length k) 1 && Util.is_letter k.[0] in
let mk_item (query, key) =
- let query' =
- let last = CString.length query - 1 in
- if query.[last] = '.'
- then query
- else query ^ "."
- in
- let callback = Query.simplequery query' in
- let accel = if valid_key key then Some (modifier_for_queries#get^key) else None in
+ let callback = Query.simplequery (query ^ ".") in
+ let accel = if not (CString.is_empty key) then
+ Some (modifier_for_queries#get^key) else None in
item (item_name^" "^(no_under query)) ~label:query ?accel ~callback menu_name
in
List.iter mk_item l
diff --git a/ide/preferences.ml b/ide/preferences.ml
index f2945a5e0..80e3028fc 100644
--- a/ide/preferences.ml
+++ b/ide/preferences.ml
@@ -929,23 +929,29 @@ let configure ?(apply=(fun () -> ())) () =
let misc = [contextual_menus_on_goal;stop_before;reset_on_tab_switch;
vertical_tabs;opposite_tabs] in
- let edit_user_query (q, k) =
- let input_string l s v =
- match GToolbox.input_string ~title:l ~text:s v with
- | None -> s
+ let add_user_query () =
+ let input_string l v =
+ match GToolbox.input_string ~title:l v with
+ | None -> ""
| Some s -> s
in
- let q = input_string "User query" q "Your query" in
- let k = input_string "Shortcut key" k "Shortcut (a single letter)" in
- q, k
+ let q = input_string "User query" "Your query" in
+ let k = input_string "Shortcut key" "Shortcut (a single letter)" in
+ let last = CString.length q - 1 in
+ let q = if q.[last] = '.' then CString.sub q 0 last else q in
+ (* Anything that is not a simple letter will be ignored. *)
+ let k =
+ if Int.equal (CString.length k) 1 && Util.is_letter k.[0] then k
+ else "" in
+ let k = CString.uppercase k in
+ [q, k]
in
let user_queries =
list
~f:user_queries#set
- ~eq:(fun (q1, _) (q2, _) -> q1 = q2)
- ~edit:edit_user_query
- ~add:(fun () -> ["<user query>", "<shortcut key>"])
+ ~eq:(fun (_, k1) (_, k2) -> k1 = k2) (* Disallow same key. *)
+ ~add:add_user_query
~titles:["User query"; "Shortcut key"]
"User queries"
(fun (q, s) -> [q; s])