2015-08-14 22 views
26

Tôi đang sử dụng Emacs làm trình soạn thảo Haskell chính của mình, và như vậy, tất nhiên tôi sử dụng haskell-mode làm chế độ chính để chỉnh sửa mã Haskell.Thụt lề Haskell không xếp hàng đối số chức năng

Bây giờ vì lý do gì, haskell-indentation không cung cấp điểm thụt lề cho đối số chức năng.

Những gì tôi có nghĩa là Emacs liên tục sẽ làm điều này: ( là điểm khác indent (s))

myFunction = maybe arg1 
□   arg2 
□   arg3 

Thay vì làm điều này:

myFunction = maybe arg1 
□   □  arg2 
□   □  arg3 

Đôi khi tôi cần phải phá vỡ chức năng lên nhiều dòng do các dòng nhận được quá dài, nhưng không có haskell-mode cung cấp mức thụt lề phải là bugging cho tôi một số.

Mọi thứ tôi có thể làm để giảm bớt điều này?

Sửa

Thấy như tôi không phải là người duy nhất với vấn đề này, tôi đã mở một vé trên trang haskell-mode github [here]

+0

Không phải ở tất cả các giải pháp, nhưng nếu bạn đang di chuyển 'arg2' và' arg3' để tách các dòng bạn có thể cũng như vậy với 'arg1'. – duplode

+0

@duplode vâng nhưng sau đó chúng vẫn được xếp hàng dưới 'có lẽ' thay vì bị thụt lề thêm ... Và nhìn như haskell là ngôn ngữ dựa trên thụt đầu dòng, điều này có thể trong lý thuyết gây ra một số hiểu sai –

+0

Tôi hiểu. FWIW, mục 1.1 của [trang HaskellWiki] này (https://wiki.haskell.org/Emacs/Indentation) gọi hành vi của chế độ haskell mà bạn mô tả "đáng ngờ là một lựa chọn tồi" vì lý do chính xác này. Cá nhân, tôi có lẽ sẽ thụt lề đoạn này là 'myFunction = có thể là <4 spaces> longArg1 <4 spaces> longArg2 <4 spaces> longArg3', và do đó, có vẻ như tôi sử dụng chế độ haskell, tôi sẽ gặp phải sự cố tương tự đối với bạn. – duplode

Trả lời

1

Vấn đề Haskell-mode Haskell-thụt đầu dòng đã được đóng năm ngoái và sẽ không được sửa.

Đối với hành vi mong muốn, hãy sử dụng haskell-indent.