यह एक बहुत पुरानी पोस्ट है, खिड़कियां स्थापित करने में अतिरिक्त काम करने के लिए कर सकते हैं, फिर भी पालन समाधान किसी की मदद कर सकते हैं।
अनुवर्ती कोड अपने व्यवहार को बदलने, जीडीबी इंटरफ़ेस की शुरुआत और बाहर निकलने पर कब्जा करता है।
gdb शुरुआत (defadvice gdb), यह पहली, वर्तमान लेआउट को बचाने तो gdb चलाने के लिए और अंत में एक नया कस्टम लेआउट तैयार पर (यह अपनी प्राथमिकताएँ के लिए इसे संपादित करने के लिए आसान)
gdb बाहर निकलें (defadvice gdb -reset), यह पहले मूल निकास फ़ंक्शन निष्पादित करता है और फिर सहेजे गए लेआउट को फिर से लोड करता है।
परिणाम gdb-कई-खिड़कियों की एक ही विंडो में शामिल है, वर्तमान चल रहा है धागा छवि
(setq gdb-many-windows nil)
(defun set-gdb-layout(&optional c-buffer)
(if (not c-buffer)
(setq c-buffer (window-buffer (selected-window)))) ;; save current buffer
;; from http://stackoverflow.com/q/39762833/846686
(set-window-dedicated-p (selected-window) nil) ;; unset dedicate state if needed
(switch-to-buffer gud-comint-buffer)
(delete-other-windows) ;; clean all
(let* (
(w-source (selected-window)) ;; left top
(w-gdb (split-window w-source nil 'right)) ;; right bottom
(w-locals (split-window w-gdb nil 'above)) ;; right middle bottom
(w-stack (split-window w-locals nil 'above)) ;; right middle top
(w-breakpoints (split-window w-stack nil 'above)) ;; right top
(w-io (split-window w-source (floor(* 0.9 (window-body-height)))
'below)) ;; left bottom
)
(set-window-buffer w-io (gdb-get-buffer-create 'gdb-inferior-io))
(set-window-dedicated-p w-io t)
(set-window-buffer w-breakpoints (gdb-get-buffer-create 'gdb-breakpoints-buffer))
(set-window-dedicated-p w-breakpoints t)
(set-window-buffer w-locals (gdb-get-buffer-create 'gdb-locals-buffer))
(set-window-dedicated-p w-locals t)
(set-window-buffer w-stack (gdb-get-buffer-create 'gdb-stack-buffer))
(set-window-dedicated-p w-stack t)
(set-window-buffer w-gdb gud-comint-buffer)
(select-window w-source)
(set-window-buffer w-source c-buffer)
))
(defadvice gdb (around args activate)
"Change the way to gdb works."
(setq global-config-editing (current-window-configuration)) ;; to restore: (set-window-configuration c-editing)
(let (
(c-buffer (window-buffer (selected-window))) ;; save current buffer
)
ad-do-it
(set-gdb-layout c-buffer))
)
(defadvice gdb-reset (around args activate)
"Change the way to gdb exit."
ad-do-it
(set-window-configuration global-config-editing))
नाइस के ऊपरी-दाएं में कर रहे हैं! हालांकि मुझे भागों के बारे में थोड़ी अधिक जानकारी चाहिए (मैं Emacs-internals में पूरी तरह से धाराप्रवाह नहीं हूं ...)। "चारों ओर" भाग क्या है? "विज्ञापन करते हैं-यह"? – thoni56
तो, "आस-पास" फ़ंक्शन के आसपास इस सलाह को लपेटता है "सेटअप-अधिक-जीडीबी-विंडोज़" (जो शायद सामान्य मामले में खोजने के लिए कठिन चीज होगी) और यह तुरंत इस सलाह को सक्रिय करता है। – thoni56
और "ad-do-it" मूल फ़ंक्शन के लिए प्लेसहोल्डर है, जो प्लेसहोल्डर मौजूद है, जहां भी चलाया जाएगा। – thoni56