zsh-workers
 help / color / mirror / code / Atom feed
ab8e42df96a8c5459047a02cf2cf530570af8048 blob 1741 bytes (raw)

 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
 
#compdef -zcalc-line-

# This handles completion of a zcalc command line read via vared.

_zcalc_line_escapes() {
  local -a cmds
  cmds=(
    "!:shell escape"
    "q:quit"
    "norm:normal output format"
    "sci:scientific output format"
    "fix:fixed point output format"
    "eng:engineering (power of 1000) output format"
    "raw:raw output format"
    "local:make variables local"
    "function:define math function (also \:func or \:f)"
  )
  cmds=("\:"${^cmds})
  _describe -t command-escapes "command escape" cmds -Q
}

_zcalc_line() {
  local expl

  if [[ CURRENT -eq 1 && $words[1] != ":"(\\|)"!"* ]]; then
    local -a alts
    if [[ $words[1] = (|:*) ]]; then
      alts=("command-escapes:command escape:_zcalc_line_escapes")
    fi
    if [[ $words[1] = (|[^:]*) ]]; then
      alts+=("math:math formula:_math")
    fi
    _alternative $alts
    return
  fi

  case $words[1] in
    (":"(\\|)"!"*)
    if [[ $words[1] = ":"(\\|)"!" && CURRENT -gt 1 ]]; then
      shift words
      (( CURRENT-- ))
    else
      words[1]=${words[1]##:(\\|)\!}
      compset -P ':(\\|)!'
    fi
    _normal
    ;;

    (:function)
    # completing already defined user math functions is in fact exactly
    # the wrong thing to do since currently zmathfuncdef won't overwrite,
    # but it may jog the user's memory...
    if (( CURRENT == 2 )); then
      _wanted math-functions expl 'math function' \
	compadd -- ${${(k)functions:#^zsh_math_func_*}##zsh_math_func_}
    else
      _math
    fi
    ;;

    (:local)
    _parameter
    ;;

    (:(fix|sci|eng))
    if (( CURRENT == 2 )); then
      _message "precision"
    fi
    ;&

    (:*)
    _message "no more arguments"
    ;;

    ([^:]*)
    _math
    ;;
  esac
}

_zcalc_line "$@"
debug log:

solving ab8e42df9 ...
found ab8e42df9 in https://git.vuxu.org/mirror/zsh/

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).