| # Editor |
| # Copyright (C) 2001 Red Hat, Inc. |
| # |
| # This program is free software; you can redistribute it and/or modify it |
| # under the terms of the GNU General Public License (GPL) as published by |
| # the Free Software Foundation; either version 2 of the License, 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. |
| |
| # ---------------------------------------------------------------------- |
| # Implements a set of editor commands |
| # ---------------------------------------------------------------------- |
| |
| namespace eval Editor { |
| namespace export edit |
| |
| proc edit {loc_info} { |
| global external_editor_command |
| |
| if {[info exists external_editor_command]} { |
| if {[catch {uplevel \#0 "$external_editor_command edit $loc_info"} \ |
| err]} { |
| tk_dialog .warn-sn "Edit" $err error 0 Ok |
| } |
| return |
| } |
| |
| lassign $loc_info baseName fnName fileName lineNum addr pc |
| |
| set newCmd [pref get gdb/editor] |
| if {! [string compare $newCmd ""]} { |
| tk_dialog .warn "Edit" "No editor command specified" error 0 Ok |
| } |
| |
| # Replace %s with file name and %d with line number. |
| regsub -all -- %s $newCmd $fileName newCmd |
| regsub -all -- %d $newCmd $lineNum newCmd |
| |
| if {[catch "exec $newCmd &" err]} { |
| tk_dialog .warn "Edit" $err error 0 Ok |
| } |
| } |
| } |