# -*- shell-script -*- # list.sh - Some listing commands # # Copyright (C) 2002-2006, 2008-2011, 2016 # # This program 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 2, or # (at your option) any later version. # # This program 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 this program; see the file COPYING. If not, write to # the Free Software Foundation, 59 Temple Place, Suite 330, Boston, # MA 02111 USA. _Dbg_help_add list \ '**list**[**>**] [*location*|**.**|**-**] [*count*] List source code. Without arguments, print lines centered around the current line. If *location* is given, that number of lines is shown. *location* can be a read-in function name or a filename and line number separated by a colon, e.g /etc/profile:5 If *count* is omitted, use the value in the **set listize** setting as a count. Use **set listsize** to change this setting. If *count* is given and is less than the starting line, then it is treated as a count. Otherwise it is treated as an ending line number. more generally when the alias ends in ">", rather than center lines around *location* that will be used as the starting point. Examples: --------- list # List from current program position or where we last left off list 5 # List starting from line 5 list 5 2 # List two lines starting from line 5 list . # List lines centered from where we currently are stopped list - # List lines previous to those just shown See also: --------- **set listsize** or **show listsize** to see or set the value; **set autolist**. ' # l [start|.] [cnt] List cnt lines from line start. # l sub List source code fn proc _Dbg_do_list { typeset -i center_line if [[ ${_Dbg_orig_cmd:${#_Dbg_orig_cmd}-1:1} == '>' ]] { setglobal center_line = '0' } else { setglobal center_line = '1' } typeset first_arg if sh-expr ' $# > 0 )' { setglobal first_arg = $1 shift } else { setglobal first_arg = $_Dbg_listline } if [[ $first_arg == '.' ]] || [[ $first_arg == '-' ]] { _Dbg_list $center_line $_Dbg_frame_last_filename $first_arg "$ifsjoin(Argv)" setglobal _Dbg_last_cmd = $_Dbg_cmd return 0 } typeset filename typeset -i line_number typeset full_filename _Dbg_linespec_setup $first_arg if [[ -n $full_filename ]] { sh-expr ' line_number == 0 )'&& setglobal line_number = '1' _Dbg_check_line $line_number $full_filename sh-expr ' $? == 0 )'&& \ _Dbg_list $center_line $full_filename $line_number $ifsjoin(Argv) setglobal _Dbg_last_cmd = $_Dbg_cmd return 0 } else { _Dbg_file_not_read_in $filename return 3 } } _Dbg_alias_add l list _Dbg_alias_add "l>" list _Dbg_alias_add "list>" list